• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向分布“數(shù)據(jù)庫的相關(guān)子查詢優(yōu)化策略

    2016-11-29 09:34:23毛思語張利軍張小芳高錦濤李戰(zhàn)懷
    關(guān)鍵詞:主鍵子句元組

    毛思語,張利軍,張小芳,高錦濤,李戰(zhàn)懷

    (西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,西安710129)

    面向分布“數(shù)據(jù)庫的相關(guān)子查詢優(yōu)化策略

    毛思語,張利軍,張小芳,高錦濤,李戰(zhàn)懷

    (西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,西安710129)

    子查詢是指查詢語句作為另一個(gè)語句的查詢條件出現(xiàn),相關(guān)子查詢是指子查詢的查詢條件依賴于父查詢.相關(guān)子查詢要對(duì)子查詢反復(fù)求值,需要多次訪問磁盤,尤其是在分布式的環(huán)境中還會(huì)產(chǎn)生大量的通信開銷,導(dǎo)致執(zhí)行效率低下.在對(duì)現(xiàn)有相關(guān)子查詢優(yōu)化策略分析研究的基礎(chǔ)上,綜合分布式的特點(diǎn),將子查詢展開、無用子樹切除、聚集函數(shù)消除等策略應(yīng)用于分布式關(guān)系數(shù)據(jù)庫系統(tǒng)中,并在開源分布式關(guān)系數(shù)據(jù)庫OceanBase中應(yīng)用這些策略實(shí)現(xiàn)對(duì)謂詞EXISTS的相關(guān)子查詢的優(yōu)化.實(shí)驗(yàn)表明這些策略能夠明顯改善相關(guān)子查詢的查詢性能.

    分布式數(shù)據(jù)庫;相關(guān)子查詢;子查詢優(yōu)化

    0 引言

    SQL語言是關(guān)系數(shù)據(jù)庫中一種高度非過程化語言[1],在SQL語言中,一個(gè)SELECTFROM-WHERE稱為一個(gè)查詢塊,將一個(gè)查詢塊嵌套在另一個(gè)查詢塊條件中的查詢稱為子查詢,子查詢根據(jù)是否和父查詢有依賴關(guān)系分為相關(guān)子查詢和非相關(guān)子查詢[2].非相關(guān)子查詢實(shí)現(xiàn)較為簡(jiǎn)單,即先執(zhí)行子查詢,父查詢綁定子查詢的結(jié)果執(zhí)行,子查詢和父查詢都只執(zhí)行一遍;相關(guān)子查詢執(zhí)行較為復(fù)雜,先執(zhí)行父查詢,從父查詢的結(jié)果集中取出一個(gè)元組,重寫子查詢后執(zhí)行,簡(jiǎn)單來說,父查詢中有多少個(gè)元組,將執(zhí)行多少次子查詢.這種相關(guān)子查詢執(zhí)行策略非常耗時(shí),當(dāng)子查詢嵌套層數(shù)較多時(shí),執(zhí)行次數(shù)將是指數(shù)級(jí)的增長(zhǎng),因此對(duì)相關(guān)子查詢的執(zhí)行進(jìn)行優(yōu)化非常重要.

    相關(guān)子查詢的優(yōu)化方向是減少子查詢的執(zhí)行次數(shù)或者是減少子查詢的執(zhí)行時(shí)間.現(xiàn)有對(duì)相關(guān)子查詢的優(yōu)化策略一般是去相關(guān)性,然后各個(gè)部分獨(dú)立執(zhí)行.本文在分析研究相關(guān)子查詢的優(yōu)化策略的基礎(chǔ)上,結(jié)合分布式的特點(diǎn),并將相關(guān)子查詢的優(yōu)化策略應(yīng)用于分布式數(shù)據(jù)庫中,并以開源分布式關(guān)系型數(shù)據(jù)庫OCEANBASE為基礎(chǔ),實(shí)現(xiàn)了謂詞為EXISTS的相關(guān)子查詢,并采用子查詢展開、無用分支切除和聚集函數(shù)消除等優(yōu)化策略對(duì)相關(guān)子查詢進(jìn)行優(yōu)化.

    1 相關(guān)研究

    一般來說,子查詢可以作為過濾條件出現(xiàn)在WHERE/HAVING/ON等地方,或者作為臨時(shí)表出現(xiàn)在FROM/SELECT等子句中[3].本文只討論作為過濾條件使用的子查詢,子查詢可以按照關(guān)鍵字和語義劃分為以下3類[2].

    (1)IN關(guān)鍵字的集合成員查詢.

    (2)ANY/SOME/ALL等集合比較查詢.

    (3)以EXISTS為標(biāo)志的空判斷查詢.從語義上分析,EXISTS不返回任何數(shù)據(jù),只做邏輯空判斷,并且根據(jù)證明,所有其他子查詢都可以轉(zhuǎn)化為EXISTS子查詢[2,4].

    由于以EXISTS為標(biāo)志的空判斷查詢從語義上是一種只取一次的查詢,不同于其他子查詢要掃描全表或者是部分表,從查詢語義上說,EXISTS子查詢是一種最優(yōu)子查詢,并且其他謂詞的子查詢都可以轉(zhuǎn)為EXISTS子查詢.在本文中只討論EXISTS相關(guān)子查詢,下文中提到的相關(guān)子查詢也指謂詞為EXISTS的相關(guān)子查詢.

    相關(guān)子查詢由于執(zhí)行多次子查詢使效率較低,很多去相關(guān)性的方法提出以提高相關(guān)子查詢性能[5],常用以下3種方法優(yōu)化子查詢性能.

    (1)子查詢展開為半連接,把子查詢展開為半連接,消除子查詢.

    (2)子查詢展開為內(nèi)連接,把子查詢展開為內(nèi)連接,消除子查詢.

    (3)子查詢中相關(guān)列上建索引,減少單次子查詢執(zhí)行時(shí)間,并不降低子查詢執(zhí)行次數(shù).

    但是在相關(guān)子查詢不能展開的情況,使用原始方法執(zhí)行子查詢還是非常耗時(shí),JUN RAO等人基于這種情況提出一種將子查詢中和父查詢相關(guān)條件去除后物化中間結(jié)果的方法,填充子查詢展開和傳統(tǒng)方法中的空缺,性能優(yōu)于傳統(tǒng)的NEST-LOOP方式[6].

    1.1 子查詢展開為半連接

    根據(jù)相關(guān)子查詢語義,一個(gè)相關(guān)子查詢類似于一個(gè)半連接.Bellamokan等人提出使用窗口函數(shù)和半連接的方式消除子查詢,目前Oracle、Postgre和MYSQL等查詢優(yōu)化器中采用這種策略對(duì)相關(guān)子查詢進(jìn)行優(yōu)化[7-8].在執(zhí)行子查詢展開技術(shù)是把將子查詢轉(zhuǎn)換為半連接,嵌套層數(shù)減1.

    Postgre將位于WHERE子句后的子查詢稱為子鏈接,其在生成執(zhí)行計(jì)劃之前有一個(gè)優(yōu)化層處理,在這一部分處理對(duì)相關(guān)子查詢的優(yōu)化[8].從上層依次調(diào)用函數(shù)展開子鏈接,同時(shí)把子鏈接轉(zhuǎn)換為半連接或者是反半連接完成優(yōu)化工作[9].

    值得注意的是,并不是所有的子查詢都可以進(jìn)行展開操作,在POSTGRE中如果子查詢中含有WITH子句、聚集函數(shù)、FROM或者WHERE子句為空的情況下并不支持展開操作的處理.能進(jìn)行的展開操作即使把子鏈接FROM子句的表合并到父查詢FROM子句中.把子鏈接中的WHERE子句合并到父查詢的WHERE子句中.如例1所示,可將子查詢展開為內(nèi)連接,其中T1、T2...表示表,C1表示表中的列.

    例1:SELECT*FROM T1 WHERE T1.C1>1 AND EXISTS(SELECT*FROM T2 WHERE T2.C1=T1.C1);

    優(yōu)化后:

    SELECT*FROM T1 SEMMI JOIN T2 WHERE T1.C1>1 AND T2.C1=T1.C1;

    1.2 子查詢展開為內(nèi)連接

    除了可以將相關(guān)子查詢轉(zhuǎn)為半連接,由WON KIM等人提出使用內(nèi)連接的方式拉平子查詢,減少子查詢嵌套層數(shù)[1].根據(jù):R∝a=bS=QR(R∞a=bS)=R∞a=b(Qb(S)),其中R和S分別代表關(guān)系,a和b分別代表關(guān)系的連接屬性[10].把子查詢轉(zhuǎn)換內(nèi)連接后要在輸出列上加上去重操作.

    Won Kim將子查詢分成五類,其中相關(guān)子查詢根據(jù)是否含有聚集函數(shù)分為兩類[1].不含聚集函數(shù)的相關(guān)子查詢直接可以展開為內(nèi)連接,含有聚集函數(shù)的子查詢需要借用臨時(shí)表機(jī)制消除聚集函數(shù),轉(zhuǎn)化為不含聚集函數(shù)的相關(guān)子查詢后展開處理.

    其消除子查詢的算法是將一個(gè)N層子查詢拉平為N-1層的算法:合并所有的FROM子句,WHERE子句的過濾條件用AND鏈接,如果子查詢的謂詞是IS IN則轉(zhuǎn)換成“=”,如果是其他的則謂詞不變,對(duì)于父查詢的SELECT子句不做任何變化[1].如例2所示,可將子查詢展開為內(nèi)連接.

    例2:SELECT C3 FROM T1 WHERE T1.C1 IS IN(SELECT C1 FROM T2 WHERE T2.C2=T1.C3);

    優(yōu)化后:

    SELECT DISTINCT C3 FROM T1 INNER JOIN T2 WHERE T1.C1=T2.C1 AND T2.C1=T1.C3;

    1.3 子查詢中相關(guān)列上建索引

    相關(guān)子查詢除了可以減少內(nèi)查詢執(zhí)行的次數(shù),還可以優(yōu)化內(nèi)查詢的執(zhí)行,總體提升子查詢性能.Takamitsu Shioi等人從數(shù)據(jù)存儲(chǔ)角度出發(fā),提出針對(duì)使用行存儲(chǔ)的數(shù)據(jù)庫系統(tǒng),可通過在WHERE中的屬性列上建立索引的方式對(duì)子查詢進(jìn)行優(yōu)化[11].MYSQL中對(duì)于EXISTS相關(guān)子查詢沒有進(jìn)行優(yōu)化,而是采取索引的方式減少子查詢執(zhí)行時(shí)間.

    在父查詢表很小的情況下,子查詢表很大的情況下,借用索引進(jìn)行執(zhí)行,縮短每次執(zhí)行子查詢的時(shí)間,總體開銷較小.MYSQL本質(zhì)上沒有對(duì)EXISTS做優(yōu)化,但是通過借助索引減少子查詢的執(zhí)行時(shí)間,提升子查詢執(zhí)行性能.

    2 面向分布式系統(tǒng)的相關(guān)子查詢優(yōu)化

    2.1 面向分布式系統(tǒng)的相關(guān)子查詢優(yōu)化策略

    數(shù)據(jù)庫查詢的優(yōu)化主要分為兩個(gè)方面:路徑優(yōu)化和掃描次數(shù)的優(yōu)化.查詢耗時(shí)主要是傳送磁盤塊次數(shù)和搜索磁盤塊次數(shù)[4].對(duì)于路徑方面的優(yōu)化可以減少傳送磁盤塊的次數(shù),對(duì)掃描次數(shù)的優(yōu)化可以減少搜索磁盤塊的次數(shù).對(duì)于分布式數(shù)據(jù)庫而言,通信是影響查詢響應(yīng)的主要因素,在處理查詢語句時(shí)要盡量避免過多的通信開銷,可以通過減少通信時(shí)間實(shí)現(xiàn)子查詢的優(yōu)化[12].

    由子查詢執(zhí)行策略可以看出,相關(guān)子查詢的復(fù)雜度主要是因?yàn)樽硬樵兒透覆樵冇幸蕾囮P(guān)系,對(duì)子查詢的掃描次數(shù)過多.最壞的情況是父查詢有多少個(gè)元組,則要進(jìn)行多少次子查詢表掃描.所以,針對(duì)相關(guān)子查詢優(yōu)化的方向主要是減少子查詢表的掃描次數(shù)和借助索引減少子查詢表的掃描時(shí)間.

    2.1.1 子查詢展開

    把子查詢置于外層的父查詢中,作為連接關(guān)系與外層父查詢并列,其實(shí)質(zhì)是把某些子查詢重寫為等價(jià)的多表連接操作[5],這樣有關(guān)的訪問路徑、連接方法和連接順序可能被有效利用,使得查詢語句的層次盡可能地減少.因?yàn)镋XISTS子查詢語義是半連接語義,所以可以根據(jù)公式把子查詢展開為內(nèi)連接執(zhí)行.如上述例2所示的轉(zhuǎn)化.將子查詢的FROM子句以內(nèi)連接的形式合并到父查詢中,將子查詢的WHERE子句以AND連接的形式合并到父查詢中,對(duì)父查詢的輸出列做去重操作.

    但是這種優(yōu)化并不是全部適應(yīng),在子查詢中有WITH子句、FROM或者WHERE子句為空的情況下并不能進(jìn)行子查詢展開[7].

    2.1.2 無用子樹切除

    根據(jù)EXISTS語義來說,只做空判斷,并不關(guān)心結(jié)果集具體是什么內(nèi)容,所以可以去除子查詢的SELECT子句去及SELECT子句上的所有操作.在可以去除子查詢的SELECT子句、對(duì)SELECT子句的排序去重或限制輸出等.減少了物理計(jì)劃執(zhí)行時(shí)路徑長(zhǎng)度和無用操作.如例4所示,是無用分支切除后的語句.

    例4:SELECT*FROM T1 WHERE EXISTS(SELECT DISTINCT C2 FROM T2 WHERE T1.C1=T2.C1 ORDER BY(C3));

    優(yōu)化后:

    SELECT*FROMT1WHEREEXISTS(SELECTC2FROMT2WHERE T1.C1=T2.C1);

    2.1.3 聚集函數(shù)消除

    結(jié)合聚集函數(shù)的語義,不管一張表里有沒有數(shù)據(jù),聚集函數(shù)都會(huì)輸出一行,例如SUM(X)會(huì)返回NULL,COUNT(*)會(huì)返回0[13],子查詢的最終結(jié)果集不可能為空,對(duì)于EXISTS過濾條件,其結(jié)果是永真的.因此輸出列中存在聚集函數(shù)的子查詢是無意義的,可以直接去除.如例5所示,可以直接去除子查詢.

    例5:SELECT*FROM T1 WHERE EXISTS(SELECT MAX(C1)FROM T2 WHERE T2.C1=T1.C1);

    優(yōu)化后:

    SELECT*FROM T1;

    2.1.4 借用索引

    在不能進(jìn)行子查詢展開的情況下,可以選擇建合適的索引,減少子查詢的執(zhí)行時(shí)間.并且由于EXISTS相關(guān)子查詢是空判斷,并不關(guān)心具體得到了多少個(gè)元組,應(yīng)該對(duì)子查詢加LIMIT 1限制.使子查詢?cè)趫?zhí)行時(shí)只得到一行可以滿足條件的元組后就會(huì)輸出,而不是一直阻塞直到得到所有元組.如例6所示,T2表的C1列是主鍵列,則填充后可以改變掃描方式.

    例6:SELECT*FROM T1 WHERE EXISTS(SELECT*FROM T2 WHERE T2.C1 =T1.C2);

    優(yōu)化后:

    SELECT*FROM T1 WHERE EXISTS(SELECT*FROM T2 WHERE T2.C1=T1.C2 LIMIT 1);

    2.2 分布式數(shù)據(jù)庫OceanBase中相關(guān)子查詢優(yōu)化實(shí)現(xiàn)

    2.2.1 分布式數(shù)據(jù)庫系統(tǒng)OceanBase

    OceanBase是由阿里巴巴開發(fā)的分布式關(guān)系型數(shù)據(jù)庫.OceanBase有4種類型的服務(wù)器:主控服務(wù)器、基準(zhǔn)服務(wù)器、增量服務(wù)器和合并服務(wù)器.OceanBase將數(shù)據(jù)分為基準(zhǔn)數(shù)據(jù)和增量數(shù)據(jù)分別存放在基準(zhǔn)服務(wù)器和增量服務(wù)器中,增量服務(wù)器中的數(shù)據(jù)可以通過合并的方式生成新的基準(zhǔn)數(shù)據(jù).客戶端在進(jìn)行查詢時(shí),需要通過合并服務(wù)器把需求發(fā)送到兩個(gè)服務(wù)器中,根據(jù)主控服務(wù)器中的信息取到相關(guān)數(shù)據(jù),然后進(jìn)行過濾合并后返回給客戶端.

    OceanBase對(duì)某些查詢可以不用將數(shù)據(jù)取到合并數(shù)據(jù)庫上進(jìn)行過濾,將過濾條件下壓到基準(zhǔn)數(shù)據(jù)庫上進(jìn)行,減少傳輸?shù)脑M數(shù)和空間占用,在基準(zhǔn)數(shù)據(jù)庫上的過濾是一次掃描所有所需元組,然后輸出第一行滿足條件的元組.OceanBase元組的掃描方式有兩種:一種基于主鍵的GET方法,利用主鍵索引直接取到所需元組;另一種是逐行SCAN,掃描表中所有元組是否滿足過濾條件.

    目前開源的OceanBase版本中并不支持子查詢,實(shí)驗(yàn)只實(shí)現(xiàn)了應(yīng)用較多且性能較優(yōu)化的EXISTS相關(guān)子查詢.

    2.2.2 EXISTS的執(zhí)行策略

    對(duì)于相關(guān)子查詢的執(zhí)行策略,需要先執(zhí)行父查詢,把和子查詢相關(guān)的列傳給子查詢,經(jīng)過子查詢過濾,決定是否輸出這一個(gè)元組.圖1為OceanBase中的EXISTS相關(guān)子查詢執(zhí)行流程.

    如圖1所示,在物理計(jì)劃執(zhí)行開始時(shí),從父查詢?nèi)〕鲆粋€(gè)元組,填充子查詢,如果子查詢中有合適的元組,即子查詢的結(jié)果集不為空,則輸出父查詢的元組;否則,不輸出.

    父查詢過濾規(guī)則:本階段,在父查詢物理操作符打開完成后,需要過濾除子查詢外其他元組,即假設(shè)子查詢結(jié)果恒為真的情況下過濾表中元組,去除不滿足其他條件的元組.這里主要有兩種情況:一種是<子查詢>OR<其他過濾條件P>,這種情況不執(zhí)行P,直接把元組輸出;另一種是<子查詢>AND<其他過濾條件P>,如果不滿足P過濾條件,則不用取出這行元組,被過濾掉.為了識(shí)別子查詢,需要在物理計(jì)劃構(gòu)建的時(shí)給每個(gè)過濾條件打上標(biāo)記.在執(zhí)行時(shí)直接假設(shè)這個(gè)條件為真.

    子查詢執(zhí)行:執(zhí)行子查詢,采用管道方式進(jìn)行,從父查詢?nèi)〕鲆粋€(gè)元組,需要在子查詢執(zhí)行前填充子查詢中和父查詢相關(guān)的列,填充完成后,打開子查詢物理操作符,執(zhí)行子查詢物理計(jì)劃.因?yàn)镋XISTS條件的特殊性,只需執(zhí)行一次子查詢就可以知道是否滿足EXISTS條件.EXISTS是空判斷不是NULL判斷,即使執(zhí)行子查詢后輸出結(jié)果是NULL仍然滿足EXISTS條件.這里需要對(duì)于父查詢中出現(xiàn)<子查詢>OR<其他過濾條件P>的過濾條件重新進(jìn)行判斷,對(duì)不滿足子查詢的元組進(jìn)行判斷是否可以滿足P.

    圖1 EXISTS相關(guān)子查詢執(zhí)行流程Fig.1Execution process of correlated subquery for predicate EXISTS

    2.2.3 EXISTS的優(yōu)化策略

    使用2.1節(jié)所述的優(yōu)化策略對(duì)EXISTS進(jìn)行優(yōu)化,如算法1所示,其中參數(shù)Q表示待優(yōu)化查詢.

    算法1:

    Optimize Subquery()函數(shù)實(shí)現(xiàn)對(duì)查詢Q的優(yōu)化,對(duì)Q中的每個(gè)子查詢,首先判斷其有無無用分支,若有則直接切除無用分支,然后判斷子查詢中是否有聚集函數(shù),如果存在則直接去除子查詢,否則判斷子查詢是否可展開,若可展開同時(shí)子查詢中不再包含子查詢,則對(duì)子查詢進(jìn)行展開處理,否則遞歸地調(diào)用Optimize Subquery()函數(shù)對(duì)該子查詢進(jìn)行同樣的處理.最后若有索引,則使用索引對(duì)查詢進(jìn)行處理.

    3 實(shí)驗(yàn)

    3.1 實(shí)驗(yàn)設(shè)計(jì)

    實(shí)驗(yàn)在服務(wù)器上部署OceanBase分布式數(shù)據(jù)庫系統(tǒng),其中服務(wù)器軟硬件配置如下:16G內(nèi)存,4核CPU,1T硬盤.Red Hat 6.2操作系統(tǒng).

    基于前述對(duì)OceanBase分析,為了減少通信的時(shí)間和空間開銷,過濾條件最好可以下壓到基準(zhǔn)服務(wù)器中,過濾條件存在主鍵索引時(shí)速度比較快.根據(jù)優(yōu)化策略可以得知:展開減少通信開銷,主鍵索引減少子查詢執(zhí)行時(shí)間.由于無用子樹切除和聚集函數(shù)消除都是在特殊場(chǎng)景下的應(yīng)用,雖然會(huì)對(duì)性能產(chǎn)生一定影響,但是不算在優(yōu)化的范圍內(nèi),所以本次實(shí)驗(yàn)并不包括這些因素對(duì)實(shí)驗(yàn)的影響.設(shè)計(jì)實(shí)驗(yàn)如下.

    (1)展開有效性驗(yàn)證,當(dāng)父查詢表很大,子查詢表很小,執(zhí)行會(huì)有很多次的通信時(shí)間開銷,使用子查詢展開技術(shù)應(yīng)該優(yōu)化性能更好一點(diǎn).

    (2)主鍵索引有效性驗(yàn)證,當(dāng)父查詢表很小,子查詢表很大,執(zhí)行時(shí)間主要是子查詢表的查詢時(shí)間,通過主鍵索引可以更好的優(yōu)化性能.

    (3)展開穩(wěn)定性驗(yàn)證,當(dāng)父查詢和子查詢表都很大的情況下,分布式的通信開銷和子查詢的執(zhí)行時(shí)間開銷都很大的情況下,主鍵索引不會(huì)明顯的優(yōu)化性能,但是使用子查詢展開應(yīng)該可以有效的提升性能,并且不會(huì)有很大的波動(dòng).

    實(shí)驗(yàn)所用的表結(jié)構(gòu)如下:

    STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT);

    COURSE(CNO,CNAME,CPNO,CCREDIT);

    SC(SNO,CNO,GRADE).

    其中加下劃線的列為主鍵列.

    3.2 子查詢展開有效性驗(yàn)證

    該實(shí)驗(yàn)測(cè)試在父查詢表很大,子查詢表很小的情況下,有無主鍵索引性能上的差異,另外在無主鍵索引的情況下,使用子查詢展開優(yōu)化對(duì)性能的影響.測(cè)試父查詢表為SC表,表中有100萬行元組,下面語句中使用到的SNO列為主鍵列.子查詢表為COURSE表,表中130行元組,其中CNO為主鍵列.

    使用主鍵測(cè)試語句為:SELECT*FROM SC WHERE SNO<X AND EXISTS(SELECT *FROM COURSE WHERE CNO=SC.CNO);其執(zhí)行結(jié)果和展開后的執(zhí)行結(jié)果見圖2.

    圖2 主鍵索引的情況下優(yōu)化后的性能Fig.2Performance of using primary key index and pull up subquery

    由圖2可以看出,在父查詢表很大,子查詢表很小的情況下,即使有主鍵索引的情況,對(duì)于分布式而言,通信開銷仍然是不可忽略的.將子查詢展開后性能提升的比較明顯.

    不使用主鍵索引的語句為:SELECT*FROM SC WHERE SNO<X AND EXISTS(SELECT*FROM COURSE WHERE CPNO=SC.CNO);其執(zhí)行結(jié)果和展開后的執(zhí)行結(jié)果見圖3.

    圖3 無主鍵索引的情況下優(yōu)化后的性能Fig.3Performance of without primary key index and pull up subquery

    從兩次實(shí)驗(yàn)結(jié)果可以看出,是否使用了主鍵索引,性能上并沒有提升了很多.因?yàn)樵谧硬樵儽砗苄〉那闆r下,主鍵索引優(yōu)化的空間很小.并且在這種情況下,通信時(shí)間開銷是不可回避的.所以這種情況下,使用子查詢展開技術(shù)是非常有效的優(yōu)化手段.

    3.3 主鍵索引有效性驗(yàn)證

    該實(shí)驗(yàn)測(cè)試在父查詢表很小,但是子查詢表很大的情況下,主鍵索引和子查詢展開對(duì)性能的影響.實(shí)驗(yàn)環(huán)境同上.父查詢使用COURSE表,子查詢使用SC表.

    使用主鍵測(cè)試語句為:SELECT*FROM COURSE WHERE CNO<X AND EX-ISTS(SELECT*FROM SC WHERE CNO=COURSE.CNO);其執(zhí)行結(jié)果和展開后的執(zhí)行結(jié)果見圖4.

    圖4 有主鍵索引的情況下優(yōu)化后的性能Fig.4Performance of using primary key index and pull up subquery

    由圖4可以看出,有主鍵索引的情況下,主鍵的性能優(yōu)于子查詢展開.因?yàn)樵诟覆樵儽砗苄〉那闆r下,在分布式系統(tǒng)中,通信開銷不是很大.但是由于子查詢的表很大,所以對(duì)子查詢的優(yōu)化就有很大的空間.并且展開子查詢后需要很大的空間開銷.

    不使用主鍵索引的語句為:SELECT*FROM COURSE WHERE CNO<X AND EXISTS(SELECT*FROM SC WHERE SGRADE=COURSE.CNO);其執(zhí)行結(jié)果和展開后的執(zhí)行結(jié)果見表5.

    圖5 無主鍵索引的情況下優(yōu)化后的性能Fig.5Performance of without primary key index and pull up subquery

    由圖5可知,子查詢展開技術(shù)和主鍵索引都對(duì)性能有很大的提升,但是從子查詢展開技術(shù)效果比較明顯.但是在有主鍵索引的情況下,不展開子查詢效果更好一點(diǎn).在沒有主鍵索引的情況下,使用子查詢展開較好.

    3.4 子查詢展開穩(wěn)定性驗(yàn)證

    該實(shí)驗(yàn)測(cè)試在父查詢和子查詢表很大的情況下,主鍵索引和子查詢展開對(duì)性能的影響.測(cè)試環(huán)境同上.測(cè)試父查詢表為STUDENT表,表中存在100萬行元組,子查詢是SC表.

    使用主鍵測(cè)試語句為:SELECT*FROM STUDENT WHERE SNO<X AND EXISTS(SELECT*FROM SC WHERE SNO=STUDENT.SNO);其執(zhí)行結(jié)果和展開后的執(zhí)行結(jié)果見圖6.

    由圖6可知,在有主鍵索引的情況下,如果父查詢的結(jié)果集比較小,主鍵索引的效果更好一點(diǎn).這時(shí)候?qū)τ谡归_反而不是很好的選擇.但是當(dāng)子查詢的結(jié)果集增大時(shí),分布式環(huán)境中的通信開銷隨之增大,耗時(shí)和子查詢的結(jié)果集成正比.但是可以看出,子查詢的結(jié)果集對(duì)展開的情況沒有太大的影響.

    不使用主鍵索引的語句為:SELECT*FROM STUDENT WHERE SNO<X AND EXISTS(SELECT*FROM SC WHERE SNO=STUDENT.SAGE);其執(zhí)行結(jié)果和展開后的執(zhí)行結(jié)果見圖7.

    圖6 有主鍵索引的情況下優(yōu)化后的性能Fig.6Performance of using primary key index and pull up subquery

    圖7 無主鍵索引的情況下優(yōu)化后的性能Fig.7Performance of without primary key index and pull up subquery

    由圖7可知,主鍵索引的耗時(shí)和父查詢的元組數(shù)成正比,在數(shù)據(jù)集比較小的情況下,表現(xiàn)突出.但是父查詢的元組數(shù)對(duì)子查詢展開沒有太大的影響,所以這種情況下,比較適用于選擇子查詢展開避免過多的通信開銷.

    4 總結(jié)

    相關(guān)子查詢是關(guān)系數(shù)據(jù)庫的重要功能之一,按照傳統(tǒng)方式執(zhí)行的相關(guān)子查詢是一種非常耗時(shí)的操作,對(duì)于相關(guān)子查詢的優(yōu)化是有重要意義的.本文研究分析現(xiàn)有相關(guān)子查詢的優(yōu)化策略,并結(jié)合分布式數(shù)據(jù)庫的特點(diǎn),將無用分支切除、子查詢展開,索引、聚集函數(shù)消除等相關(guān)子查詢優(yōu)化策略應(yīng)用于分布式數(shù)據(jù)庫中.在分布式環(huán)境中傳統(tǒng)執(zhí)行策略會(huì)產(chǎn)生大量的通信開銷,因此選擇子查詢展開技術(shù)減少通信時(shí)間開銷,使用索引降低通信空間開銷.實(shí)驗(yàn)了基于OCEANBASE分布式數(shù)據(jù)庫的EXISTS相關(guān)子查詢,并在不同的應(yīng)用場(chǎng)景下比較了不同優(yōu)化策略對(duì)查詢性能的影響.

    根據(jù)實(shí)驗(yàn)結(jié)果可以得知,當(dāng)父查詢執(zhí)行其它過濾條件后的結(jié)果集較小,并且子查詢有索引的情況下,其性能優(yōu)于子查詢展開后的性能.當(dāng)父查詢結(jié)果集比較大,或者是沒有主鍵索引的情況下,使用子查詢展開技術(shù)對(duì)性能提升很大.使用索引的情況,執(zhí)行時(shí)間和父查詢的結(jié)果集大小成正比,但是子查詢展開技術(shù)相對(duì)來說比較穩(wěn)定,在大數(shù)據(jù)的情況下比較適用.

    針對(duì)子查詢不滿足展開條件的情況,如何對(duì)其進(jìn)行優(yōu)化,本文沒有提出切實(shí)的解決方法,這將在以后的工作中進(jìn)一步深入研究.

    [1]KIM W.On optimizing an SQL-like nested query[J].ACM Transactions on Database Systems(TODS),1982, 7(3):443-469.

    [2]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社,2000.

    [3]李海翔.數(shù)據(jù)庫查詢優(yōu)化器的藝術(shù)[M].北京:機(jī)械工業(yè)出版社,2014.

    [4]SILBERSCHATZ A,KORTH H F,SUDARSHAN S.Database System Concepts[M].New York:McGraw-Hill, 1997.

    [5]CAO B.Optimization of complex nested queries in relational databases[C]//Proceedings of 22nd International Conference on Data Engineering Workshops.[S.l.]:IEEE,2006:X137.

    [6]RAO J,ROSS K A.Reusing invariants:A new strategy for correlated queries[C]//SIGMOD,1998,27(2):37-48.

    [7]BELLAMKONDAS,AHMED R,WITKOWSKI A,et al.Enhanced subquery optimizations in oracle[C]//Proceedings of the VLDB Endowment.Germany:DBLP,2009,2(2):1366-1377.

    [8]彭智勇.PostgreSQL數(shù)據(jù)庫內(nèi)核分析[M].北京:機(jī)械工業(yè)出版社,2012.

    [9]KHAN M,KHAN M N A.Exploring query optimization techniques in relational databases[J].International Journal of Database Theory&Application,2013,6(3):11-20.

    [10]魏士偉,黃文明,康業(yè)娜,等.分布式數(shù)據(jù)庫中基于半連接的查詢優(yōu)化算法研究[J].計(jì)算機(jī)應(yīng)用,2007,27(B06):34-36.

    [11]SHIOIT,HATANOK.Queryprocessingoptimizationusingdisk-basedrow-storeandcolumnstore[C]//Proceedings of the 17th International Conference on Information Integration and Web-based Applications&Services.New York:ACM,2015:69.

    [12]CHEN G,WU Y,LIU J,et al.Optimization of sub-query processing in distributed data integration systems[J]. Journal of Network and Computer Applications,2011,34(4):1035-1042.

    [13]GALINDO-LEGARIA C,JOSHI M.Orthogonal optimization of subqueries and aggregation[C]//ACM SIGMOD Record.New York:ACM,2001,30(2):571-581.

    (責(zé)任編輯:張晶)

    Optimization strategies of correlated subquery for distributed database

    MAO Si-yu,ZHANG Li-jun,ZHANG Xiao-fang,GAO Jin-tao,LI Zhan-huai
    (School of Computer,Northwestern Polytechnical University,Xi’an710129,China)

    A query which occurs in another query as a filter is called subquery,and if the filtering condition of a subquery depends on its parent query,it is called correlated subquery.Generally,the execution cost of query with correlated subquery is high due to that subquery would be executed multiply,which leads to multiple disk access and extra communications in distributed system.Based on the investigation of the classical optimization strategies of correlated subquery,and according to the characteristics of distributed system,we adopt pulling up subquery,removing useless tree and eliminating aggregation function to optimize correlated subquery in distributed database system.And we implement these strategies in the distributed relational database OceanBase for the correlated subquery predicate EXIST.Experiment results show that these strategies can significantly improve the performance of a correlated subquery.

    distributed database;correlated subquery;subquery optimization

    TP392

    A

    10.3969/j.issn.1000-5641.2016.05.007

    1000-5641(2016)05-0056-11

    2016-05

    中央高校基本科研業(yè)務(wù)費(fèi)專項(xiàng)資金資助(3102015JSJ0004)

    毛思語,女,碩士研究生,研究方向?yàn)閿?shù)據(jù)庫.E-mail:maosiyu@mail.nwpu.edu.cn.

    張利軍,男,講師,研究方向?yàn)閿?shù)據(jù)庫理論,數(shù)據(jù)管理技術(shù). E-mail:zhanglijun@nwpu.edu.cn.

    猜你喜歡
    主鍵子句元組
    命題邏輯中一類擴(kuò)展子句消去方法
    基于Go 實(shí)現(xiàn)的分布式主鍵系統(tǒng)研究
    Python核心語法
    命題邏輯可滿足性問題求解器的新型預(yù)處理子句消去方法
    基于外鍵的E-R圖繪制方法研究
    海量數(shù)據(jù)上有效的top-kSkyline查詢算法*
    西夏語的副詞子句
    西夏學(xué)(2018年2期)2018-05-15 11:24:42
    基于減少檢索的負(fù)表約束優(yōu)化算法
    命題邏輯的子句集中文字的分類
    面向數(shù)據(jù)流處理的元組跟蹤方法
    午夜福利网站1000一区二区三区| 校园人妻丝袜中文字幕| 久久99精品国语久久久| 国产午夜精品论理片| 国产91av在线免费观看| 亚洲婷婷狠狠爱综合网| 日韩欧美三级三区| 22中文网久久字幕| 亚洲欧美日韩东京热| 欧美一级a爱片免费观看看| 成年免费大片在线观看| 日韩成人av中文字幕在线观看| 99久久中文字幕三级久久日本| 91午夜精品亚洲一区二区三区| 熟妇人妻久久中文字幕3abv| 久久久久久久亚洲中文字幕| 日本黄色片子视频| 亚洲欧美清纯卡通| 久久久久久久午夜电影| av在线亚洲专区| 国产精品美女特级片免费视频播放器| 色吧在线观看| 亚洲欧美日韩无卡精品| 亚洲电影在线观看av| 欧美日韩国产亚洲二区| 中文在线观看免费www的网站| 禁无遮挡网站| 免费观看人在逋| 久久久久久久久久黄片| 3wmmmm亚洲av在线观看| 波多野结衣高清无吗| 黄色配什么色好看| 国产精品电影一区二区三区| 特大巨黑吊av在线直播| 亚洲精品影视一区二区三区av| 男女国产视频网站| 99久久精品热视频| 日韩欧美 国产精品| 免费无遮挡裸体视频| 久久精品熟女亚洲av麻豆精品 | 亚洲欧美精品自产自拍| av专区在线播放| 在线播放国产精品三级| 99热6这里只有精品| 成人午夜高清在线视频| 中文字幕熟女人妻在线| 亚洲精品乱久久久久久| 欧美bdsm另类| 国产精品国产三级专区第一集| 最近中文字幕2019免费版| 99视频精品全部免费 在线| 日本黄大片高清| 国产黄片美女视频| 久久亚洲国产成人精品v| 99久久精品一区二区三区| 又黄又爽又刺激的免费视频.| 极品教师在线视频| 亚洲国产成人一精品久久久| 免费在线观看成人毛片| 美女高潮的动态| 欧美性猛交黑人性爽| 久久精品人妻少妇| 三级男女做爰猛烈吃奶摸视频| 国产探花极品一区二区| 特级一级黄色大片| 亚洲国产日韩欧美精品在线观看| 在线播放无遮挡| 18+在线观看网站| 啦啦啦观看免费观看视频高清| 内射极品少妇av片p| 国产激情偷乱视频一区二区| 国产亚洲av片在线观看秒播厂 | 少妇的逼好多水| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 亚洲内射少妇av| 爱豆传媒免费全集在线观看| 久久久久久久久大av| 久久亚洲精品不卡| 黄片wwwwww| 亚洲精品日韩av片在线观看| 午夜福利在线在线| 人人妻人人澡欧美一区二区| 天天躁夜夜躁狠狠久久av| 身体一侧抽搐| 天堂中文最新版在线下载 | 国内揄拍国产精品人妻在线| 日韩av在线免费看完整版不卡| .国产精品久久| 国产高清不卡午夜福利| 你懂的网址亚洲精品在线观看 | 国产乱人视频| av.在线天堂| 日韩成人伦理影院| 国产激情偷乱视频一区二区| 国产免费又黄又爽又色| 日韩欧美在线乱码| 日韩在线高清观看一区二区三区| 久久精品国产亚洲av涩爱| 久久鲁丝午夜福利片| 国语自产精品视频在线第100页| 九草在线视频观看| 亚洲国产精品合色在线| 白带黄色成豆腐渣| 人体艺术视频欧美日本| 九九在线视频观看精品| 熟女电影av网| av福利片在线观看| 国产老妇女一区| 老司机影院毛片| 在线观看66精品国产| 少妇高潮的动态图| 国产毛片a区久久久久| 黄色一级大片看看| 在线观看66精品国产| 我的老师免费观看完整版| 精品人妻视频免费看| 欧美日韩在线观看h| 成人三级黄色视频| 91aial.com中文字幕在线观看| 成人三级黄色视频| 亚洲av成人精品一二三区| 99久久中文字幕三级久久日本| 国产男人的电影天堂91| 国产男人的电影天堂91| 国产精品日韩av在线免费观看| 男女国产视频网站| 97在线视频观看| 免费大片18禁| av视频在线观看入口| 久久综合国产亚洲精品| 国产亚洲午夜精品一区二区久久 | 国产综合懂色| 天堂影院成人在线观看| 蜜臀久久99精品久久宅男| 国产单亲对白刺激| 久久草成人影院| 中文字幕免费在线视频6| 桃色一区二区三区在线观看| 久久久久性生活片| 久久久国产成人精品二区| 成人二区视频| 老司机福利观看| 亚洲精品日韩av片在线观看| 九草在线视频观看| 亚洲国产精品合色在线| 国产精品国产高清国产av| 免费无遮挡裸体视频| 91狼人影院| 亚洲无线观看免费| 国产免费男女视频| 色综合色国产| 三级男女做爰猛烈吃奶摸视频| 在线观看66精品国产| 国产午夜福利久久久久久| 人妻夜夜爽99麻豆av| 日韩一本色道免费dvd| 边亲边吃奶的免费视频| av在线蜜桃| 久久久久久九九精品二区国产| 国内少妇人妻偷人精品xxx网站| 国内少妇人妻偷人精品xxx网站| 2022亚洲国产成人精品| 村上凉子中文字幕在线| 亚洲成人中文字幕在线播放| www日本黄色视频网| 国产不卡一卡二| 最新中文字幕久久久久| 在线免费观看的www视频| 亚洲av成人av| 一级二级三级毛片免费看| 18禁在线无遮挡免费观看视频| 水蜜桃什么品种好| 亚洲天堂国产精品一区在线| 黄色欧美视频在线观看| 亚洲国产日韩欧美精品在线观看| 网址你懂的国产日韩在线| 免费观看在线日韩| 亚洲欧美精品专区久久| 久久这里只有精品中国| 久久精品影院6| 又粗又硬又长又爽又黄的视频| 国国产精品蜜臀av免费| 搡老妇女老女人老熟妇| 天天躁日日操中文字幕| 日韩亚洲欧美综合| 热99re8久久精品国产| 亚洲一区高清亚洲精品| 成年av动漫网址| videos熟女内射| 久久精品熟女亚洲av麻豆精品 | 国产黄a三级三级三级人| 狂野欧美激情性xxxx在线观看| 天美传媒精品一区二区| 日韩亚洲欧美综合| 成人鲁丝片一二三区免费| 国产在线一区二区三区精 | 成年女人看的毛片在线观看| 亚洲成人中文字幕在线播放| 天堂√8在线中文| 69人妻影院| 插阴视频在线观看视频| 国产麻豆成人av免费视频| 桃色一区二区三区在线观看| 男女视频在线观看网站免费| 美女cb高潮喷水在线观看| 免费看日本二区| 亚洲人成网站高清观看| 国产伦在线观看视频一区| 国产高清不卡午夜福利| 日韩av在线免费看完整版不卡| 精品一区二区免费观看| 亚洲国产精品成人综合色| 99久国产av精品国产电影| 精品无人区乱码1区二区| 久久久久久久久久久丰满| 精品久久久久久久人妻蜜臀av| 亚洲经典国产精华液单| 日本免费一区二区三区高清不卡| 国产不卡一卡二| 亚洲自偷自拍三级| 视频中文字幕在线观看| 97热精品久久久久久| 亚洲欧美中文字幕日韩二区| 美女高潮的动态| 乱码一卡2卡4卡精品| 欧美高清成人免费视频www| 欧美不卡视频在线免费观看| 中文天堂在线官网| 噜噜噜噜噜久久久久久91| 免费黄色在线免费观看| 久久久久久久久久成人| 国产不卡一卡二| 日韩高清综合在线| 久久久久久久久久久丰满| 91精品一卡2卡3卡4卡| 神马国产精品三级电影在线观看| 婷婷六月久久综合丁香| 欧美激情在线99| 久久久国产成人精品二区| 夜夜爽夜夜爽视频| 国产精品一区二区在线观看99 | 久久草成人影院| 亚洲三级黄色毛片| 内射极品少妇av片p| 日本黄色视频三级网站网址| 国产亚洲5aaaaa淫片| 国产精品无大码| 搡女人真爽免费视频火全软件| 国产国拍精品亚洲av在线观看| 一级毛片电影观看 | 一二三四中文在线观看免费高清| 亚洲欧美清纯卡通| 国产老妇伦熟女老妇高清| a级毛色黄片| 免费看av在线观看网站| 精品人妻一区二区三区麻豆| 日韩一区二区视频免费看| 亚洲国产日韩欧美精品在线观看| 中文字幕免费在线视频6| 成人亚洲精品av一区二区| 成人性生交大片免费视频hd| 麻豆av噜噜一区二区三区| 日本三级黄在线观看| 亚洲在线观看片| 国产亚洲精品av在线| 亚洲国产精品合色在线| 永久免费av网站大全| 日产精品乱码卡一卡2卡三| 久久精品国产自在天天线| 国产欧美另类精品又又久久亚洲欧美| 国产高清国产精品国产三级 | av在线亚洲专区| 国产精品一区二区在线观看99 | 91久久精品国产一区二区成人| 一区二区三区免费毛片| 99热6这里只有精品| 亚洲图色成人| 啦啦啦观看免费观看视频高清| 国产精品不卡视频一区二区| 黄色日韩在线| 日韩人妻高清精品专区| 国产不卡一卡二| АⅤ资源中文在线天堂| 亚洲内射少妇av| 毛片一级片免费看久久久久| 一级黄片播放器| 久久久精品大字幕| 女人久久www免费人成看片 | videossex国产| 国产精品一二三区在线看| 亚洲在线自拍视频| 久久久久国产网址| 中文字幕av成人在线电影| 国产精品,欧美在线| 国产黄色小视频在线观看| 亚洲人与动物交配视频| 精品久久久久久久久久久久久| 亚洲在久久综合| 亚洲精品亚洲一区二区| 美女国产视频在线观看| 国产黄片视频在线免费观看| 狂野欧美白嫩少妇大欣赏| 国产综合懂色| 亚洲欧美日韩东京热| 婷婷色麻豆天堂久久 | 亚洲人成网站在线播| 最近2019中文字幕mv第一页| 国产大屁股一区二区在线视频| 成人高潮视频无遮挡免费网站| 在线观看av片永久免费下载| 亚洲av免费在线观看| 美女内射精品一级片tv| 女人被狂操c到高潮| 国产在线男女| 国产免费福利视频在线观看| 黄片wwwwww| 国产亚洲av嫩草精品影院| 免费大片18禁| 天天躁日日操中文字幕| 又爽又黄无遮挡网站| 少妇的逼水好多| 国内精品美女久久久久久| 久久这里只有精品中国| 免费观看性生交大片5| 国产视频内射| a级一级毛片免费在线观看| 亚洲电影在线观看av| 精品久久久久久电影网 | 成人美女网站在线观看视频| av天堂中文字幕网| eeuss影院久久| 欧美性感艳星| 精品无人区乱码1区二区| 日韩一区二区视频免费看| 亚洲av日韩在线播放| 丰满人妻一区二区三区视频av| 18禁在线无遮挡免费观看视频| 91精品国产九色| 亚洲欧美成人精品一区二区| 两个人的视频大全免费| 免费电影在线观看免费观看| 久久精品久久精品一区二区三区| 久久精品夜色国产| 大又大粗又爽又黄少妇毛片口| 精品国产一区二区三区久久久樱花 | 午夜福利在线在线| 床上黄色一级片| 国产人妻一区二区三区在| 亚洲三级黄色毛片| 大话2 男鬼变身卡| 精品久久久久久电影网 | 亚洲精华国产精华液的使用体验| 亚洲av日韩在线播放| 色吧在线观看| 亚洲欧美清纯卡通| 天堂影院成人在线观看| 国产高清不卡午夜福利| 亚洲美女视频黄频| 午夜亚洲福利在线播放| 麻豆av噜噜一区二区三区| 国产午夜精品论理片| 亚洲欧美精品专区久久| 青春草亚洲视频在线观看| 少妇人妻精品综合一区二区| 黄色欧美视频在线观看| 国内精品美女久久久久久| 亚洲国产欧美在线一区| 1024手机看黄色片| 黄色欧美视频在线观看| 亚洲电影在线观看av| 国产 一区精品| 国产精品人妻久久久影院| 男女视频在线观看网站免费| 老司机福利观看| 成年版毛片免费区| 欧美性猛交黑人性爽| 亚洲av电影不卡..在线观看| 九九在线视频观看精品| 黄片wwwwww| videossex国产| 国产激情偷乱视频一区二区| 久久国产乱子免费精品| 美女内射精品一级片tv| 久久久久久久亚洲中文字幕| 只有这里有精品99| 男女视频在线观看网站免费| 日本一本二区三区精品| 亚洲精品久久久久久婷婷小说 | 人妻少妇偷人精品九色| 亚洲在久久综合| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 韩国av在线不卡| av在线亚洲专区| 久久这里只有精品中国| 亚洲四区av| 赤兔流量卡办理| 欧美日本亚洲视频在线播放| 一二三四中文在线观看免费高清| 天堂影院成人在线观看| 高清午夜精品一区二区三区| 久久人人爽人人爽人人片va| 精品人妻熟女av久视频| 亚洲性久久影院| 3wmmmm亚洲av在线观看| 一边摸一边抽搐一进一小说| 又爽又黄a免费视频| 亚洲第一区二区三区不卡| www.色视频.com| 国产黄色视频一区二区在线观看 | 97在线视频观看| 亚洲人成网站在线播| 成年女人看的毛片在线观看| 中文字幕熟女人妻在线| 嘟嘟电影网在线观看| 九九在线视频观看精品| 九九热线精品视视频播放| 久久久久久久国产电影| 国产成人精品久久久久久| 国产精品精品国产色婷婷| 18禁动态无遮挡网站| 亚洲国产高清在线一区二区三| 成年女人永久免费观看视频| 日本黄色片子视频| 亚洲成色77777| 丰满乱子伦码专区| 如何舔出高潮| 欧美日韩一区二区视频在线观看视频在线 | 国语自产精品视频在线第100页| 国产精品人妻久久久影院| 欧美色视频一区免费| 欧美人与善性xxx| 少妇人妻一区二区三区视频| 亚洲av电影在线观看一区二区三区 | 麻豆成人午夜福利视频| 日日摸夜夜添夜夜添av毛片| 村上凉子中文字幕在线| 丝袜美腿在线中文| 啦啦啦观看免费观看视频高清| 日本与韩国留学比较| 97热精品久久久久久| 天堂av国产一区二区熟女人妻| 精品久久久久久久久亚洲| 男人的好看免费观看在线视频| 欧美日本视频| 美女国产视频在线观看| 亚洲成人久久爱视频| 熟妇人妻久久中文字幕3abv| 日韩大片免费观看网站 | 精品久久久久久成人av| 两个人的视频大全免费| 在线观看美女被高潮喷水网站| 亚洲人成网站在线播| 中文天堂在线官网| 日本av手机在线免费观看| 午夜福利成人在线免费观看| 国产精品久久久久久久电影| 成人漫画全彩无遮挡| 身体一侧抽搐| 久久久久久国产a免费观看| 非洲黑人性xxxx精品又粗又长| 久久久久久久久久久免费av| 久久精品综合一区二区三区| 欧美成人午夜免费资源| 蜜臀久久99精品久久宅男| 丰满少妇做爰视频| 亚洲欧美成人精品一区二区| 爱豆传媒免费全集在线观看| 久久久国产成人精品二区| 成人毛片a级毛片在线播放| 91精品伊人久久大香线蕉| 日韩欧美在线乱码| 亚洲av免费在线观看| 特大巨黑吊av在线直播| av在线蜜桃| 99国产精品一区二区蜜桃av| 国产免费又黄又爽又色| 91av网一区二区| 久99久视频精品免费| 波野结衣二区三区在线| 亚洲精品国产成人久久av| 久久精品国产鲁丝片午夜精品| 男人舔奶头视频| 亚洲精品国产av成人精品| 色5月婷婷丁香| 国产精品人妻久久久影院| 国产精品久久久久久久久免| 国产伦一二天堂av在线观看| 国产午夜精品久久久久久一区二区三区| 国产免费视频播放在线视频 | 91在线精品国自产拍蜜月| 99热这里只有是精品50| 少妇人妻一区二区三区视频| 非洲黑人性xxxx精品又粗又长| 欧美+日韩+精品| АⅤ资源中文在线天堂| 亚洲国产精品久久男人天堂| 国产精品福利在线免费观看| av女优亚洲男人天堂| 成人高潮视频无遮挡免费网站| 一级毛片电影观看 | 伊人久久精品亚洲午夜| 亚洲av福利一区| 午夜精品国产一区二区电影 | 欧美性感艳星| 欧美97在线视频| 久久久久久久久大av| 欧美成人精品欧美一级黄| 男人舔奶头视频| 国产精品嫩草影院av在线观看| .国产精品久久| 久久精品久久精品一区二区三区| 少妇的逼水好多| av又黄又爽大尺度在线免费看 | 欧美日韩国产亚洲二区| 有码 亚洲区| 欧美一级a爱片免费观看看| 久久人人爽人人爽人人片va| 国产亚洲av片在线观看秒播厂 | av.在线天堂| 久久久久九九精品影院| 白带黄色成豆腐渣| 免费大片18禁| 久久亚洲国产成人精品v| 欧美一区二区国产精品久久精品| 亚洲人成网站高清观看| 国产精品国产三级国产av玫瑰| 午夜精品国产一区二区电影 | 成年女人永久免费观看视频| 中文字幕人妻熟人妻熟丝袜美| 亚洲精品日韩av片在线观看| 51国产日韩欧美| 人妻夜夜爽99麻豆av| 18禁裸乳无遮挡免费网站照片| 人妻制服诱惑在线中文字幕| 一级毛片电影观看 | 伦理电影大哥的女人| 国产精品精品国产色婷婷| 亚洲三级黄色毛片| av免费在线看不卡| 99热这里只有精品一区| 欧美日韩在线观看h| 国产麻豆成人av免费视频| 日本-黄色视频高清免费观看| av卡一久久| 黄色配什么色好看| 偷拍熟女少妇极品色| 中国美白少妇内射xxxbb| 综合色av麻豆| kizo精华| 日韩三级伦理在线观看| 精品久久久久久成人av| 婷婷色综合大香蕉| 亚洲精品456在线播放app| 亚洲激情五月婷婷啪啪| 毛片女人毛片| 国产熟女欧美一区二区| 国产精品久久视频播放| 成人高潮视频无遮挡免费网站| 偷拍熟女少妇极品色| 97超碰精品成人国产| 久久久久久国产a免费观看| 黄色欧美视频在线观看| 国产男人的电影天堂91| 国产日韩欧美在线精品| 国产精品一及| 黄色欧美视频在线观看| 亚洲18禁久久av| 欧美一级a爱片免费观看看| 九色成人免费人妻av| 波多野结衣巨乳人妻| 免费大片18禁| 久久久久久久久久成人| 日韩成人av中文字幕在线观看| 看免费成人av毛片| 69av精品久久久久久| 看十八女毛片水多多多| 亚洲aⅴ乱码一区二区在线播放| 日韩国内少妇激情av| 欧美一区二区亚洲| 日韩国内少妇激情av| 亚洲aⅴ乱码一区二区在线播放| 波野结衣二区三区在线| 国产精品熟女久久久久浪| 国产爱豆传媒在线观看| 成人性生交大片免费视频hd| 国产精品国产三级专区第一集| 免费在线观看成人毛片| 汤姆久久久久久久影院中文字幕 | 色噜噜av男人的天堂激情| 国产精品久久久久久久久免| 少妇人妻一区二区三区视频| 日本黄色片子视频| 欧美日韩在线观看h| 超碰97精品在线观看| 亚洲国产精品sss在线观看| 女人被狂操c到高潮| 久久国产乱子免费精品| 女的被弄到高潮叫床怎么办| 五月伊人婷婷丁香| 欧美极品一区二区三区四区| 久久精品夜夜夜夜夜久久蜜豆| 蜜桃久久精品国产亚洲av| www日本黄色视频网| 女的被弄到高潮叫床怎么办| 3wmmmm亚洲av在线观看| 99热这里只有精品一区| 婷婷六月久久综合丁香| 99久久成人亚洲精品观看| 国产成人免费观看mmmm| 日本一本二区三区精品| 亚洲av成人av| av专区在线播放| 亚洲最大成人av| 国产免费男女视频| 亚洲欧美日韩卡通动漫|