The Best Way to Tune Your Parallel Statements: Real-Time ...€¦ · Real-Time SQL Monitoring •...

Preview:

Citation preview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

TheBestWaytoTuneYourParallelStatements:Real-TimeSQLMonitoring

YasinBaskanProductManager,ParallelExecuPonDataWarehouseDevelopmentSep20,2016yasin.baskan@oracle.com@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

Recommended