Boost SQL Performance with cursorBsharing. EXECUTIVE OVERVIEW. This
paper describes enhancements to the cursor sharing infrastructure, added in.
%RRVW64/3HUIRUPDQFHZLWK FXUVRUBVKDULQJ $Q2UDFOH7HFKQLFDO:KLWH3DSHU -XO\
%RRVW64/3HUIRUPDQFHZLWKFXUVRUBVKDULQJ
EXECUTIVE OVERVIEW
7KLVSDSHUGHVFULEHVHQKDQFHPHQWVWRWKHFXUVRUVKDULQJLQIUDVWUXFWXUHDGGHGLQ 2UDFOHL5HOHDVHDQG2UDFOHL7KHVHHQKDQFHPHQWVDUHFRQWUROOHGE\DQHZ SDUDPHWHUFXUVRUBVKDULQJ 7KHJRDORIFXUVRUBVKDULQJLVWRLPSURYHVHUYHUSHUIRUPDQFHIRUDSSOLFDWLRQV WKDWGRQ·WXVHELQGYDULDEOHVHYHU\ZKHUH NEED FOR CURSOR_SHARING
7KLVVHFWLRQH[SODLQVZK\DSSOLFDWLRQVQRWXVLQJELQGYDULDEOHVUXQLQWR SHUIRUPDQFHSUREOHPV Applications execute similar SQL statements repeatedly
$SSOLFDWLRQVWKDWXVHDQ2UDFOHGDWDEDVHWRPDQDJHWKHLUGDWDPXVWDFFHVVPRGLI\ LWXVLQJ64/VWDWHPHQWV7KHVH64/VWDWHPHQWVDUHHLWKHUGLUHFWO\LVVXHGE\DQ DSSOLFDWLRQWKURXJK2&,2&&,-'%&3/64/HWFRULQGLUHFWO\LVVXHGWKURXJK RWKHUXWLOLWLHVRUOLEUDULHVHJGEPVBVTO $QDSSOLFDWLRQW\SLFDOO\SURYLGHVDIL[HGFROOHFWLRQRIIXQFWLRQVWRWKHHQGXVHU GHSHQGLQJRQWKHW\SHRIDSSOLFDWLRQHJDQ+5DSSOLFDWLRQPLJKWSURYLGH IXQFWLRQDOLW\OLNHDGGLQJDQHZHPSOR\HHPRGLI\LQJSHUVRQDOLQIRUPDWLRQDERXWDQ HPSOR\HHHWF(YHU\VXFKIXQFWLRQDOLW\HYHQWXDOO\DFFHVVHVDQGRUPRGLILHVGDWD XVLQJ64/6LQFHDSSOLFDWLRQVUHSHDWHGO\H[HFXWHVXFKIXQFWLRQDOLW\DQ DSSOLFDWLRQ·VLQWHUDFWLRQZLWKDQ2UDFOHGDWDEDVHFRQVLVWVRIUHSHDWHGH[HFXWLRQRI VLPLODU64/VWDWHPHQWV Steps involved in executing SQL
7RH[HFXWHD64/VWDWHPHQWDFOLHQWSURJUDPFDQJRWKURXJKDIHZGLIIHUHQW LQWHUIDFHV)RUH[DPSOHWKURXJK2&,DFOLHQWFUHDWHVDVWDWHPHQWKDQGOHWKHQ SUHSDUHVWKHVWDWHPHQWELQGVGHILQHVDQGH[HFXWHVWKHVWDWHPHQWKDQGOH2UD 64/VWDWHPHQWFDQEHH[HFXWHGWKURXJKD3/64/SURFHGXUHE\GLUHFWO\ HPEHGGLQJLWLQWKHSURFHGXUHWH[W 5HJDUGOHVVRIWKHFOLHQWLQWHUIDFHDQ2UDFOHGDWDEDVHDOZD\VJRHVWKURXJKVRPH IL[HGVWHSVE\GHIDXOW
%RRVW64/3HUIRUPDQFHZLWKFXUVRUBVKDULQJ3DJH
RSHQDXVHUFXUVRU$XVHUFXUVRULVDKDQGOHWRDOORWKHUXVHUVWDWH DVVRFLDWHGZLWKDQ\64/VWDWHPHQWOLNHH[HFXWLRQPHPRU\UHIHUHQFHWRWKH VKDUHGFXUVRUFXUUHQWVWDWHRIWKHXVHUFXUVRUHWF SDUVHD64/VWDWHPHQWLQWRWKHRSHQXVHUFXUVRU'RLQJWKLVDVVRFLDWHVWKH 64/VWDWHPHQWZLWKWKHXVHUFXUVRULWDOVRFUHDWHVDVKDUHGFXUVRUZKLFK FRUUHVSRQGVWRWKHSDUVHGIRUPRIWKH64/VWDWHPHQW7KHVKDUHGFXUVRU PD\DOVREHW\SHFKHFNHGDQGRSWLPL]HGDVDSDUWRIWKHSDUVHLQVRPHFDVHV 7KHSURFHVVRISDUVLQJW\SHFKHFNLQJDQGRSWLPL]LQJD64/VWDWHPHQWLV W\SLFDOO\YHU\UHVRXUFHLQWHQVLYHLQWHUPVRI&38PHPRU\DQGODWFK FRQWHQWLRQ ELQGYDULDEOHVLIQHFHVVDU\7KLVSURYLGHV2UDFOHZLWKWKHQHFHVVDU\ LQIRUPDWLRQDERXWWKHW\SHVL]HYDOXHHWFRIWKHELQGYDULDEOHVLQWKH VWDWHPHQW W\SHFKHFNDQGRSWLPL]HWKHVKDUHGFXUVRULIQRWDOUHDG\GRQH H[HFXWHWKHXVHUFXUVRU7KLVVWHSGRHVWKHDFWXDOZRUNRIH[HFXWLQJWKH VWDWHPHQWDQGZLOOXVHXS&38DQGVHVVLRQPHPRU\GHSHQGLQJRQWKH FRPSOH[LW\RIWKHVWDWHPHQW 1RWHWKDWSDUVHW\SHFKHFNDQGRSWLPL]DWLRQFROOHFWLYHO\FDOOHGFRPSLODWLRQLQWKLV GRFXPHQW FRPSULVHWKHEXONRIWKHRYHUKHDGLQH[HFXWLQJD64/VWDWHPHQWDQG FDQOLPLWFDSDFLW\DQGVFDODELOLW\RIWKHGDWDEDVH Shared cursors
*LYHQWKDWDW\SLFDODSSOLFDWLRQUHSHDWHGO\H[HFXWHVVLPLODUVWDWHPHQWVDORWRI RSWLPL]DWLRQVLQWKH2UDFOHGDWDEDVHIRU64/SURFHVVLQJWDUJHWUHSHDWHG H[HFXWLRQV7KHPRVWLPSRUWDQWRSWLPL]DWLRQLVVKDUHGFXUVRUVZKLFKWULHVWR UHPRYHWKHRYHUKHDGRIFRPSLODWLRQIRUDQDYHUDJHH[HFXWLRQE\VKDULQJWKHUHVXOW RIFRPSLODWLRQEHWZHHQGLIIHUHQWH[HFXWLRQVRIWKHVDPHVWDWHPHQWHLWKHU KDSSHQLQJFRQFXUUHQWO\RUDWYHU\GLIIHUHQWWLPHV 7KHSLFWXUHEHORZLOOXVWUDWHV KRZWKLVLVGRQH U ser Session 1 Private execution state
Shared C ursor
U ser Session 2 Private execution state
%RRVW64/3HUIRUPDQFHZLWKFXUVRUBVKDULQJ3DJH
7RHQDEOHVKDULQJFXUVRUV2UDFOHVSOLWVXSWKHVWDWHPHQWH[HFXWLRQVWDWHLQWRD VKDUHGFXUVRUDQGDSHUH[HFXWLRQLQVWDQWLDWLRQ7KHVKDUHGFXUVRULVWKHUHVXOWRI FRPSLODWLRQDQGFRQWDLQVWKHH[HFXWLRQSODQLWLVFDFKHGLQWKHVKDUHGSRRO(DFK VHVVLRQH[HFXWLQJWKHVWDWHPHQWKDVLWVSULYDWHFRS\RISHUH[HFXWLRQVWDWHOLNHWKH XVHUFXUVRUYDOXHVRIUXQWLPHYDULDEOHVHWF ,QWKHSDUVHVWHSVWHSPHQWLRQHGHDUOLHU 2UDFOHILUVWVHDUFKHVIRUDQH[LVWLQJ VKDUHGFXUVRUWKDWFDQEHVKDUHGE\WKHXVHUVHVVLRQ2UDFOHEUHDNVGRZQWKLV VHDUFKLQWRWZRVWHSVLQGH[LQJEDVHGRQWKH64/WH[WWRILQGFXUVRUVEXLOWIRUWKH VDPH64/WH[WDQGVHOHFWLQJWKHULJKWFXUVRUEDVHGRQRWKHUFULWHULDOLNHRSWLPL]HU PRGHVEDVHREMHFWVDFFHVVHGHWF,IDVKDUDEOHFXUVRULVIRXQGWKHQQR FRPSLODWLRQQHHGVWRKDSSHQDQGWKHSURFHVVLVFDOOHGDVRIWSDUVH(OVHDQHZ VKDUHGFXUVRULVEXLOWE\FRPSLOLQJWKH64/VWDWHPHQWDQGWKHSURFHVVLVFDOOHGD KDUGSDUVH :KHQPRVWRIWKHVWDWHPHQWVLVVXHGE\DQDSSOLFDWLRQFDQVKDUHWKHVDPHVHWRI FXUVRUVPRVWRIWKHSDUVHVEHFRPHVRIWSDUVHVDQGLPSURYHWKHGDWDEDVHVHUYHU FDSDFLW\WKURXJKSXWE\UHGXFLQJPHPRU\DQG&38XVDJH UHVSRQVHWLPHE\ UHGXFLQJWKHWLPHWDNHQE\WKHSDUVHSKDVH DQGVFDODELOLW\E\UHGXFLQJODWFK FRQWHQWLRQ Why cursors are not shared
$VVXPLQJWKDWRWKHUIDFWRUVOLNHFRQILJXUDEOHLQVWDQFHVHVVLRQWUDQVDFWLRQOHYHO SDUDPHWHUVDUHWKHVDPHFXUVRUVIRUWZRVWDWHPHQWV6DQG6FDQWKHRUHWLFDOO\EH VKDUHGLIWKH\SHUIRUPWKHVDPHRSHUDWLRQVRQWKHVDPHXQGHUO\LQJVHWRI URZVREMHFWVXVLQJWKHVDPHSODQ7KLVFDQEHYHU\KDUGDQGFRPSXWDWLRQ LQWHQVLYHWRILJXUHRXWSRWHQWLDOO\GHVWUR\LQJWKHEHQHILWVRIVKDULQJFXUVRUVLQWKH ILUVWSODFH+HQFH2UDFOH·VFXUVRUVKDULQJFULWHULDGRQ·WVKDUHFXUVRUVLQDOOWKH SRVVLEOHVFHQDULRVEXWWKH\DUHGHVLJQHGWREHHIILFLHQWZLWKRXWORVLQJRXWRQ PRVWRIWKHFRPPRQFDVHV8QWLOL5HOHDVHWZRVWDWHPHQWV6DQG6FRXOG VKDUHWKHVDPHFXUVRULIERWK6DQG6ZHUHWH[WXDOO\LGHQWLFDODQGDIHZRWKHU FRQGLWLRQVZHUHPHWDQ\REMHFWQDPHVLQWKHVWDWHPHQWVWUDQVODWHWRWKHVDPHEDVH REMHFWVRSWLPL]HUPRGHVIRUWKHVHVVLRQVLVVXLQJWKHVWDWHPHQWVPDWFKHWF 7KLVFDXVHVDFXUVRUVKDULQJSUREOHPZKHQDSSOLFDWLRQVXVHOLWHUDOVLQVWHDGRIELQG YDULDEOHVLQVWDWHPHQWV6XFKDSSOLFDWLRQVHQGXSSURGXFLQJVWDWHPHQWVWKDWGLIIHU LQVRPHRIWKHOLWHUDOVHYHQZKHQWKHUHVWRIWKHVWDWHPHQWWH[WLVLGHQWLFDO)RU H[DPSOHDQDSSOLFDWLRQWKDWGRHVQRWXVHELQGYDULDEOHVPLJKWLVVXHWKHIROORZLQJ WZRVWDWHPHQWVDWGLIIHUHQWWLPHVRUIURPGLIIHUHQWVHVVLRQV ,16(57,17279$/8(6·IRR· ,16(57,17279$/8(6·EDU·
6LQFHWKHWZRVWDWHPHQWVDUHQ·WWH[WXDOO\LGHQWLFDOWKH\HQGXSEXLOGLQJVHSDUDWH FXUVRUV 7KHUHDUHYDULRXVUHDVRQVZK\VRPHDSSOLFDWLRQVGRQ·WXVHELQGYDULDEOHV
%RRVW64/3HUIRUPDQFHZLWKFXUVRUBVKDULQJ3DJH
• LW·VMXVWHDVLHUWRZULWH64/VWDWHPHQWVZLWKOLWHUDOVHVSHFLDOO\ZLWKVRPH WRROV • ROGHU2UDFOHUHOHDVHVGLGQ·WVXSSRUWELQGYDULDEOHVDWOHDVWWKHUHZDVQR FXUVRUVKDULQJDGYDQWDJHWRXVLQJWKHPXQWLO2UDFOH DQGLWUHTXLUHVVRPH ZRUNWRUHWURILWELQGYDULDEOHVWRH[LVWLQJDSSOLFDWLRQV • DOOGDWDEDVHYHQGRUVGRQ·WVXSSRUWELQGYDULDEOHVRUHYHQLIWKH\GRWKH V\QWD[YDULHVKHQFHDSSOLFDWLRQVORVHLQWHURSHUDELOLW\ZLWKRWKHUGDWDEDVHVE\ XVLQJ2UDFOHRQO\V\QWD[IHDWXUHV • ,IDVWDWHPHQWXVHVELQGYDULDEOHVWKHQLWDOZD\VXVHVWKHVDPHSODQ7KLVFDQ EHDSUREOHPLIWKHRSWLPDOSODQVIRUGLIIHUHQWELQGYDOXHVFDQEHYHU\ GLIIHUHQW)RUH[DPSOHFRQVLGHUWKHIROORZLQJVWDWHPHQWV 6(/(&7 )52077:+(5(71 $1'71 71 6(/(&7 )52077:+(5(71 $1'71 71
7KHVHWZRVWDWHPHQWVFDQKDYHGLIIHUHQWRSWLPDOSODQVGHSHQGLQJRQWKH GLVWULEXWLRQRIYDOXHVLQWKHFROXPQ17KXVXVLQJDELQGYDULDEOHSURGXFLQJ 6(/(&7 )52077:+(5(71 ; $1'71 71
ZLOOFDXVHWKHSODQWREHVXERSWLPDOIRUVRPHYDOXHVRIWKHELQGYDULDEOH7KLVFDQ IRUFHDSSOLFDWLRQVHVSHFLDOO\LQD'66HQYLURQPHQW WRXVHOLWHUDOVLQVWHDGRIELQG YDULDEOHV CONCEPTS
7KLVVHFWLRQGHVFULEHVVRPHQHFHVVDU\FRQFHSWVEHIRUHJRLQJLQWRWKHVROXWLRQ Similar statements
$VHWRIVWDWHPHQWVZLOOEHFDOOHGVLPLODULIDQ\WZRVWDWHPHQWVLQWKHVHWGLIIHURQO\ LQWKHOLWHUDOV 7KLVLVDSXUHO\V\QWDFWLFFULWHULRQ ([DPSOH7KHIROORZLQJVWDWHPHQWVDUHVLPLODU ,16(57,17279$/8(6·IRR· ,16(57,17279$/8(6·EDU· ,16(57,17279$/8(6·DOSKD· ,16(57,17279$/8(6·NDSSD· Optimally sharable statements
6LPLODUVWDWHPHQWVPD\RUPD\QRWKDYHWKHVDPHH[HFXWLRQSODQV)RUH[DPSOH WKHIROORZLQJWZRVWDWHPHQWVZLOOKDYHWKHVDPHH[HFXWLRQSODQV ,16(57,17279$/8(6·IRR·
%RRVW64/3HUIRUPDQFHZLWKFXUVRUBVKDULQJ3DJH
,16(57,17279$/8(6·EDU·
6XFKVWDWHPHQWVZLOOEHFDOOHGRSWLPDOO\VKDUDEOHVWDWHPHQWVLQWKLVGRFXPHQW 7KXV 2SWLPDOO\VKDUDEOHVWDWHPHQWVDUHVLPLODUVWDWHPHQWVWKDWKDYHWKHVDPH RSWLPDOSODQ 7KLVDOVRLPSOLHVWKDWRSWLPDOO\VKDUDEOHVWDWHPHQWVFDQVKDUHWKHVDPHFXUVRU ZLWKRXWDQ\LPSDFWRQWKHH[HFXWLRQFRVWV Sub-optimally sharable statements
2QWKHRWKHUKDQGWKHIROORZLQJWZRVWDWHPHQWV 6(/(&7 )52077:+(5(71 $1'71 71 6(/(&7 )52077:+(5(71 $1'71 71
FDQKDYHGLIIHUHQWRSWLPDOSODQVGHSHQGLQJRQWKHURZVWKDWVDWLVI\1 DQG1 WKHGLVWULEXWLRQRIYDOXHVLQFROXPQ1WKHDYDLODELOLW\RIDQLQGH[ RQ11RU1HWF)RULQVWDQFHWKHILUVWVWDWHPHQWPD\XVHDQLQGH[RQ7DQG WKHVHFRQGVWDWHPHQWPD\GRDIXOOWDEOHVFDQRQ72UWKHILUVWVWDWHPHQWPD\ GRDKDVKMRLQDQGWKHVHFRQGVWDWHPHQWPD\GRDQHVWHGORRSMRLQ6XFK VWDWHPHQWVZLOOEHUHIHUUHGWRDVVXERSWLPDOO\VKDUDEOHVWDWHPHQWV7KXV 6XERSWLPDOO\VKDUDEOHVWDWHPHQWVDUHVLPLODUVWDWHPHQWVWKDWFDQKDYH GLIIHUHQWRSWLPDOSODQV 7KLVDOVRLPSOLHVWKDWLIVXERSWLPDOO\VKDUDEOHVWDWHPHQWVVKDUHWKHVDPHFXUVRU WKHQWKHUHPD\EHDSHQDOW\LQWHUPVRIH[HFXWLRQFRVWV Optimally sharable vs. suboptimally sharable statements
7KHGLVWLQFWLRQEHWZHHQRSWLPDOO\VKDUDEOHDQGVXERSWLPDOO\VKDUDEOHVWDWHPHQWV LVQRWSXUHO\V\QWDFWLF,WGHSHQGVRQIDFWRUVOLNH • WKHSRVLWLRQRIOLWHUDOVLQWKHVWDWHPHQWHJLQWKH9$/8(6FODXVHRUWKH :+(5(FODXVH • WKHDFFHVVSDWKVDYDLODEOHHJSUHVHQFHRIDQLQGH[ • WKHGDWDGLVWULEXWLRQVWDWLVWLFV DQGLWVDYDLODELOLW\LIDOLWHUDORFFXUVLQD SUHGLFDWHLQYROYLQJDFROXPQHJ1 ZLWKFROXPQVWDWLVWLFVDYDLODEOH RQ1 • DOJRULWKPVXVHGE\WKHRSWLPL]HUWRH[SORLWOLWHUDOVHJFRQVWDQWIROGLQJRU SDUWLWLRQSUXQLQJ Non-sharable statements
7KHUHDUHFDVHVZKHUHVLPLODUVWDWHPHQWVFDQQRWVKDUHWKHVDPHFXUVRUEHFDXVH XVLQJWKHVDPHFXUVRUZRXOGSURGXFHLQFRUUHFWUHVXOWV7KHVHDUHVLPLODU
%RRVW64/3HUIRUPDQFHZLWKFXUVRUBVKDULQJ3DJH
VWDWHPHQWVWKDWPHDQGLIIHUHQWWKLQJVRUGRVRPHWKLQJYHU\GLIIHUHQWGXULQJ H[HFXWLRQ7KHIROORZLQJVWDWHPHQWVLOOXVWUDWHWKHSRLQW 6(/(&7 )520725'(5%