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

    面向OceanBase的存儲過程設(shè)計(jì)與實(shí)現(xiàn)

    2016-11-29 09:34:32祝君劉柏fl余晟雋宮學(xué)慶周敏奇
    關(guān)鍵詞:引擎語句架構(gòu)

    祝君,劉柏fl,余晟雋,宮學(xué)慶,周敏奇

    (華東師范大學(xué)數(shù)據(jù)科學(xué)與工程研究院,上海200062)

    面向OceanBase的存儲過程設(shè)計(jì)與實(shí)現(xiàn)

    祝君,劉柏fl,余晟雋,宮學(xué)慶,周敏奇

    (華東師范大學(xué)數(shù)據(jù)科學(xué)與工程研究院,上海200062)

    存儲過程是數(shù)據(jù)庫管理系統(tǒng)的一個(gè)重要特性,它是標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)的一個(gè)擴(kuò)展.OceanBase是一個(gè)新型的支持海量數(shù)據(jù)處理的分布式數(shù)據(jù)庫系統(tǒng),但現(xiàn)有OceanBase的開源版本不支持存儲過程功能,影響了該系統(tǒng)在企業(yè)和機(jī)構(gòu)中的推廣和應(yīng)用.本文在深度分析存儲過程原理以及OceanBase查詢處理策略的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了支持PL/SQL(Procedural Language/SQL)的存儲過程機(jī)制.

    存儲過程;SQL;OceanBase

    0 引言

    隨著大數(shù)據(jù)時(shí)代和互聯(lián)網(wǎng)時(shí)代的到來,信息量呈井噴式爆發(fā),傳統(tǒng)的集中式數(shù)據(jù)庫管理系統(tǒng)難以處理如此巨大的數(shù)據(jù).在集中式系統(tǒng)架構(gòu)下,盡管可以依據(jù)業(yè)務(wù)特點(diǎn)對數(shù)據(jù)庫進(jìn)行拆分,實(shí)現(xiàn)數(shù)據(jù)表的水平切分/垂直切分并存儲到不同的數(shù)據(jù)庫服務(wù)器上,但隨著業(yè)務(wù)和數(shù)據(jù)量不斷增長,需要不斷地增加服務(wù)器以實(shí)現(xiàn)更細(xì)粒度的數(shù)據(jù)表切分,這種方法需要大量的人工維護(hù)成本.因此很多企業(yè)將目光轉(zhuǎn)向了逐漸成熟的分布式數(shù)據(jù)庫系統(tǒng),并利用其良好的可擴(kuò)展性和容錯(cuò)性等來滿足存儲海量數(shù)據(jù)的應(yīng)用需求.近幾年,隨著分布式數(shù)據(jù)庫的快速發(fā)展,各種分布式數(shù)據(jù)庫如雨后春筍般出現(xiàn),如Bigtable[1]、Spanner[2]、VoltDB[3],以及阿里巴巴(Alibaba)的OceanBase[4]等.雖然這些系統(tǒng)多數(shù)擁有存儲和管理海量數(shù)據(jù)的能力,但是在數(shù)據(jù)一致性、事務(wù)處理能力、SQL[5]功能上,同傳統(tǒng)的關(guān)系數(shù)據(jù)庫系統(tǒng)相比還有差距,很難被直接應(yīng)用于銀行業(yè)務(wù)系統(tǒng)等傳統(tǒng)的大型信息系統(tǒng)中,制約了分布式數(shù)據(jù)庫在企業(yè)和機(jī)構(gòu)中的推廣和使用.但是越來越多的企業(yè)開始關(guān)注于增強(qiáng)分布式數(shù)據(jù)系統(tǒng)功能,如增加SQL支持、事務(wù)、二級索引、一致性等.

    OceanBase是Alibaba研發(fā)的關(guān)系型分布式數(shù)據(jù)庫,它實(shí)現(xiàn)了關(guān)系數(shù)據(jù)庫的重要特征,也支持SQL查詢;但是和主流的關(guān)系型數(shù)據(jù)庫系統(tǒng)PostgreSQL[6-7]、MySQL[8]等相比較,功能上還存在一些不足的地方,如不支持存儲過程[9]和游標(biāo)等.存儲過程在現(xiàn)代企業(yè)中應(yīng)用十分廣泛,大多數(shù)企業(yè)的業(yè)務(wù)邏輯都采用存儲過程實(shí)現(xiàn),而OceanBase作為關(guān)系型數(shù)據(jù)庫想要在企業(yè)和機(jī)構(gòu)中被廣泛應(yīng)用,就需要支持存儲過程,以B企業(yè)和機(jī)構(gòu)易于將存儲過程所寫的業(yè)務(wù)遷移到OceanBase數(shù)據(jù)庫系統(tǒng).

    本文通過深入分析主流的開源數(shù)據(jù)庫管理系統(tǒng)的存儲過程功能,對實(shí)現(xiàn)中的一些關(guān)鍵技術(shù)問題進(jìn)行研究,并結(jié)合OceanBase架構(gòu)和其現(xiàn)有的查詢引擎,提出一種適合OceanBase數(shù)據(jù)庫架構(gòu)的存儲過程設(shè)計(jì)和實(shí)現(xiàn)方案.本文安排如下:第1節(jié)介紹OceanBase架構(gòu)和存儲過程;第2節(jié)介紹OceanBase存儲過程機(jī)制;第3節(jié)介紹PL/SQL[10]引擎架構(gòu);第4節(jié)對OceanBase存儲過程進(jìn)行實(shí)驗(yàn);第5節(jié)總結(jié)全文.

    1 背景

    1.1 OceanBase概述

    OceanBase整機(jī)架構(gòu)[11]分為4個(gè)模塊:主控服務(wù)器RootServer;更新服務(wù)器Update-Server;基線數(shù)據(jù)服務(wù)器ChunkServer;合并服務(wù)器MergeServer.如圖1所示.

    圖1 OceanBase架構(gòu)Fig.1The architecture of OceanBase

    在OceanBase中,和客戶端直接連接的是MergeServer.客戶端通過MySQL(關(guān)于數(shù)據(jù)庫管理系統(tǒng))協(xié)議將SQL請求發(fā)送到MergeServer后,MergeServer首先解析MySQL協(xié)議,從中提取出用戶發(fā)送的SQL語句,接著通過MS-SQL模塊,使用Flex與Bison[12]進(jìn)行詞法解析和語法分析[13],生成語法樹[13];然后生成SQL語句的邏輯查詢計(jì)劃和物理查詢計(jì)劃;最后根據(jù)物理查詢計(jì)劃調(diào)用OceanBase內(nèi)部的各種操作符.MergeServer是OceanBase查詢請求的入口,負(fù)責(zé)對收到的SQL進(jìn)行處理和響應(yīng).

    1.2 PL/SQL和存儲過程簡介

    PL/SQL是Oracle數(shù)據(jù)庫對SQL語句的擴(kuò)展定義并實(shí)現(xiàn)的一種過程化SQL語言(Procedural Language/SQL),也是一種程序語言,在普通SQL語句的使用上增加了編程語言的特點(diǎn).PL/SQL引入多種數(shù)據(jù)類型、變量聲明、條件控制、循環(huán)結(jié)構(gòu)和子程序等過程語言要素來強(qiáng)化SQL語句的過程處理能力.所以PL/SQL就是把數(shù)據(jù)操作和查詢語句組織在PL/SQL代碼的過程性單元中,并通過邏輯判斷、循環(huán)等操作實(shí)現(xiàn)復(fù)雜的功能或者計(jì)算的程序語言.

    存儲過程是一段被命名后保存在數(shù)據(jù)庫服務(wù)器端的一段預(yù)先編譯的代碼.上層應(yīng)用給定存儲過程名稱和相應(yīng)參數(shù)后,解釋執(zhí)行預(yù)編譯的代碼,能有效減少上層應(yīng)用與數(shù)據(jù)庫交互的次數(shù)和數(shù)據(jù)傳輸量.

    2 OceanBase存儲過程機(jī)制設(shè)計(jì)

    2.1 OceanBase存儲過程架構(gòu)

    在OceanBase中為實(shí)現(xiàn)存儲過程,選擇使用PL/SQL作為存儲過程的宿主語言.因?yàn)镻L/SQL最為常用,用戶更習(xí)慣PL/SQL的編程方式.但OceanBase的原有架構(gòu)中, MergeServer只能對SQL語句進(jìn)行解析,不能解析存儲過程使用的PL/SQL語句.所以在原來的MergeServer架構(gòu)[14]中,增加PL/SQL引擎模塊來對存儲過程的PL/SQL語句進(jìn)行解析處理.增加PL/SQL引擎模塊后的MergeServer架構(gòu)如圖2所示.

    圖2 MergeServer架構(gòu)圖Fig.2The architecture of MergeServer

    增加了PL/SQL引擎模塊后,當(dāng)MergeServer收到存儲過程相關(guān)的PL/SQL語句后,會將收到的PL/SQL交給PL/SQL引擎處理.PL/SQL引擎[15]包括編譯器和解釋器兩個(gè)部分.編譯器負(fù)責(zé)對PL/SQL進(jìn)行編譯.解釋器負(fù)責(zé)解釋執(zhí)行[16]編譯器編譯后的中間代碼.

    2.2 存儲過程創(chuàng)建和存儲

    2.2.1 存儲過程創(chuàng)建

    存儲過程的創(chuàng)建可以說是存儲過程物理計(jì)劃樹[17]的生成過程.物理計(jì)劃樹的生成分為4個(gè)步驟:詞法解析;語法分析;邏輯計(jì)劃生成;物理計(jì)劃生成.存儲過程創(chuàng)建的流程如圖3所示.

    當(dāng)存儲過程語句發(fā)送到MergeServer后,PL/SQL引擎對存儲過程代碼進(jìn)行語法詞法解析,判斷是否有語法錯(cuò)誤,如果有錯(cuò)誤,則將予以報(bào)錯(cuò),否則將會生成一棵語法樹.語法樹生成后進(jìn)入到邏輯計(jì)劃生成部分,對存儲過程中的表、字段、屬性、變量的合法性進(jìn)行檢查[17],如果有錯(cuò)誤則提示錯(cuò)誤信息.最后進(jìn)入物理計(jì)劃生成階段,會先判斷存儲過程在系統(tǒng)表里面是否已經(jīng)定義過,如果存在相同名稱的存儲過程則提示用戶,否則將存儲過程源碼存入系統(tǒng)表all procedure里面,并把生成的物理執(zhí)行計(jì)劃存儲在數(shù)據(jù)庫服務(wù)端;然后返回創(chuàng)建成功的提示信息.在創(chuàng)建存儲過程的時(shí)候并不會解釋執(zhí)行生成的物理計(jì)劃,物理計(jì)劃只會在調(diào)用的時(shí)候才會被解釋執(zhí)行.

    圖3 存儲過程創(chuàng)建流程圖Fig.3The flowchart of stored procedure creating

    2.2.2 存儲過程的存儲

    存儲主要分為兩種方式:單源碼方式和源碼+預(yù)編譯方式.單源碼方式是指只在數(shù)據(jù)庫中保存存儲過程的源碼,而后者是在數(shù)據(jù)庫中保存了源碼后,并且也保存了預(yù)編譯生成的執(zhí)行單元.在OceanBase的存儲過程實(shí)現(xiàn)方案中存儲過程的存儲模式,采用和Oracle、PostgreSQL類似的方案,即源碼+中間代碼的存儲方案,不同的是在OceanBase中,中間代碼不是語法樹,而是物理計(jì)劃樹.

    在OceanBase中新增一張名為all procedure的系統(tǒng)表,用來保存存儲過程源碼. all procedure表的基本字段如表1所示.

    表1 all procedure表的字段Tab.1Schema ofall procedure

    在OceanBase中,客戶端連接到MergeServer的時(shí)候,系統(tǒng)會為該連接分配一個(gè)SESSION用來表示這次會話.在SESSION中建立一個(gè)緩存中間代碼的隊(duì)列,為了不過多占用內(nèi)存,中間代碼的緩存采用FIFO(First Input First Output)(先進(jìn)先出隊(duì)列)策略,如果當(dāng)前的SESSION中緩存的中間代碼過多,可將最早進(jìn)入緩存隊(duì)列的對象移除.

    2.3 存儲過程的執(zhí)行

    調(diào)用存儲過程的語句進(jìn)入到查詢處理器后,首先會通過PL/SQL引擎進(jìn)行詞法、語法解析,判斷是否存在語法錯(cuò)誤.然后根據(jù)解析出來的存儲過程名稱和參數(shù)在緩存隊(duì)列中進(jìn)行查找,當(dāng)函數(shù)簽名和調(diào)用參數(shù)一致時(shí)返回該存儲過程的物理執(zhí)行計(jì)劃樹;如果沒有在緩存隊(duì)列中找到物理執(zhí)行計(jì)劃樹,就到系統(tǒng)表all procedure中查找,查詢到記錄則將查詢到的存儲過程源碼使用PL/SQL引擎重新編譯生成物理計(jì)劃樹,否則提示存儲過程不存在或錯(cuò)誤.最后將物理計(jì)劃樹使用PL/SQL解釋器進(jìn)行解釋執(zhí)行.存儲過程執(zhí)行流程如圖4所示.

    圖4 存儲過程執(zhí)行流程圖Fig.4The flowchart of stored procedure execution

    存儲過程是沒有返回值的,但是可以通過INOUT和OUT類型的輸出參數(shù)來實(shí)現(xiàn).因此在執(zhí)行存儲過程前將INOUT和OUT類型的參數(shù)拷貝到運(yùn)行時(shí)狀態(tài)棧的最底層中,當(dāng)解釋執(zhí)行結(jié)束過后,將INOUT和OUT類型的參數(shù)拷貝到用戶的變量空間.

    3 OceanBase PL/SQL引擎設(shè)計(jì)與實(shí)現(xiàn)

    3.1 PL/SQL引擎架構(gòu)

    在OceanBase的MergeServer中沒有PL/SQL處理引擎,因此不能支持過程化語言.根據(jù)PL/SQL兼有過程式語言和SQL語句的特點(diǎn),在OceanBase PL/SQL引擎設(shè)計(jì)的時(shí)候,為了充分利用原有系統(tǒng)的SQL引擎,把過程式語句和SQL語句分開處理[18].

    如圖5所示,在對PL/SQL編譯執(zhí)行的時(shí)候,首先讀取PL/SQL語句塊,進(jìn)行編譯,在編譯的過程中如果是SQL語句,調(diào)用OceanBase的SQL引擎進(jìn)行編譯生成語法樹;如果是過程語句則由PL/SQL引擎來進(jìn)行編譯生成語法樹,然后將兩部分語法樹結(jié)合生成一棵語法樹.在PostgreSQL系統(tǒng)中,PL/pgSQL引擎只生成語法樹作為中間代碼,然后解釋器根據(jù)語法樹解釋執(zhí)行遇到SQL語句時(shí)調(diào)用系統(tǒng)提供的內(nèi)部接口進(jìn)行執(zhí)行.OceanBase PL/SQL引擎將中間代碼的層次從語法樹提升到物理計(jì)劃樹,物理計(jì)劃樹在解釋執(zhí)行的時(shí)候無需再次通過SQL編譯成物理計(jì)劃,提高了存儲過程中SQL語句的執(zhí)行速度.

    OceanBase PL/SQL引擎在對PL/SQL代碼編譯后,生成了一種物理計(jì)劃樹形式的中間代碼,這種代碼并不能直接執(zhí)行,需要一個(gè)解釋器來根據(jù)每個(gè)節(jié)點(diǎn)的類型進(jìn)行相應(yīng)的解釋執(zhí)行.據(jù)此可以將OceanBase PL/SQL引擎分為兩部分:編譯器和解釋器.在OceanBase的PL/SQL引擎架構(gòu)中,詞法分析器、語法分析器、邏輯計(jì)劃生成器、物理計(jì)劃生成器是屬于編譯器部分,解釋執(zhí)行器屬于解釋器部分.

    3.2 PL/SQL編譯器

    PL/SQL的編譯過程實(shí)際上就是語法樹和物理計(jì)劃樹的生成過程.語法樹的生成需要經(jīng)過詞法分析和語法分析兩個(gè)步驟,形成抽象語法樹結(jié)構(gòu)[16].

    圖5 PL/SQL引擎架構(gòu)Fig.5The architecture of PL/SQL engine

    詞法分析程序是從程序源碼中提取分析標(biāo)識符(常量、數(shù)學(xué)符號、括號、變量名和保留字等),以提供給后續(xù)的語法分析程序使用.語法分析程序的作用是對詞法分析后產(chǎn)生的標(biāo)識符進(jìn)行語法分析,判斷其是否符合語法,形成抽象語法樹結(jié)構(gòu).在實(shí)踐中,語法分析過程中可能包括多個(gè)任務(wù),比如將不同的詞法單元的信息收集到符號表[13]中、進(jìn)行類型檢查和其他類型的語義分析,以及生成中間代碼.圖6所示為IF節(jié)點(diǎn)的語法樹.

    圖6 IF語句語法樹結(jié)構(gòu)Fig.6The syntactic tree of IF statement

    OceanBase PL/SQL語句在生成了語法樹后,僅僅只能夠判斷PL/SQL的語法是否正確.所以構(gòu)建語法樹后還需要生成邏輯計(jì)劃,而邏輯計(jì)劃需要明確SQL語句中所涉及的表、字段和表達(dá)式等是否有效.PL/SQL語法樹在生成邏輯計(jì)劃和物理計(jì)劃的時(shí)候采用分治法:對于SQL語句則調(diào)用OceanBase的SQL引擎生成對應(yīng)的邏輯計(jì)劃和物理計(jì)劃,否則使用PL/SQL引擎生成邏輯計(jì)劃和物理計(jì)劃.

    3.3 PL/SQL解”器

    3.3.1 解釋執(zhí)行

    OceanBase PL/SQL引擎生成物理計(jì)劃樹表示的中間代碼后,并不能直接執(zhí)行.需要一個(gè)解釋器對生成的中間代碼進(jìn)行解釋執(zhí)行.

    在傳統(tǒng)數(shù)據(jù)庫的存儲過程的實(shí)現(xiàn)方案中,會區(qū)別對待控制流程語句和SQL語句,會將SQL語句交給現(xiàn)有的SQL引擎來執(zhí)行,這樣可以降低實(shí)現(xiàn)難度,但同時(shí)這會降低存儲過程的執(zhí)行效率.但是在OceanBase中,由于在生成中間代碼的時(shí)候已經(jīng)將其中的SQL語句生成為物理執(zhí)行計(jì)劃,因此在執(zhí)行SQL語句的時(shí)候無需對SQL再次編譯,這樣做的好處是在執(zhí)行WHILE和LOOP過程語句的時(shí)候減少SQL編譯時(shí)間.

    OceanBase PL/SQL解釋器的方案就是遍歷物理計(jì)劃樹,如圖7所示,從物理計(jì)劃樹的根節(jié)點(diǎn)開始,在遇到SQL語句的物理計(jì)劃的時(shí)候就直接交由OceanBase Q有的執(zhí)行引擎執(zhí)行該物理計(jì)劃,而遇到流程控制語句的時(shí)候,根據(jù)節(jié)點(diǎn)類型采用不用的算法進(jìn)行執(zhí)行,在執(zhí)行過程中如果對變量的操作部分由運(yùn)行時(shí)狀態(tài)完成、如果節(jié)點(diǎn)包含Routine Body的話,則繼續(xù)遞歸地去遍歷訪問這些節(jié)點(diǎn)直到結(jié)束.

    圖7 PL/SQL解釋器Fig.7The architecture of PL/SQL executor

    3.3.2 運(yùn)行時(shí)狀態(tài)

    由于解釋器在解釋執(zhí)行存儲過程中需要獲取聲明變量的類型和值,為此需要為解釋器維護(hù)一個(gè)運(yùn)行時(shí)狀態(tài)[13].運(yùn)行時(shí)狀態(tài)包括一個(gè)唯一標(biāo)識符和一個(gè)符號表:唯一標(biāo)識符用來表示是否執(zhí)行中有異常;符號表用來存儲變量信息.在OceanBase中系統(tǒng)變量和用戶變量都存儲在Session里,所以在設(shè)計(jì)運(yùn)行時(shí)狀態(tài)的時(shí)候需要考慮用戶的自定義變量和運(yùn)行時(shí)變量的重名問題.在OceanBase中可以通過給運(yùn)行時(shí)變量名添加前綴的方式來區(qū)別用戶變量.我們的方案是隨機(jī)16位字符作為運(yùn)行時(shí)變量名的前綴,這樣可以盡量防止變量名沖突.

    PL/SQL中語句塊是可以相互嵌套的,變量可以在不同的語句塊中聲明,但是在相同域內(nèi)不能重名.為了實(shí)現(xiàn)對變量的作用域控制,符號表的數(shù)據(jù)結(jié)構(gòu)為一個(gè)棧,每一個(gè)棧元素是一個(gè)Hash表,Hash表里通過變量名來獲取或設(shè)置變量的值.每進(jìn)入一個(gè)新的語句塊就增加一個(gè)Hash表入棧,當(dāng)前層次的語句塊可以訪問棧頂?shù)綏5偷乃性氐臅r(shí)候以及當(dāng)一個(gè)語句塊結(jié)束的時(shí)候,棧頂元素出棧.如圖8所示.

    圖8 運(yùn)行時(shí)狀態(tài)堆棧Fig.8Runtime stack

    當(dāng)定義一個(gè)變量時(shí),搜索方向?yàn)閺漠?dāng)前層開始往棧底搜索.如果在搜索過程中沒有找到同名變量,則可以允許聲明該變量,否則提示變量已聲明.同理在訪問變量和變量賦值的時(shí)候也是按照自頂向下的順序進(jìn)行遍歷查找.

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

    4.1 實(shí)驗(yàn)環(huán)境

    實(shí)驗(yàn)中把OceanBase數(shù)據(jù)庫的RootServer、UpdateServer、ChunkServer和MergeServer都部署在同一臺服務(wù)器上,客戶端用來運(yùn)行測試程序.服務(wù)器的配置如下:CPU E5606 2.13 GHz;132 GB內(nèi)存;2TB/7500轉(zhuǎn)硬盤;CentOS release 6.5系統(tǒng).客戶端的配置為:CPU E5-1603 2.80 GHz;32 GB內(nèi)存;1TB/7500轉(zhuǎn)硬盤;Windows7 64位.

    4.2 實(shí)驗(yàn)過程

    本測試主要采用客戶機(jī)/服務(wù)器模式下,在客戶端使用JDBC調(diào)用存儲過程和完全通過JDBC完成數(shù)據(jù)庫DML語句操作的性能對比.實(shí)驗(yàn)中建立1張TEST表,建表語句為

    步驟為,在數(shù)據(jù)庫中建立名為TEST且有1個(gè)參數(shù)為int類型的存儲過程.相應(yīng)的創(chuàng)建語句為

    CREATE PROCEDURE TEST(X INT)BEGIN WHILE X>0 THEN SET X=X-1; INSERT INTO TEST VALUES(X,1,'TEST',123.456,'TEST');END WHILE;END;.

    分別采用JDBC調(diào)用存儲過程和循環(huán)使用JDBC調(diào)用數(shù)據(jù)庫完成多對TEST表的增刪、改查操作,通過參數(shù)控制存儲過程執(zhí)行的循環(huán)次數(shù).

    4.3 實(shí)驗(yàn)結(jié)果分析

    通過存儲過程(Stored Procedure)和JDBC(Jave Data Base Connectivity)(Java數(shù)據(jù)庫連接),完成對TEST表從1 000-10 000條記錄的插入、更新、刪除、查詢等操作.所用的時(shí)間如圖9所示,橫軸表示SQL和存儲過程的執(zhí)行次數(shù),縱軸表示執(zhí)行耗時(shí).

    圖9 JDBC與存儲過程SQL性能對比Fig.9SQL performance comparison JDBC with stored procedure

    由圖9的數(shù)據(jù)可知,使用存儲過程和JDBC執(zhí)行查詢操作的耗時(shí)和執(zhí)行次數(shù)是呈線性增長的,隨著執(zhí)行次數(shù)的增加,執(zhí)行時(shí)間也線性增加.而且存儲過程的執(zhí)行時(shí)間明顯小于JDBC的執(zhí)行時(shí)間,其性能大約是JDBC的3倍.之所以有這樣的結(jié)果,主要是使用存儲過程可以帶來一些優(yōu)勢,例如減少了網(wǎng)絡(luò)上數(shù)據(jù)傳遞的通信量和通信的次數(shù)、提高了事務(wù)執(zhí)行的速度、降低了事務(wù)響應(yīng)應(yīng)時(shí)間、減少了SQL語句編譯的時(shí)間,以及不用每次都對SQL進(jìn)行語法解析、邏輯計(jì)劃生成和物理計(jì)劃生成等.

    5 總結(jié)與展望

    由于OceanBase發(fā)布的開源版本沒有考慮對存儲過程的支持,影響了其在企業(yè)和機(jī)構(gòu)的推廣使用.存儲過程的實(shí)現(xiàn)取決于數(shù)據(jù)庫系統(tǒng)的架構(gòu)和實(shí)現(xiàn)方案.本文基于OceanBase架構(gòu)的特點(diǎn)及開源數(shù)據(jù)庫存儲過程的實(shí)現(xiàn)方案,設(shè)計(jì)并實(shí)現(xiàn)了OceanBase的存儲過程功能:以增新增語法結(jié)構(gòu)為目標(biāo),增加了PL/SQL解析引擎;選擇編譯流程控制語句及SQL語句的實(shí)現(xiàn)方案,減少了OceanBase因存儲過程額外編譯SQL語句的時(shí)間;在實(shí)現(xiàn)過程中解決了面向過程的流程控制語句與面向集合的SQL語句的統(tǒng)一處理;解釋了執(zhí)行存儲過程時(shí)的狀態(tài)維護(hù)以及運(yùn)行時(shí)變量與用戶變量的區(qū)分等難點(diǎn).

    實(shí)驗(yàn)表明,存儲過程能夠減少客戶端與數(shù)據(jù)庫服務(wù)器的通信量,并通過緩存生成的物理計(jì)劃樹提高執(zhí)行性能.但是還有一些不完善的地方,如異常處理機(jī)制和重載存儲過程都還未能實(shí)現(xiàn),在以后的工作中將對這兩個(gè)問題進(jìn)行研究.

    [1]CHANG F,DEAN J,GHEMAWAT S,et al.Bigtable:A distributed storage system for structured data [C]//Proceedings of the 7th Symposium on Operating Systems Design and Implementation(OSDI).2006:205-218.

    [2]CORBETT J C,DEAN J,EPSTEIN M,et al.Spanner:Google’s globally distributed database[J].ACM Transactions on Computer Systems,2013,31(3):251-264.

    [3]STONEBRAKER M,WEISBERG A.The voltDB main memory DBMS[J].IEEE Data Eng Bull,2013,36(2): 21-27.

    [4]OceanBase[EB/OL].[2016-03-01].https://github.com/alibaba/oceanbase/.

    [5]HURSCH C J,HURSCH J L.SQL:The Structured Query Language[M].[S.l.]:TAB books Inc,1988.

    [6]PL/pgSQL[EB/OL].[2016-03-02].http://www.postgresql.org/docs/8.3/static/plpgsql.html.

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

    [8]MySQL[EB/OL].[2016-03-02].http://www.mysql.com/.

    [9]Stored Procedure[EB/OL].[2016-03-02].http://en.wikipedia.org/wiki/Stored procedure.

    [10]URMAN S.Oracle9i PL/SQL Programming[M].北京:機(jī)械工業(yè)出版社,2002.

    [11]楊傳輝.大規(guī)模分布式存儲系統(tǒng)原理解析和架構(gòu)實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2013.

    [12]LEVINE J,JOHN L.Flex&Bison[M].南京:東南大學(xué)出版社,2010.

    [13]AHO A V,SETHI R,ULLMAN J D.Compilers:Principles,techniques,and tools[M].Boston:Addison-Wesley Publishing Company,1986.

    [14]陽振坤.OceanBase關(guān)系數(shù)據(jù)庫架構(gòu)[J].華東師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2014(5):141-148+163.

    [15]高朝瑞.GKD-Base PL/SQL存儲過程和包的研究與實(shí)現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),2004.

    [16]汪琦.基于解釋器的數(shù)據(jù)庫存儲過程研究[D].武漢:華中科技大學(xué),2007.

    [17]GARCIA-MOLINA H,ULLMAN J D,WIDOM J.數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)[M].楊冬青,吳愈青,包小源,譯.2版.北京:機(jī)械工業(yè)出版社,2010.

    [18]朱濤,周敏奇,張召.面向OceanBase的存儲過程實(shí)現(xiàn)技術(shù)研究[J].華東師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2014(5):281-289.

    (責(zé)任編輯:李藝)

    Designs and implementations of stored procedure in OceanBase

    ZHU Jun,LIU Bai-zhong,YU Sheng-jun,GONG Xue-qing,ZHOU Min-qi
    (Institute for Data Science and Engineering,East China Normal University, Shanghai200062,China)

    As an extension of standard SQL(Structured Query Language),the stored procedure is an important feature in modern databases.OceanBase is a new type of distributed database system which supports massive data processing,but the open-sourced version OceanBase does not support stored procedure,which influences its adoption in enterprises.In this paper,we analyze the principle of stored procedure and the query processing mechinism of OceanBase in detail.Then,the complete design and implementation of stored procedure which supports PL/SQL are presented.

    stored procedure;SQL;OceanBase

    TP392

    A

    10.3969/j.issn.1000-5641.2016.05.016

    1000-5641(2016)05-0144-09

    2016-05

    國家自然科學(xué)基金(61332006);國家863計(jì)劃項(xiàng)目(2015AA015307)

    祝君,男,碩士研究生,研究方向?yàn)榉植际綌?shù)據(jù)庫.E-mail:zhujunxxxxx@163.com.

    周敏奇,男,副教授,碩士生導(dǎo)師,研究方向?yàn)閮?nèi)存數(shù)據(jù)庫.E-mail:mqzhou@sei.ecnu.edu.cn.

    猜你喜歡
    引擎語句架構(gòu)
    基于FPGA的RNN硬件加速架構(gòu)
    功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
    汽車工程(2021年12期)2021-03-08 02:34:30
    重點(diǎn):語句銜接
    精彩語句
    藍(lán)谷: “涉藍(lán)”新引擎
    商周刊(2017年22期)2017-11-09 05:08:31
    LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
    無形的引擎
    河南電力(2015年5期)2015-06-08 06:01:46
    一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
    基于Cocos2d引擎的PuzzleGame開發(fā)
    如何搞定語句銜接題
    語文知識(2014年4期)2014-02-28 21:59:52
    永久免费av网站大全| 老熟女久久久| 国产激情久久老熟女| 免费高清在线观看视频在线观看| 久久久国产精品麻豆| 久久人人爽人人片av| 欧美日韩国产mv在线观看视频| 人人妻人人澡人人看| 亚洲欧洲国产日韩| 精品午夜福利在线看| 美女主播在线视频| 欧美日韩成人在线一区二区| 欧美日韩一区二区视频在线观看视频在线| 国产成人精品福利久久| 伦理电影大哥的女人| 欧美日韩一区二区视频在线观看视频在线| 视频在线观看一区二区三区| 在线天堂最新版资源| 亚洲成av片中文字幕在线观看 | 欧美性感艳星| 亚洲欧洲国产日韩| 国产精品国产三级国产av玫瑰| 大片电影免费在线观看免费| 国产一区二区在线观看日韩| 免费av不卡在线播放| 大陆偷拍与自拍| 日韩制服丝袜自拍偷拍| 日本午夜av视频| av又黄又爽大尺度在线免费看| 青春草亚洲视频在线观看| 精品国产国语对白av| 久久久久精品性色| 少妇熟女欧美另类| 18禁动态无遮挡网站| 91精品三级在线观看| 日产精品乱码卡一卡2卡三| 国产亚洲午夜精品一区二区久久| 日韩 亚洲 欧美在线| 精品一区二区三卡| 国产成人精品无人区| 亚洲一级一片aⅴ在线观看| 亚洲高清免费不卡视频| 成年av动漫网址| 国产探花极品一区二区| 看非洲黑人一级黄片| 久久精品久久精品一区二区三区| av线在线观看网站| 免费高清在线观看日韩| 亚洲精品乱久久久久久| 五月天丁香电影| 欧美精品高潮呻吟av久久| 九九在线视频观看精品| 久久久久久伊人网av| 嫩草影院入口| 亚洲少妇的诱惑av| 制服丝袜香蕉在线| 一级毛片电影观看| 婷婷色av中文字幕| 九草在线视频观看| 日本vs欧美在线观看视频| 卡戴珊不雅视频在线播放| 国产日韩欧美视频二区| 国产av一区二区精品久久| 人成视频在线观看免费观看| 伦理电影免费视频| 亚洲精品成人av观看孕妇| av在线app专区| 亚洲精品乱久久久久久| 男人操女人黄网站| 久久久久久久亚洲中文字幕| 久久久久久人妻| 少妇的逼水好多| 国产成人精品福利久久| 日本与韩国留学比较| av片东京热男人的天堂| xxxhd国产人妻xxx| 免费黄色在线免费观看| 婷婷色av中文字幕| 宅男免费午夜| 国产有黄有色有爽视频| av免费观看日本| 国产激情久久老熟女| 精品久久久精品久久久| 三级国产精品片| 91成人精品电影| 另类亚洲欧美激情| 国产不卡av网站在线观看| 国产探花极品一区二区| 大香蕉久久网| 国产福利在线免费观看视频| 多毛熟女@视频| 人妻少妇偷人精品九色| 亚洲精品美女久久久久99蜜臀 | 免费黄色在线免费观看| 国产成人精品福利久久| 亚洲综合色惰| 国产精品久久久久成人av| 又黄又爽又刺激的免费视频.| 免费女性裸体啪啪无遮挡网站| 亚洲综合色惰| 一二三四在线观看免费中文在 | 久久久久视频综合| 五月天丁香电影| 人妻 亚洲 视频| 日韩av在线免费看完整版不卡| 制服人妻中文乱码| 亚洲国产精品国产精品| 成人毛片a级毛片在线播放| 黑人猛操日本美女一级片| 国产 精品1| 国产不卡av网站在线观看| 国产精品无大码| 在线观看免费高清a一片| 高清在线视频一区二区三区| a级毛片在线看网站| 亚洲精品国产色婷婷电影| 韩国av在线不卡| 亚洲成av片中文字幕在线观看 | 欧美精品国产亚洲| 国产一级毛片在线| 精品熟女少妇av免费看| 精品第一国产精品| 女的被弄到高潮叫床怎么办| av.在线天堂| 夫妻午夜视频| 在线亚洲精品国产二区图片欧美| 国产免费一级a男人的天堂| 国产精品欧美亚洲77777| 韩国av在线不卡| 亚洲国产日韩一区二区| 国产精品人妻久久久影院| 9热在线视频观看99| 久久毛片免费看一区二区三区| 超色免费av| 免费观看性生交大片5| 亚洲av在线观看美女高潮| 国产免费福利视频在线观看| 久久综合国产亚洲精品| av黄色大香蕉| 男女下面插进去视频免费观看 | 亚洲中文av在线| 亚洲成国产人片在线观看| 国产 精品1| 在线精品无人区一区二区三| 日本vs欧美在线观看视频| 国产老妇伦熟女老妇高清| 熟女av电影| 亚洲av成人精品一二三区| 午夜福利影视在线免费观看| 宅男免费午夜| 国产极品粉嫩免费观看在线| 国产精品一区www在线观看| 欧美日韩成人在线一区二区| 大片免费播放器 马上看| 精品人妻一区二区三区麻豆| 蜜臀久久99精品久久宅男| 国产av国产精品国产| 国产日韩欧美亚洲二区| 欧美亚洲 丝袜 人妻 在线| 久久国产亚洲av麻豆专区| 男女午夜视频在线观看 | 中文字幕制服av| 国产av码专区亚洲av| 色哟哟·www| 啦啦啦啦在线视频资源| 成年美女黄网站色视频大全免费| 国产综合精华液| 精品人妻一区二区三区麻豆| av播播在线观看一区| 国产精品久久久久久av不卡| 亚洲人成网站在线观看播放| 十分钟在线观看高清视频www| a 毛片基地| 欧美+日韩+精品| 精品一区二区免费观看| a级毛色黄片| 看十八女毛片水多多多| 成人18禁高潮啪啪吃奶动态图| 久久人人97超碰香蕉20202| 国产免费福利视频在线观看| 久久韩国三级中文字幕| 免费看不卡的av| 免费在线观看黄色视频的| av不卡在线播放| 18+在线观看网站| 久久这里只有精品19| 欧美精品亚洲一区二区| 久久久久久久久久人人人人人人| 黑人欧美特级aaaaaa片| 精品视频人人做人人爽| 亚洲美女视频黄频| 麻豆精品久久久久久蜜桃| 看十八女毛片水多多多| 国产日韩一区二区三区精品不卡| 久久久a久久爽久久v久久| freevideosex欧美| 国产亚洲精品久久久com| 蜜桃在线观看..| 久久精品久久久久久噜噜老黄| 欧美 亚洲 国产 日韩一| 宅男免费午夜| 七月丁香在线播放| 久久久久久久大尺度免费视频| 欧美日韩一区二区视频在线观看视频在线| 一区二区三区四区激情视频| 成人午夜精彩视频在线观看| 女人精品久久久久毛片| 999精品在线视频| 国产精品久久久久久久电影| 黑人欧美特级aaaaaa片| 日韩电影二区| 成人国产av品久久久| 两个人看的免费小视频| 日本欧美视频一区| 69精品国产乱码久久久| 一二三四在线观看免费中文在 | 天美传媒精品一区二区| 久久精品熟女亚洲av麻豆精品| 国产一区二区三区av在线| 亚洲精品国产av成人精品| 国产不卡av网站在线观看| 亚洲综合色惰| 三上悠亚av全集在线观看| 满18在线观看网站| 好男人视频免费观看在线| 亚洲精华国产精华液的使用体验| 欧美人与性动交α欧美精品济南到 | 精品国产一区二区三区久久久樱花| 十八禁网站网址无遮挡| 精品久久久久久电影网| 热re99久久精品国产66热6| 久久人妻熟女aⅴ| 久久人人爽av亚洲精品天堂| 一区二区日韩欧美中文字幕 | 麻豆乱淫一区二区| 国产免费福利视频在线观看| 久久精品国产综合久久久 | 在线观看免费高清a一片| 少妇的逼水好多| 美女国产视频在线观看| 欧美 日韩 精品 国产| 高清黄色对白视频在线免费看| 综合色丁香网| 赤兔流量卡办理| 菩萨蛮人人尽说江南好唐韦庄| 99热这里只有是精品在线观看| 插逼视频在线观看| 99久久综合免费| 国产精品不卡视频一区二区| 777米奇影视久久| 成年av动漫网址| 日产精品乱码卡一卡2卡三| 又黄又粗又硬又大视频| 色94色欧美一区二区| 青春草亚洲视频在线观看| 国产又爽黄色视频| 精品一区二区免费观看| 久久久久久人妻| 欧美亚洲 丝袜 人妻 在线| av电影中文网址| 久久久久精品人妻al黑| 97在线视频观看| 黄色视频在线播放观看不卡| videosex国产| 色视频在线一区二区三区| 欧美 日韩 精品 国产| 免费观看av网站的网址| 午夜老司机福利剧场| 国产探花极品一区二区| 9色porny在线观看| 久久毛片免费看一区二区三区| 国产精品国产三级国产av玫瑰| 飞空精品影院首页| 亚洲色图 男人天堂 中文字幕 | 国产av精品麻豆| 国产综合精华液| 久热这里只有精品99| 99热网站在线观看| 亚洲精品国产av蜜桃| 婷婷色麻豆天堂久久| 国产亚洲精品久久久com| 看十八女毛片水多多多| 国产av国产精品国产| 亚洲精品一二三| 又粗又硬又长又爽又黄的视频| 内地一区二区视频在线| 日本午夜av视频| 一边摸一边做爽爽视频免费| 亚洲一区二区三区欧美精品| 欧美xxxx性猛交bbbb| 国产精品久久久久久久电影| 最后的刺客免费高清国语| 国产一区二区三区综合在线观看 | 欧美激情极品国产一区二区三区 | 90打野战视频偷拍视频| 青青草视频在线视频观看| 成年女人在线观看亚洲视频| 777米奇影视久久| 精品人妻一区二区三区麻豆| 日本vs欧美在线观看视频| 久热久热在线精品观看| 一区在线观看完整版| 亚洲人与动物交配视频| 男的添女的下面高潮视频| av国产精品久久久久影院| 精品一品国产午夜福利视频| xxx大片免费视频| 亚洲少妇的诱惑av| 国产成人91sexporn| 国产精品久久久久久久久免| 亚洲美女黄色视频免费看| 水蜜桃什么品种好| 成人毛片60女人毛片免费| 咕卡用的链子| 老司机影院毛片| 最近中文字幕高清免费大全6| 亚洲精华国产精华液的使用体验| 国产片内射在线| 巨乳人妻的诱惑在线观看| 女人精品久久久久毛片| 日日啪夜夜爽| 十分钟在线观看高清视频www| 久久人人97超碰香蕉20202| 午夜av观看不卡| 青春草国产在线视频| 日韩人妻精品一区2区三区| 2021少妇久久久久久久久久久| 亚洲成人av在线免费| 一区二区三区四区激情视频| 国产一区二区激情短视频 | 飞空精品影院首页| 69精品国产乱码久久久| 中文字幕制服av| 成人黄色视频免费在线看| 99热全是精品| 国产精品成人在线| 欧美3d第一页| 中文欧美无线码| 亚洲五月色婷婷综合| 国产精品 国内视频| 99久国产av精品国产电影| 香蕉丝袜av| 亚洲高清免费不卡视频| 亚洲成人av在线免费| 亚洲成人手机| 国产av精品麻豆| videossex国产| av有码第一页| 久久午夜福利片| 女性生殖器流出的白浆| 王馨瑶露胸无遮挡在线观看| 久久国产精品大桥未久av| 日日爽夜夜爽网站| 国产精品一区二区在线观看99| 在线观看美女被高潮喷水网站| kizo精华| 午夜免费鲁丝| 成年人免费黄色播放视频| 中国国产av一级| av视频免费观看在线观看| 国国产精品蜜臀av免费| 亚洲人成网站在线观看播放| 亚洲国产精品一区三区| 十八禁网站网址无遮挡| 在线观看免费高清a一片| 五月开心婷婷网| 免费观看性生交大片5| 国产一区二区三区综合在线观看 | 亚洲第一区二区三区不卡| 精品久久久精品久久久| 国产免费福利视频在线观看| 国产 精品1| a级毛片在线看网站| 国产黄色视频一区二区在线观看| 男女边摸边吃奶| 国产成人aa在线观看| 亚洲精品乱码久久久久久按摩| 下体分泌物呈黄色| 汤姆久久久久久久影院中文字幕| 欧美3d第一页| 又大又黄又爽视频免费| av线在线观看网站| 99久久中文字幕三级久久日本| 久久久国产欧美日韩av| xxx大片免费视频| 亚洲三级黄色毛片| 国产精品欧美亚洲77777| 少妇的逼水好多| av天堂久久9| 国产毛片在线视频| 日本av手机在线免费观看| 精品少妇黑人巨大在线播放| 亚洲,一卡二卡三卡| 岛国毛片在线播放| 王馨瑶露胸无遮挡在线观看| 午夜福利在线观看免费完整高清在| 中文字幕精品免费在线观看视频 | 麻豆精品久久久久久蜜桃| 街头女战士在线观看网站| 在线观看www视频免费| 亚洲熟女精品中文字幕| 老熟女久久久| 日韩中文字幕视频在线看片| 亚洲丝袜综合中文字幕| 欧美精品av麻豆av| 尾随美女入室| 国产成人免费无遮挡视频| 亚洲av电影在线进入| 亚洲成人手机| 大话2 男鬼变身卡| 国产黄色视频一区二区在线观看| 街头女战士在线观看网站| 婷婷色av中文字幕| 亚洲国产av新网站| 久久国产精品男人的天堂亚洲 | 久久精品国产亚洲av涩爱| 亚洲欧美日韩卡通动漫| 久久国产精品大桥未久av| 日韩免费高清中文字幕av| 免费女性裸体啪啪无遮挡网站| 中文乱码字字幕精品一区二区三区| 天天躁夜夜躁狠狠久久av| 久久久久国产精品人妻一区二区| 久久99蜜桃精品久久| 国产成人欧美| 国产麻豆69| 新久久久久国产一级毛片| 中国三级夫妇交换| 考比视频在线观看| 国产成人av激情在线播放| 国产精品.久久久| av电影中文网址| 边亲边吃奶的免费视频| 51国产日韩欧美| 两性夫妻黄色片 | 在线观看免费日韩欧美大片| 18禁动态无遮挡网站| 色婷婷av一区二区三区视频| 国产xxxxx性猛交| 男女高潮啪啪啪动态图| 日韩,欧美,国产一区二区三区| 91精品国产国语对白视频| 在线天堂最新版资源| 曰老女人黄片| 91aial.com中文字幕在线观看| 男人舔女人的私密视频| 成人国语在线视频| 亚洲国产看品久久| 丰满迷人的少妇在线观看| 国产成人精品福利久久| 久久国内精品自在自线图片| 亚洲精品久久久久久婷婷小说| 亚洲av综合色区一区| 亚洲av成人精品一二三区| 国产精品麻豆人妻色哟哟久久| 国产精品欧美亚洲77777| 亚洲,欧美,日韩| 久久 成人 亚洲| 99国产综合亚洲精品| 国产精品久久久久久精品电影小说| 午夜日本视频在线| 国产精品蜜桃在线观看| 桃花免费在线播放| 赤兔流量卡办理| 啦啦啦中文免费视频观看日本| 精品国产一区二区三区久久久樱花| 美女国产高潮福利片在线看| 91aial.com中文字幕在线观看| 亚洲图色成人| 一级片'在线观看视频| 中国美白少妇内射xxxbb| 一区二区三区四区激情视频| 最近最新中文字幕免费大全7| 国产色婷婷99| 人人澡人人妻人| 女性生殖器流出的白浆| 女性被躁到高潮视频| 亚洲精品日韩在线中文字幕| 久久久久久人人人人人| 国产精品人妻久久久影院| 国产成人午夜福利电影在线观看| 午夜福利视频精品| 边亲边吃奶的免费视频| 国产精品久久久久久久久免| 久久久久视频综合| 久久av网站| 免费观看无遮挡的男女| 香蕉丝袜av| 99热全是精品| 极品人妻少妇av视频| h视频一区二区三区| 青青草视频在线视频观看| videosex国产| 国产av国产精品国产| 一级毛片黄色毛片免费观看视频| 人妻人人澡人人爽人人| 亚洲精品久久久久久婷婷小说| 女人久久www免费人成看片| 丰满少妇做爰视频| 日韩人妻精品一区2区三区| 亚洲国产欧美日韩在线播放| 国产精品人妻久久久影院| 欧美激情 高清一区二区三区| 精品少妇内射三级| 久久99一区二区三区| 超碰97精品在线观看| 亚洲综合色惰| 日韩在线高清观看一区二区三区| 精品国产国语对白av| 日韩一本色道免费dvd| 午夜精品国产一区二区电影| 亚洲国产欧美在线一区| 91精品三级在线观看| 欧美人与性动交α欧美软件 | 成年av动漫网址| 一边亲一边摸免费视频| 十八禁网站网址无遮挡| 中文字幕精品免费在线观看视频 | 久久精品国产鲁丝片午夜精品| 多毛熟女@视频| 亚洲中文av在线| 亚洲欧美中文字幕日韩二区| 日韩伦理黄色片| 国产色婷婷99| 久久97久久精品| 国产免费一级a男人的天堂| 国产一级毛片在线| 中文精品一卡2卡3卡4更新| 精品少妇黑人巨大在线播放| 国产女主播在线喷水免费视频网站| 赤兔流量卡办理| 高清视频免费观看一区二区| 美女国产视频在线观看| 春色校园在线视频观看| 大陆偷拍与自拍| 人妻人人澡人人爽人人| 亚洲图色成人| 国产一区二区在线观看av| 国产精品久久久久久精品古装| 香蕉丝袜av| 久久青草综合色| 亚洲,欧美精品.| 久久人人爽av亚洲精品天堂| 精品一品国产午夜福利视频| 成人国产av品久久久| av视频免费观看在线观看| 日本猛色少妇xxxxx猛交久久| 国产高清三级在线| 亚洲精品自拍成人| 亚洲四区av| 夫妻性生交免费视频一级片| 高清不卡的av网站| 国产探花极品一区二区| 青春草亚洲视频在线观看| 午夜福利乱码中文字幕| √禁漫天堂资源中文www| 久久婷婷青草| 国产精品三级大全| 亚洲欧美色中文字幕在线| 如日韩欧美国产精品一区二区三区| 一本久久精品| 国产成人精品在线电影| www.色视频.com| 国产成人欧美| 91国产中文字幕| 夜夜骑夜夜射夜夜干| 久久婷婷青草| 桃花免费在线播放| 曰老女人黄片| 最近中文字幕2019免费版| 国产成人免费无遮挡视频| 久久99一区二区三区| 飞空精品影院首页| 高清av免费在线| 欧美激情极品国产一区二区三区 | 日本免费在线观看一区| 青春草国产在线视频| 我的女老师完整版在线观看| 亚洲精华国产精华液的使用体验| 成人无遮挡网站| 午夜日本视频在线| 国产精品久久久久久久久免| 久久久国产一区二区| 欧美日本中文国产一区发布| 男人爽女人下面视频在线观看| 男人操女人黄网站| 国产xxxxx性猛交| 黄片播放在线免费| 边亲边吃奶的免费视频| 18禁观看日本| av一本久久久久| 色网站视频免费| 欧美亚洲日本最大视频资源| 99久久中文字幕三级久久日本| 深夜精品福利| 久久午夜福利片| 日产精品乱码卡一卡2卡三| 91成人精品电影| 欧美性感艳星| 天堂中文最新版在线下载| 久热久热在线精品观看| 免费久久久久久久精品成人欧美视频 | 国产精品无大码| 久久人人97超碰香蕉20202| 欧美精品国产亚洲| 伦理电影大哥的女人| 亚洲国产色片| 一区二区av电影网| 日韩成人伦理影院| 国内精品宾馆在线| 国产一区二区在线观看日韩| 80岁老熟妇乱子伦牲交| 久久午夜福利片| av免费观看日本| 一区二区日韩欧美中文字幕 |