top 10 sql performance tips & tricks for java …...title top 10 sql performance tips &...
TRANSCRIPT
![Page 1: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/1.jpg)
Copyright©2018, Oracleand/oritsaffiliates.Allrightsreserved.|
Top10SQLPerformancetips&tricksforDevelopers
GeraldVenzlMasterProductManager
ServerTechnologiesOracleDevelopment
@GeraldVenzl
geraldonit.com
![Page 2: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/2.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Gerald’s SafeHarborStatementNothingsaidhereisaguaranteeforsolvingyourparticularproblem.Whilethetechniquespresentedherecanhaveahugepositiveimpactonperformanceitisnotguaranteedthattheywillfixyourparticularproblem.
Performanceisrelative. Itdependsonahugeamountofdifferentfactorsandcan’tbecompared1:1.Thenumbersinthisdeckreflectatiny2GBDockerenvironmentwithonlyonevirtualCPU,keepthatinmind.
2
![Page 3: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/3.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Whatisperformance?
3
![Page 4: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/4.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Whatisperformance
Performance=?
Asimpleformula
4
![Page 5: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/5.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Whatisperformance
Performance=latencyxthroughput
Asimpleformula
5
![Page 6: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/6.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Whatisperformance
• Latency:Thetimetoprocessaunitofwork• Throughput:Theamountofunitsofworkthatcanbeprocessedinparallel• Aunitofworkiseitherprocessed(CPU) orhastowait(I/O)• Goalsare:– Processaunitofworkasefficientlyaspossible– Reducewaittimeasmuchaspossible
– Avoidunnecessaryresourceconsumption(CPU&I/O)
6
![Page 7: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/7.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Whatisperformance
Performance=latencyxthroughput
10,000workunits/s=?
Asimpleformula
7
![Page 8: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/8.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Whatisperformance
Performance=latencyxthroughput
10,000workunits/s=1msx10wu
Asimpleformula
8
![Page 9: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/9.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Whatisperformance
Performance=latencyxthroughput
10,000workunits/s=10msx100wu
Asimpleformula
9
![Page 10: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/10.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
DatabaseWorkingStates
10
![Page 11: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/11.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Thedatabaseasa
11
![Page 12: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/12.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Thedatabaseasablackbox
12
![Page 13: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/13.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Adatabaseiseither
13
![Page 14: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/14.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Adatabaseiseitherworking
14
![Page 15: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/15.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Adatabaseiseitherworkingoridle
15
![Page 16: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/16.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
16
![Page 17: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/17.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
17
Busy
![Page 18: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/18.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
18
![Page 19: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/19.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
19
![Page 20: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/20.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
20
Waiting
![Page 21: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/21.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
21
![Page 22: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/22.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
22
![Page 23: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/23.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Theworkingstatesofthedatabase
23
![Page 24: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/24.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
TrackingtheworkingstatesoftheOracle Database
24
![Page 25: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/25.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
TrackingtheworkingstatesoftheOracle Database
25
=Statistics
![Page 26: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/26.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
TrackingtheworkingstatesoftheOracleDatabase
26
=Statistics
=WaitClasses
![Page 27: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/27.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
OracleDatabasestatistics• 2011statisticsintotalinOracleDB18c• Query:v$sysstat,v$mystat,v$sesstat (,v$statname)• Forexample:SELECT n.name, s.valueFROM v$mystat s, v$statname nWHERE s.statistic#=n.statistic#AND value > 0ORDER BY n.name;
27
![Page 28: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/28.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
OracleDatabasewaitclasses• Administrative:WaitsresultingfromDBAcommandsthatcauseuserstowait(indexrebuild,etc.)
• Application:Waitsresultingfromuserapplicationcode(lockwaitscausedbyrowlevellockingorexplicitlockcommands)
• Cluster:WaitsrelatedtoOracleRealApplicationClustersresources(globalcacheresourcessuchas'gc cr blockbusy')
• Commit:Thiswaitclassonlycomprisesonewaitevent- waitforredologwriteconfirmationafteracommit(thatis,'logfilesync')
• Concurrency:Waitsforinternaldatabaseresources(latches,cursorpins,etc.)
• Configuration:Waitscausedbyinadequateconfigurationofdatabaseorinstanceresources(undersizedlogfiles,sharedpool,etc.)
• Idle:Waitsthatsignifythesessionisinactive,waitingforwork('SQL*Netmessagefromclient')
• Network:Waitsrelatedtonetworkmessaging('SQL*Netmoredatatodblink’)
• Other:Waitswhichshouldnottypicallyoccuronasystem(forexample,'waitforEMONtospawn')
• Queueing:Delaysinobtainingadditionaldatainapipelinedenvironment. (parallelqueries,orDBMS_PIPEPL/SQLpackages)
• Scheduler:ResourceManagerrelatedwaits('resmgr:becomeactive’,etc.)
• SystemI/O:WaitsforbackgroundprocessI/O(forexample,DBWRwaitfor'db fileparallelwrite')
• UserI/O:WaitsforuserI/O(forexample'db filesequentialread')
28
![Page 29: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/29.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
OracleDatabasewaitclasses• 1884 waiteventsintotalinOracleDB18c• Query:v$system_event,v$session_event,v$session_wait (,v$event_name)• Forexample:• SELECT sid, event, p1, p2, p3
FROM v$session_waitORDER BY sid, event;
29
![Page 30: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/30.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#1:Roundtrips
30
![Page 31: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/31.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 31
Roundtrips
![Page 32: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/32.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Roundtrips
• Avoidunnecessaryroundtripstothedatabase• Everyroundtripincludestimethatyouspendonthenetwork• Thatdoesnotmeantoavoidprocessinganythingatthedatabase
32
![Page 33: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/33.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#2:(Auto)Commit
33
![Page 34: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/34.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataHowdoestheDBmakesureyourdataisstoredondisk?
34
INSERTINTOpurchase(…)
VALUES(:1,:2,:3,…);COMMIT
BufferCache REDOlogs
![Page 35: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/35.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataWhathappensonaCOMMIT?
35
GenerateSCN
![Page 36: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/36.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataWhathappensonaCOMMIT?
36
GenerateSCN
LGWRwritestoREDOlogs
![Page 37: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/37.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataWhathappensonaCOMMIT?
37
GenerateSCN
LGWRwritestoREDOlogs
Releaselocksontables
![Page 38: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/38.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataWhathappensonaCOMMIT?
38
GenerateSCN
LGWRwritestoREDOlogs
Releaselocksontables
Removesafe-points
![Page 39: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/39.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataWhathappensonaCOMMIT?
39
GenerateSCN
LGWRwritestoREDOlogs
Releaselocksontables
Removesafe-points
Performcommitcleanout
![Page 40: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/40.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataWhathappensonaCOMMIT?
40
GenerateSCN
LGWRwritestoREDOlogs
Releaselocksontables
Removesafe-points
Performcommitcleanout
MarkTXN
complete
![Page 41: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/41.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Commits– saviorofyourdataWhathappensonaCOMMIT?
41
GenerateSCN
LGWRwritestoREDOlogs
Releaselocksontables
Removesafe-points
Performcommitcleanout
MarkTXN
complete
![Page 42: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/42.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Autocommit
• ThedrivercommitseveryDMLonyourbehalf,implicitly• Thatis,forevery singleINSERT,UPDATE,DELETE,MERGEwillbeaCOMMIT• Impliesasecondroundtrip tothedatabasesforevery DMLoperation• Forcesdatabasetowritetodisk,perhapsunnecessarily• MeansyoucanneverROLLBACKyourchanges• Itisturnedonbydefault– connection.setAutoCommit(false)
WhatistheAutocommit?
42
![Page 43: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/43.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 43
PreparedStatement stmt = conn.prepareStatement("INSERT INTO TEST (id, text, created_tms, last_upd_tms) VALUES (?,?,SYSDATE,SYSDATE)");
long start = System.currentTimeMillis();
for(int i=1;i<=rows;i++) {stmt.setInt(1, i);stmt.setString(2, "This is the row with the value of " + i);stmt.executeUpdate();conn.commit();
}
long end = System.currentTimeMillis();System.out.println("Elapsed time(ms) for commit after every row: " + (end-start));
Commits– saviorofyourdata
![Page 44: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/44.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 44
PreparedStatement stmt = conn.prepareStatement("INSERT INTO TEST (id, text, created_tms, last_upd_tms) VALUES (?,?,SYSDATE,SYSDATE)");
long start = System.currentTimeMillis();
for(int i=1;i<=rows;i++) {stmt.setInt(1, i);stmt.setString(2, "This is the row with the value of " + i);stmt.executeUpdate();
}conn.commit();
long end = System.currentTimeMillis();System.out.println("Elapsed time(ms) for commit at the end: " + (end-start));
Commits– saviorofyourdata
![Page 45: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/45.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 45
DEMO
![Page 46: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/46.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
20000
Testrun1 Testrun2 Testrun3
Milliseconds
Commiteveryrow
Commitatend
• Threetestrunsinserting10krows
• Darkblueaxisshowselapsedtimewhencommittingaftereveryrow
• Lightblueaxisshowselapsedtimewhencommittingonlyonceafteralldataisloaded
46
Commits– saviorofyourdata
![Page 47: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/47.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#3:Bulkprocessing
47
![Page 48: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/48.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Bulkprocessing• Whatwouldyouratherdoonatablewith10millionrows:
48
![Page 49: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/49.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Bulkprocessing• Whatwouldyouratherdoonatablewith10millionrows:PreparedStatement stmt = conn.prepareStatement(
"SELECT value FROM PURCHASE WHERE tms > '2016-09-01'");
ResultSet rslt = stmt.executeQuery();
while (rslt.next()) {val += rslt.getInt(1);
}
49
![Page 50: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/50.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Bulkprocessing• Whatwouldyouratherdoonatablewith10millionrows:PreparedStatement stmt = conn.prepareStatement(
"SELECT value FROM PURCHASE WHERE tms > '2016-09-01'");
ResultSet rslt = stmt.executeQuery();
while (rslt.next()) {val += rslt.getInt(1);
}
PreparedStatement stmt = conn.prepareStatement("SELECT SUM(value) FROM PURCHASE WHERE tms > '2016-09-01'");
ResultSet rslt = stmt.executeQuery();rslt.next();val = rslt.getInt(1);
50
![Page 51: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/51.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Bulkprocessing• Whatwouldyouratherdoonatablewith10millionrows:PreparedStatement stmt = conn.prepareStatement(
"SELECT value FROM PURCHASE WHERE tms > '2016-09-01'");
ResultSet rslt = stmt.executeQuery();
while (rslt.next()) {val += rslt.getInt(1);
}
PreparedStatement stmt = conn.prepareStatement("SELECT SUM(value) FROM PURCHASE WHERE tms > '2016-09-01'");
ResultSet rslt = stmt.executeQuery();rslt.next();val = rslt.getInt(1);
51
![Page 52: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/52.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 52
PreparedStatement stmt = conn.prepareStatement("INSERT INTO TEST (id, text, created_tms, last_upd_tms) VALUES (?,?,SYSDATE,SYSDATE)");
long start = System.currentTimeMillis();
for(int i=1;i<=rows;i++) {stmt.setInt(1, i);stmt.setString(2, "This is the row with the value of " + i);stmt.executeUpdate();
}conn.commit();
long end = System.currentTimeMillis();System.out.println("Elapsed time(ms) for row by row insert: " + (end-start));
Bulkprocessing
![Page 53: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/53.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 53
PreparedStatement stmt = conn.prepareStatement("INSERT INTO TEST (id, text, created_tms, last_upd_tms) VALUES (?,?,SYSDATE,SYSDATE)");
long start = System.currentTimeMillis();
for(int i=1;i<=rows;i++) {stmt.setInt(1, i);stmt.setString(2, "This is the row with the value of " + i);stmt.addBatch();
}stmt.executeBatch();conn.commit();
long end = System.currentTimeMillis();System.out.println("Elapsed time(ms) for set based insert: " + (end-start));
Bulkprocessing
![Page 54: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/54.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 54
DEMO
![Page 55: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/55.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
4229 4055 4118
76 84 720
500
1000
1500
2000
2500
3000
3500
4000
4500
Testrun1 Testrun2 Testrun3
Milliseconds
Inserteveryrow
Setbasedinsert
• Threetestrunsinserting10krows
• Darkblueaxisshowselapsedtimeofindividualinserts
• Lightblueaxisshowselapsedtimeofsetbasedinserts
55
Bulkprocessing
![Page 56: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/56.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
Bulkprocessing
• Databasesworkbestwithsetbasedprocessing• Processasmuchaspossibleonthesidewhereitmakesmostsense• Generally,asingleSQLstatementexecutionisthefastest• Avoidsunnecessaryroundtrips
56
![Page 57: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/57.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#4:Bindvariables
57
![Page 58: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/58.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 58
Bindvariables
SELECTtextFROMTEST
WHEREid=453;
SQLID:5mwwhtqv204ba
SQLID:06jc0z1kcuu6b
SELECTtextFROMTEST
WHEREid=879;
SELECTtextFROMTEST
WHEREid=?;
SELECTtextFROMTEST
WHEREid=?;
SQLID:cknumntjbx8u3
![Page 59: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/59.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 59
for(int i = 1; i <= rows; i++) {PreparedStatement stmt = conn.prepareStatement(
"SELECT text FROM TEST WHERE id = " + i);ResultSet rslt = stmt.executeQuery();rslt.next(); rslt.getString(1);rslt.close();stmt.close();
}
Bindvariables
![Page 60: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/60.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.| 60
PreparedStatement stmt = conn.prepareStatement("SELECT text FROM TEST WHERE id = ?");
for(int i = 1; i <= rows; i++) {stmt.setInt(1, i);ResultSet rslt = stmt.executeQuery();rslt.next();rslt.getString(1);rslt.close();
}stmt.close();
Bindvariables
![Page 61: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/61.jpg)
Copyright©2016, Oracleand/oritsaffiliates.Allrightsreserved.|
0
5000
10000
15000
20000
25000
30000
Testrun1 Testrun2 Testrun3
Milliseconds
Selectusing literals
Selectusingbindvar
• Threetestrunsselecting1krows
• DarkblueaxisshowselapsedtimeofSELECTusingliterals
• LightblueaxisshowselapsedtimeofSELECTusingbindvariable
61
Bindvariables
![Page 62: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/62.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Bindvariables
• SQLstatementsarestrings• ButdatamanipulatedviaSQLmaybeofadifferenttypes(Number,Date,…)• Abindvariableallowsyoutobinddatatoanexplicitdatetype–Withouthavingtoconvertthedatatypefromstring– AndwithouthavingtoparsetheSQLstatementagain
• BindvariablesalsoavoidSQLinjections,i.e.tightersecurity
Whatarebindvariables
62
![Page 63: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/63.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#5:Fetchsize
63
![Page 64: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/64.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Fetchsize
• Driverfetchesmorethanonerowfromthedatabaseatonce• Avoidsunnecessaryroundtrips• Greatifyouknowyouwillfetchmanyrows• Defaultissetto10• statement.setFetchSize(int rows);
Implicitandproactivefetching
64
![Page 65: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/65.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#6:Savepoints
65
![Page 66: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/66.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 66
INSERT INTO…UPDATE…INSERT INTO…
SAVEPOINT gerald1;
UPDATE…UPDATE…
SAVEPOINT gerald2;
DELETE FROM…
ROLLBACK TO SAVEPOINT gerald1;
INSERT INTO…COMMIT;
Savepoints
![Page 67: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/67.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Savepoints
• Savetheintermediatestate(s)ofalongrunningtransaction• Ifworkloadfailsyoudon’thavetostartfromscratch• Avoidsredoingworkthathasalreadyhappened
Safetheprogressofyourtransaction
67
![Page 68: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/68.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#7:KISSKeepitsimpleSQL
68
![Page 69: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/69.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
KISS
• ThesimplertheSQL,theeasiertomaintain• ThesimplertheSQL,thefastertooptimize• ThesimplertheSQL,thelesslikelyfortheoptimizertogetitwrong
KeepitsimpleSQL
69
![Page 70: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/70.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 70
SELECT (CASEWHEN v.code = ‘ABC’ THEN 1WHEN v.code = ‘DEF’ THEN 2WHEN v.code = ‘GHI’ THEN 3WHEN v.code = ‘YYZ’ THEN 4ELSE 5
END) AS code,v.fk_column AS fk_column,v.fk_list AS fk_list,v.grp_id AS grp_id
FROM (SELECT S1.grp_id,S1.code,MIN (S1.fk_column) AS fk_column,LTRIM (MAX (SYS_CONNECT_BY_PATH (S1.fk_column, ‘;’))
KEEP (DENSE_RANK LAST ORDER BY S1.curr),‘;’) AS fk_list
FROM (SELECT grp_id,code,fk_column,ROW_NUMBER ()
OVER (PARTITION BY grp_id, codeORDER BY fk_column) AS curr,
ROW_NUMBER ()OVER (PARTITION BY grp_id, code
ORDER BY fk_column) – 1 AS prevFROM quite_a_big_table
WHERE grp_id > 0) S1GROUP BY S1.grp_id, S1.codeCONNECT BY S1.prev = PRIOR S1.curr
AND S1.grp_id = PRIOR S1.grp_idSTART WITH curr = 1) v
ORDER BY grp_id, code
KISS
![Page 71: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/71.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 71
SELECT (CASEWHEN v.code = ‘ABC’ THEN 1WHEN v.code = ‘DEF’ THEN 2WHEN v.code = ‘GHI’ THEN 3WHEN v.code = ‘YYZ’ THEN 4ELSE 5
END) AS code,v.fk_column AS fk_column,v.fk_list AS fk_list,v.grp_id AS grp_id
FROM (SELECT grp_id,code,MIN (fk_column) AS fk_column,LISTAGG(fk_column, ‘;’)
WITHIN GROUP (ORDER BY fk_column) AS fk_listFROM quite_a_big_table
WHERE grp_id > 0GROUP BY grp_id, code) v
ORDER BY grp_id, code
KISS
![Page 72: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/72.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
KISS- Commontableexpression
• SpecifiesasubqueryasacommontableinaSELECTstatement– Atableorsubquerythatisreadmorethanoncebythesamestatement
• CachesresultsofsubqueryinmemoryonDBserver• Avoidsreadingthesametablesmorethanonce,hencereducingI/O• BetterreadabilityforyourSQL
Ahandyandfasthelperforcommonsubqueries
72
![Page 73: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/73.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 73
WITH active_users (id, http_session, last_active) AS(
SELECT id, http_session_id, last_active_tmsFROM all_active_usersWHERE …
)SELECT a.id, a.http_session, p.first_name, p.last_name, p.email_addressFROM active_users a LEFT JOIN personal_accounts p ON p.email_address = a.idLEFT JOIN business_accounts b ON b.business_id = a.id;
KISS- Commontableexpression
![Page 74: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/74.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 74
WITH cte (n) AS(
SELECT 1 FROM dualUNION ALLSELECT n + 1 FROM cte WHERE n < 5
)SELECT * FROM cte;
N----------
12345
KISS- Commontableexpression
![Page 75: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/75.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#8:Parallelqueries
75
![Page 76: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/76.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 76
SELECT id, create_date, first_name, last_name, email_address, http_session_id,last_active, avatar, twitter_handle, github_profile, stars
FROM super_big_tableINNER JOIN another_super_big_table
ON (a.id = http_session_id)WHERE id IN (SELECT id FROM active_logons_past_24_hours)
AND stars > 25AND last_active > SYSDATE – 356;
SELECT /*+ PARALLEL */ id, create_date, first_name, last_name, email_address,http_session_id, last_active, avatar, twitter_handle, github_profile, stars
FROM super_big_tableINNER JOIN another_super_big_table
ON (a.id = http_session_id)WHERE id IN (SELECT id FROM active_logons_past_24_hours)
AND stars > 25AND last_active > SYSDATE – 356;
Parallelqueries
![Page 77: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/77.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Parallelqueries
• Queriesbydefaultrunsinglethreaded–Oneprocess/thread– RunningononeCPU– DoingalltheI/Obyitself
• Longrunningand/orI/Ointensivequeriesmightbenefitfromparallelization• Easytoenable• BUT notauniversalperformancebooster!
Usethefullpowerofthedatabaseserver
77
![Page 78: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/78.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#9:Explainplans
78
![Page 79: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/79.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 79
EXPLAIN PLAN FOR<your SQL statement here>
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());
Explainplans
![Page 80: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/80.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 80
EXPLAIN PLAN FORWITH active_users (id, http_session, last_active) AS(
SELECT id, http_session_id, last_active_tmsFROM all_active_usersWHERE …
)SELECT a.id, a.http_session, p.first_name, p.last_name, p.email_addressFROM active_users a LEFT JOIN personal_accounts p ON p.email_address = a.idLEFT JOIN business_accounts b ON b.business_id = a.id;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());
Explainplans
![Page 81: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/81.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 81
Plan hash value: 1707074151-------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 100M| 39G| 1169 (100)| 00:00:01 ||* 1 | HASH JOIN RIGHT OUTER | | 100M| 39G| 1169 (100)| 00:00:01 || 2 | INDEX FULL SCAN | BA_IDX01 | 1 | 13 | 0 (0)| 00:00:01 ||* 3 | HASH JOIN RIGHT OUTER| | 100M| 38G| 854 (100)| 00:00:01 || 4 | TABLE ACCESS FULL | PERSONAL_ACCOUNTS | 1 | 385 | 2 (0)| 00:00:01 || 5 | TABLE ACCESS FULL | ALL_ACTIVE_USERS | 100M| 2479M| 537 (100)| 00:00:01 |-------------------------------------------------------------------------------------------
Explainplans
![Page 82: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/82.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Explainplans
• ExplainplansgiveyouthestepsthatareexecutedbytheDB• Itallowsyoutospotoutliersthatmightneedfurthertuning• Generatingexplainplansiseasy
LookbeyondyourSQLstatement
82
![Page 83: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/83.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Tip#10:SQLwaitevents
83
![Page 84: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/84.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 84
SQL> SELECT sid, event, wait_classFROM v$session_waitWHERE wait_class != 'Idle';
SID EVENT WAIT_CLASS------- --------------------- ----------
265 direct path read User I/O269 enq: TM - contention Application274 direct path read User I/O291 direct path read User I/O
293 enq: TM - contention Application 294 enq: TM – contention Application 296 enq: TM – contention Application 302 enq: TM - contention Application
SQLwaitevents
![Page 85: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/85.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
SQLwaitevents
• EverySQLstatementcanbetracedonitsactivity• EverySQLstatementrecordsonwhatit’swaitingfor• Youcanusuallyjustquerythatinformation
LookingbeyondtheSQLstatement
85
![Page 86: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/86.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Usefulresources
• PerformanceTuningGuide• SQLTuningGuide• DatabaseDevelopmentGuide• JDBCDeveloper’sGuide• UniversalConnectionPoolforJDBCDeveloper’sGuide
86
![Page 87: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/87.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|
Whereisthesource?
github.com/gvenzl/Oracle-JavaOneSuperchargeCodeOptimalDBPerf
87
![Page 88: Top 10 SQL Performance tips & tricks for Java …...Title Top 10 SQL Performance tips & tricks for Java Developers.pptx Created Date 4/3/2019 4:00:02 AM](https://reader034.vdocuments.site/reader034/viewer/2022050602/5fa9cd71a380eb3401067a0f/html5/thumbnails/88.jpg)
Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| 88