Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
TheBestWaytoTuneYourParallelStatements:Real-TimeSQLMonitoring
YasinBaskanProductManager,ParallelExecuPonDataWarehouseDevelopmentSep20,[email protected]@yasinbaskan
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecPon.ItisintendedforinformaPonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncPonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andPmingofanyfeaturesorfuncPonalitydescribedforOracle’sproductsremainsatthesolediscrePonofOracle.
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
• Availablenow– ExadataExpressCloudService
• Comingsoon– DatabaseCloudServices– ExadataCloudMachine
3
AnnouncingOracleDatabase12cRelease2onOracleCloud
OracleispresenPngfeaturesforOracleDatabase12cRelease2onOracleCloud.WewillannounceavailabilityoftheOn-PremreleasesomePmeaZerOpenWorld.
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Agenda
IntroducPontoReal-TimeSQLMonitoring
StepstoanalyzeaSQLMonitorreport
CommoncausesofsubopPmalperformanceinparallelstatements
1
2
3
4
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
IntroducPontoReal-TimeSQLMonitoring
5
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Real-TimeSQLMonitoring• IntroducedinOracleDatabase11gtomakeSQLtuningeasier• ShowsdetailedinformaPonabouttheexecuPonofasingleSQLstatement– BothatrunPmeandaZerthestatementends
• MakesitveryeasytoidenPfycausesofperformanceproblemsbyshowingwherePmeisbeingspentintheexecuPonplan– NoneedtoqueryV$viewsorenableanytracing
• EspeciallyusefulforparallelstatementswheretheexecuPonplanmaybemuchlonger• ForguidanceonhowtogetSQLMonitorreportssee:– hcp://www.oracle.com/technetwork/database/manageability/sqlmonitor-084401.html
6
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 7
Real-TimeSQLMonitoring
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
StepstoAnalyzeaSQLMonitorReport
8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HowtoanalyzeaSQLMonitorreport• LookatwherethePmeisbeingspent– Time&waitstaPsPcs– FindtheplanstepdoingmostoftheacPvity• “AcPvity%”column
– CheckiftheesPmatedcardinalitymatchestheactualcardinality• “EsPmatedrows”and“actualrows”columns
• GatheringappropriateopPmizerstatsfixesmostoftheproblems– Extendedstats,histograms,etc…
9
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CommonCausesofSubopPmalPerformanceinParallelStatements
10
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Top3thingstobeawareofinparallelstatements• WorkdistribuPonacrossparallelprocesses• DatadistribuPonbetweenparallelprocesses• Degreeofparallelism(DOP)
11
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WorkDistribuPonAcrossParallelProcesses
12
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WhyisworkdistribuPonimportant?• MulPpleprocessesworkingforasingleparallelSQLstatement• UnevenworkdistribuPoncausessubopPmalperformanceandlowscalability– e.g.IncreasingtheDOPdoesnotmakethequeryrunfaster
13
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WorkdistribuPonacrossprocesses• LookattheParalleltabtoseetheworkdistribuPonacrossprocesses
14
UnevenworkdistribuPon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WorkdistribuPonacrossprocesses• Lookatwhataspecificprocessisdoing• TrytounderstandwhatcausesunevenworkdistribuPon
15
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CommoncausesofunevenworkdistribuPon• SubopPmaldatadistribuPonmethodchosenbytheopPmizer• Dataskewinthejoincolumns
16
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CommonDataDistribuPonProblems
17
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Producer/consumermodelanddatadistribuPon
PX1
PX2
A-L
K-Z
ProducerConsumerDistribute
ProducerConsumerDistribute
QueryCoordinator
SCANJOIN
SELECT*FROMCUSTOMERSORDERBYcust_last_name;
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CommondistribuPonmethods• HASH– AppliesahashfuncPononthejoinkeysandsendstherowtoasingleconsumer
• BROADCAST– Sendsallrowstoeveryconsumer– Suitableforsmallerdatasets
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HashdistribuPon
PX2
PX1cust_id
3000
1000
2000
4000
c.cust_id
1000
4000
c.cust_id
3000
2000
cust_id
3000
1000
cust_id
2000
4000
PX3
PX4
PX1andPX2scantheleZsidetable
PX1andPX2applyahashfuncPononthekeycolumnsanddistributetherowsbasedontheresulttoPX3andPX4
TableC
selectcount(*)fromc,swherec.cust_id=s.cust_id;
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HashdistribuPon
PX2
PX1cust_id
4000
1000
2000
3000
c.cust_id s.cust_id
1000 1000
4000 4000
c.cust_id s.cust_id
3000 3000
2000 2000
cust_id
4000
1000
cust_id
2000
3000
PX3
PX4
PX1andPX2scantherightsidetable
PX1andPX2applyahashfuncPononthekeycolumnsanddistributetherowsbasedontheresulttoPX3andPX4
TableS
selectcount(*)fromc,swherec.cust_id=s.cust_id;
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
BroadcastdistribuPon
PX2
PX1cust_id
3000
1000
2000
4000
cust_id
3000
1000
cust_id
2000
4000
PX1andPX2scantheleZsidetable c.cust_id
3000
1000
2000
4000
PX3
PX4c.cust_id
3000
1000
2000
4000
PX1andPX2broadcastallrowstoPX3andPX4
TableC
selectcount(*)fromc,swherec.cust_id=s.cust_id;
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
BroadcastdistribuPon
cust_id
3000
1000
2000
4000
PX3andPX4scantherightsidetablecust_id s.cust_id
3000 3000
1000 1000
2000
4000
PX3
PX4cust_id s.cust_id
3000
1000
2000 2000
4000 4000
TableS
selectcount(*)fromc,swherec.cust_id=s.cust_id;
NodistribuPonfortherightside
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CommondistribuPonproblems• OpPmizermaypickasubopPmaldistribuPonmethodbecauseofstale/missingstats– HashdistribuPonwithlowcardinality• Causessomeprocessesdomorework
– BroadcastdistribuPonwithhighcardinality• CauseshighnumberofrowstobesentacrossRACnodesandprocesses• MaycausehighPGAandtemporarytablespaceusage
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HashdistribuPonwithlowcardinalityWorkdistribu2on
UnevenworkdistribuPon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HashdistribuPonwithlowcardinalityWaitac2vityfordistribu2on
EsPmatedrowsvs.ActualRows HighwaitPmefordistribuPonHashdistribuPonasaresultofwrongcardinalityesPmates
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HashdistribuPonwithlowcardinality• OpPmizermaypickhashdistribuPonforsmalltablesbecauseofstalestats• Causessomeprocessestodomoreworkthanothersdegradingscalability• MakesureopPmizerstatsareup-to-datetogettheopPmaldistribuPonmethod• OracleDatabase12cprovidesadapPvedistribuPonmethodstopicktheopPmaldistribuPonmethodatrunPme
27
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HashdistribuPonwithlowcardinalityA9ergatheringop2mizerstatsinOracleDatabase11g
BroadcastdistribuPon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
HashdistribuPonwithlowcardinality
29
Adap2vedistribu2onwithstalestatsinOracleDatabase12c
AdapPvedistribuPon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
AdapPvedistribuPoninOracleDatabase12c
• DistribuPonmethoddecisionbasedonactualnumberofrowsratherthanopPmizerstats
• NewadapPvedistribuPonmethodhybridhash– StaPsPccollectorsusedontheleZsideofthejointocounttheactualrowsatrunPme– IfnumberofrowsislessthantheopPmizerthresholdusebroadcast,elseusehash
Hybridhashdistribu2on
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
AdapPvedistribuPoninOracleDatabase12c
31
Howtofindtherun2medistribu2onmethod
6=>Broadcast16=>Hash
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CommondistribuPonproblems• OpPmizermaypickasubopPmaldistribuPonmethodbecauseofstale/missingstats– BroadcastdistribuPonwithhighcardinality• CauseshighnumberofrowstobesentacrossRACnodesandprocesses• Maycausehightemporarytablespaceusage
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
BroadcastdistribuPonwithhighcardinality
EsPmatedrowsvs.actualrows Hightempusage HighacPvityfortempIO
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
BroadcastdistribuPonwithhighcardinality• OpPmizerpicksbroadcastdistribuPonbecauseofstalestats• Causesalotofrowstobebroadcastedtoallconsumerprocesses• MaycausehighPGAandtempusageinhashjoinsaseachconsumerprocessbuildsahashtableforallrows• MakesureopPmizerstatsareup-to-datetogettheopPmaldistribuPonmethod
34
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
BroadcastdistribuPonwithhighcardinality
35
A9ergatheringop2mizerstats
HashdistribuPonatrunPme Notempusage
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
EffectofDataSkewonWorkDistribuPon
36
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WorkdistribuPonwithdataskew• HashdistribuPonisthemostcommondistribuPonmethodforlargetables– DoesnottakedataskewintoaccountunPlOracleDatabase12c
• Dataskewcancausesomeconsumerprocessestogetmorerows
37
PX2
PX1cust_id
3000
3000
3000
4000
c.cust_id
3000
3000
3000
c.cust_id
4000
cust_id
3000
3000
cust_id
3000
4000
PX3
PX4
TableSPX3getsmorerowsthanPX4
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WorkdistribuPonwithdataskew
38
UnevenworkdistribuPon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WorkdistribuPonwithdataskew
39
AdapPvedistribuPon(HashdistribuPonatrunPmeinthiscase)
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WorkdistribuPonwithdataskew
40
A9ergatheringhistogramsonthejoincolumn
HashskewdistribuPon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Skewhandlingforjoins
• Value-baseddistribuPonofskeweddataforhashdistribuPon– BroadcastrowscontainingpopularvaluesontheleZsideofthejoin– Randomizerowscontainingpopularvaluesontherightsideofthejoin
• Popularvaluesareobtainedusingsampling• DecisionbasedonskewinformaPonfromhistograms• Considersskewontherightsideofthejoin(largertable)
IntroducedinOracleDatabase12cRelease1
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Skewhandlingforjoins
• Histogramneededonthejoincolumn• Popularvalues– Valuesthatareatleast10xtheaveragefrequency– Valuesthathavemorethan30%frequency
• Ifnumberofskewedvalues>DOP,noskewhandling
IntroducedinOracleDatabase12cRelease1
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DegreeofParallelismandDowngrades
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
• Checkifyouarege}ngtheDOPyourequested– Ifnot,findoutwhy
• DOPisthefactorimpacPngperformanceforwelltunedSQLstatements– TunetheSQLbeforeplayingwiththeDOP
Degreeofparallelism(DOP)
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DOPdowngrades• OthercolumnforPXcoordinatorshowsthedowngradereason
45
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DOPdowngradereasonsselectqksxareasons,indx
fromx$qksxa_reason
whereqksxareasonslike'%DOPdowngrade%’;
QKSXAREASONSINDX
----------------------------------------------------------------------
DOPdowngradeduetoadaptiveDOP351
DOPdowngradeduetoresourcemanagermaxDOP352
DOPdowngradeduetoinsufficientnumberofprocesses353
DOPdowngradebecauseslavesfailedtojoin354
46
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DOPdowngradereasons
• AdapPveparallelism– DowngradestheDOPbasedonsystemload
• Enabledbyinit.oraparameterPARALLEL_ADAPTIVE_MULTI_USER• DisableadapPveparallelismbyse}ngtheparametertoFALSE.– DisabledanddeprecatedinOracleDatabase12cRelease2
• UseParallelStatementQueuingtopreventsystemsaturaPon
47
DOPdowngradeduetoadap2veDOP
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DOPdowngradereasons• DOPdowngradeduetoresourcemanagermaxDOP– DatabaseResourceManager(DBRM)plancappedtheDOP• PlandirecPvePARALLEL_DEGREE_LIMIT_P1• IfyouneedhigherDOPsincreasethelimitifthereisampleunusedprocessingbandwidth• OrdecreaseconcurrencyandallowhigherDOPs
• DOPdowngradeduetoinsufficientnumberofprocesses– #ofin-usePXserversreachedPARALLEL_MAX_SERVERS• IncreasePARALLEL_MAX_SERVERSifthereisampleunusedprocessingbandwidth• UseParallelStatementQueuingtolimitthenumberofin-useprocesses
48
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DOPdowngradereasons• DOPdowngradebecauseslavesfailedtojoin– SomeprocessescouldnotjointheexecuPonofthestatement– UsuallyaresultofplanmismatchbetweenPXserversondifferentinstances– RaiseanSR
49
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Summary
50
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
LeverageSQLMonitorforSQLtuning• EasilyidenPfycausesofsubopPmalperformance– CheckwherethePmeisbeingspent– MakesureesPmatedcardinalitymatchesactualcardinality– GatherappropriateopPmizerstatstofixcardinalitymismatch
• Forparallelstatements– CheckifworkanddatadistribuPonisevenforopPmalperformanceandscalability– FixunintendedDOPdowngradesdegradingperformance
51
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ForfurtherinformaPon• MonitoringParallelExecuPonusingReal-TimeSQLMonitoringinOracleDatabase12c– hcps://blogs.oracle.com/datawarehousing/entry/monitoring_parallel_execuPon_using_real
• CommonDistribuPonMethodsinParallelExecuPon– hcps://blogs.oracle.com/datawarehousing/entry/common_distribuPon_methods_in_parallel
• AdapPveDistribuPonMethodsinOracleDatabase12c– hcps://blogs.oracle.com/datawarehousing/entry/adapPve_distribuPon_methods
• FindingtheDistribuPonMethodinAdapPveParallelJoins– hcps://blogs.oracle.com/datawarehousing/entry/finding_the_distribuPon_method_in
• FindingtheReasonforDOPDowngrades– hcps://blogs.oracle.com/datawarehousing/entry/finding_the_reason_for_dop
52
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
SafeHarborStatementTheprecedingisintendedtooutlineourgeneralproductdirecPon.ItisintendedforinformaPonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncPonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andPmingofanyfeaturesorfuncPonalitydescribedforOracle’sproductsremainsatthesolediscrePonofOracle.
53
54