久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

全面解析IBM DB2 9中的查詢優化新特性

瀏覽:78日期:2023-11-09 14:39:40
簡介

大多數主流關系數據庫管理系統,例如 IBM DB2、Oracle 和 Microsoft® SQL Server,都依賴于基于成本的優化器設計,來在數據庫服務器環境中的一組經常變化的條件(包括變化的查詢特征和變化的數據)的影響下,從很多可能的計劃中選擇一個最佳 SQL 執行計劃。具體而言,DB2 SQL 優化決定受系統配置(I/O 存儲特征、CPU 并行性和速度、緩沖池和排序堆設置、通信帶寬)、模式(索引、約束)、DB2 注冊表變量、DB2 優化級別和統計信息(關于表、列和索引的統計信息)的影響。這么多復雜的因素,再加上數據本身的動態性,使得最佳計劃的評估對于任何數據庫系統而言通常都是一個復雜的過程。

考慮到生成最佳 SQL 執行計劃是一項不簡單的任務,DB2 對其已臻成熟的成本模型繼續進行了改進,并加入了新的功能,以提供更好的信息來幫助成本模型做出決定。統計視圖是一種強大的、新型的統計,它可以表示復雜謂詞或表之間的關系。REOPT 綁定選項將查詢優化推遲到 OPEN 時有可用輸入變量的時候。然后,優化器可以將輸入變量的值與編目統計進行比較,并為謂詞計算出一個更好的選擇估計。統計視圖和 REOPT 都使優化器可以計算出更精確的基數估計,而后選擇一個最佳查詢執行計劃。對于優化器不能選擇最佳查詢執行計劃的例外情況,DB2 已經增加了諸如 SELECTIVITY 子句和優化指南之類的特性。

在本文的討論中,我們來看看優化指南和統計視圖這兩個最新的增強。通過本文,您可以了解這些增強的作用是什么,以及在某些情況下,在非數據分區(non-DPF)和數據分區(DPF)環境中,如何在應用程序內充分利用它們。

DB2優化概要文件和嵌入式指南

Version 8 FP9, DB2 for Linux, UNIX, and Windows 中包括優化概要文件功能,該功能將一個指南傳遞給優化器,用于指導優化器為 SQL 查詢生成所需的執行計劃,以覆蓋默認的成本模型。

很多人都曾在應用程序中碰到這樣的情況:大多數查詢工作負載都經過了適當的調優,并取得了較好的性能,但是,隨著用戶期望的增長,加上系統的復雜性和多樣性,仍然有少數 SQL 語句無法通過調優取得預期的性能。雖然人們已經盡了最大的努力力圖通過改變數據庫(例如使用索引建議器或者其他方法來改進索引、更新統計信息、改善數據群集及更改參數)來調優 SQL 語句,但是問題仍然存在。有時候,我們希望更直接地影響優化器,同時盡量避免更改應用程序。

這時候可以考慮使用優化指南。然而需要注意的是,先進的優化器在生成一個特定的訪問計劃時,必然有其原因,所以在應用指南之前,務必理解是什么原因導致查詢的性能低下。優化指南使用起來并不難,但更具有挑戰性的任務是根據給定的數據庫環境判斷 SQL 語句的問題出在哪里,并選擇適當的指南加以應用。

優化概要文件的工作原理

首先選擇一組您想要影響其訪問計劃的查詢。然后,將這些查詢和一些適當的指南放到一個 XML 優化概要文件中。為了通過驗證,這個優化概要文件必須遵從優化指南 XML 模式,并由一些區段組成,如清單 1 所示。

清單1.XML 優化概要文件

XML 優化概要文件以 OPTPROFILE 區段開始,該區段表明版本屬性。這個全局區段將規則全局地應用到所有 SQL 語句上。例如,可以指定使用哪個 REOPT 選項,使用哪個 MQT 表,或者使用什么樣的查詢優化。statement profile 區段則表明將哪些特定的規則應用于 STMTKEY 元素中的 SQL 語句上。

如果有問題的 SQL 查詢不容易訪問到,那么借助 XML 優化概要文件可以帶來很大的方便。例如,SQL 查詢可能處在一個應用程序中,而這個應用程序是不能更改的。在這種情況下,可以使用概要文件,在查詢文本成功匹配之后,通過觸發與查詢相關聯的指南來影響查詢行為。該環境中的所有 SQL 語句將嘗試從活動的優化概要文件中查找匹配項,而這種匹配是高效率、低開銷的。

如何啟用優化概要文件

一個數據庫中可以有很多個優化概要文件,但是在實際情況中,更靈活的做法是創建一個主優化概要文件,將所有規則(statement profile)組織在一起,然后只需激活此概要文件,根據應用程序環境的不同,可以選擇以下幾種方法之一來激活概要文件。另外還需要將 DB2_OPTPROFILE 注冊表變量設置為 YES。

1.在CLP環境中:

使用 “SET CURRENT OPTIMIZATION PROFILE=KCHEN.PROF1” 語句在會話級將概要文件與所有 SQL 語句關聯,直到連接重置或者概要文件重置。這條語句還可以嵌入到應用程序中。

2.對于 CLI 應用程序或使用舊的 JDBC 驅動程序的JDBC應用程序:

在db2cli.ini配置文件中設置 CURRENTOPTIMIZATIONPROFILE 關鍵字來關聯概要文件。對于 SAMPLE 數據庫,這個關鍵字是在 data source 區段中設置的。

[SAMPLE]

CURRENTOPTIMIZATIONPROFILE=KCHEN.PROF1

經過這樣設置后,應用程序執行中的 SQL 將嘗試與 KCHEN.PROF1 中的 SQL 語句進行匹配,以查找指定的規則,這些規則將覆蓋執行環境中常規的優化。

3.對于使用JCC Universal Driver的JDBC應用程序:

采用 JCC Universal Driver 的 JDBC 應用程序并不使用 DB2 CLI 層。雖然可以將一個系統包和綁定文件與動態 SQL 執行相關聯,但最好的做法是將 “SET CURRENT OPTIMIZATION PROFILE” 語句嵌入在 Java™ 應用程序中,在會話級關聯概要文件。

4.對于 SQL PL 過程:

在創建 SQL PL 過程之前,使用 SET_ROUTINE_OPTS 過程調用將概要文件的名稱與 DB2 V8 FP13+ 或 DB2 V9 FP1+ 中特定的 SQL PL 相關聯。

CALL SYSPROC.SET_ROUTINE_OPTS('OPTPROFILE KCHEN.PROF1')

SQL PL 過程包含的 SQL 語句具有一些執行屬性,例如隔離級別或優化級別,這些屬性只能通過 DB2_SQLROUTINE_PREOPTS 注冊表變量來覆蓋。也可以用 SYSPROC.SET_ROUTINE_OPTS 過程覆蓋該選項。要激活一個概要文件,可以使用該存儲過程來關聯指南。

5.對于 C/C++ 應用程序中的嵌入式SQL:

對于嵌入式 C/C++ 應用程序,使用 OPTPROFILE 綁定選項。 嵌入式 SQC 程序需要使用 PREP 命令來編譯,該命令將創建綁定文件。這個綁定文件需要通過 OPTPROFILE 選項綁定到數據庫,例如:

bind prog1.bnd OPTPROFILE KCHEN.PROF1

6.對于含嵌入式靜態 SQL 語句的 SQLJ 應用程序:

在定制階段使用 BINDOPTIONS 參數關聯概要文件。這個靜態 SQLJ 程序 prog1 被按如下所示進行翻譯和編譯:

sqlj prog1.sqlj

db2sqljcustomize -url jdbc:db2://SERVER:PORT/SAMPLE -user USER -password PASSWORD

-bindoptions 'OPTPROFILE KCHEN.PROF1' -storebindoptions prog1_SJProfile0

所有使用舊的 JDBC 驅動程序的 JDBC 程序,都將使用 db2cli.ini 中的設置。使用 Universal JDBC 驅動程序的 JDBC 程序屬于上述的第 3 類情況。需要注意的是,由于 SQLJ 為 SELECT SQL 語句生成一個隱式的 “DECLARE CURSOR” 子句,因此,為了使指南得到應用,優化概要文件除了包括 SELECT 語句外,還需要包括 “DECLARE CURSOR” 子句。

當應用程序執行時,將 SQL 與活動的概要文件中的指南相比較。如果存在一個匹配的 STMTKEY ,指南就會開始起作用;反之,假如指南被認為是不適用的或無效的,那么就會返回一個 rc = 13 的 SQL0437W。DB2 Explain 工具對于幫助確定指南是否被選擇非常有用。Explain 的輸出會指明優化概要文件的名稱和有效的指南。概要文件中的指南通常覆蓋用于應用程序設置的常規優化,從而使概要文件能夠更好地控制計劃評估。

優化指南的例子

優化概要文件中的任何指南都必須遵從 DB2 提供的 XML 模式。如果沒有正確地指定指南,那么指南將無效,并且在大多數情況下,將返回 rc = 13 的 SQL0437W。優化概要文件存儲在一個名為 SYSTOOLS.OPT_PROFILE 表中。如果從這個表中更新或刪除一個指南,那么需要通過發出 FLUSH OPTIMIZATION PROFILE CACHE 語句更新緩存,使之可以被使用。需要注意的是,SQL 語句測試匹配是大小寫敏感的,但在嘗試匹配之前,DB2 將去除冗余空格和控制字符。

下面的例子演示了優化概要文件在 3 類情況下的使用,即常規優化、查詢重寫和計劃優化。

例子1: 總是使用索引 T1X (計劃優化)

假設在表 T1 的 (c2, c1) 列上有一個索引 T1X。根據優化器的成本計算,對于以下查詢,會導致一個表掃描。下面的代碼展示了如何強制使用一個索引。

例子2: 總是使用 REOPT(常規優化)

可以使用 REOPT 指南,將查詢優化推遲到運行時輸入變量已知的時候??赡艿倪x項有 ONCE、ALWAYS 或 NONE。

例子3:只使用DB2 V9 中的Optimization Level 0(常規優化)

通常,對于一個應用程序而言,優化級別是固定的,但是如果要使一條特定的 SQL 語句在一個不同的優化級別上執行,那么可以創建以下優化指南:

例子4:只使用 DB2 V9 中的Runtime degree ANY(常規優化)

可以有很多方法來修改內部分區的查詢的運行時等級。下面的代碼展示了優化指南如何為查詢指定運行時等級以及如何影響查詢的執行。

例子5: INLIST 改為嵌套循環連接(查詢重寫)

將值列表(inlist)改為使用 GENROW 函數非常有效,可以提高查詢的性能。在這個例子中,值列表被放在內存中的一個表中。

P.P_SIZE, P.P_TYPE, S.S_NATION

FROM KCHEN.PARTS P, KCHEN.SUPPLIERS S, KCHEN.PARTSUPP PS

WHERE P_PARTKEY = PS.PS_PARTKEY AND

S.S_SUPPKEY = PS.PS_SUPPKEY AND

P.P_TYPE IN ('BRASS', 'BRONZE') AND

P.P_SIZE IN (31, 31, 33, 34) AND

S.S_NATION = 'PERU']]>

例子6: 子查詢改為連接(查詢重寫)

在這個例子中,在查詢重寫期間,通過使用帶 ENABLE 屬性的 SUBQ2JOIN,將一個子查詢轉換成一個連接,以便更好地對其進行優化。

FROM KCHEN.PARTSUPP PS, KCHEN.LINEITEM

WHERE PS.PS_PARTKEY = L_PARTKEY AND

PS.PS_PARTKEY = ANY (

SELECT P_PARTKEY FROM KCHEN.PARTS

WHERE P_BRAND <> 'Brand#45' AND

P_NAME = 'peach snow puff bisque misty' AND

P_TYPE <> 'TIN')

GROUP BY PS_PARTKEY]]>

例子7: 影響連接順序 3、4、1、2 (計劃優化)

通常,查詢的連接順序很大程度上決定了查詢的執行性能,因為越早地過濾行,效率越高??梢允褂靡韵轮改蟻碛绊戇B接順序。注意,當出現多個表引用時,使用 TABLEID 屬性,而不是 TABID 屬性。

where t71.c1 = t72.c1 and

t72.c2 = t74.c2 and

t74.c1 = t73.c1 and

t73.c2 = t71.c2 and

t71.c3 = t74.c3 and

t72.c3 = t73.c3]]>

例子8: 客戶使用情況(計劃優化)

在批處理運行過程中,當刷新一個 MQT 時,客戶會遇到性能問題。當為 MQT 定義中涉及的表 tab2 填充數據時,就會觸發對 MQT 的刷新。下面的例子代碼可以演示這個問題。

create table tab1 (i int, b char(30))

create table tab2 (i int, b char(150))

create table mqt1 (cnt,val) as

(select count(*), tab2.b from tab2, tab1 where tab1.b=tab2.b group by tab2.b)

data initially deferred refresh immediate

create index i11 on tab1 (i asc, b asc)

create index i12 on tab1 (b asc, i asc)

create index i21 on tab2 (i asc, b asc)

create index i22 on tab2 (b asc, i asc)

insert into tab2 values(14,substr(char(current timestamp),1,5))

在這個場景中,經過分析,可以確定使用索引 I11 來訪問表 TAB1 是最優的,但是優化器的默認行為不會這么做,即使在調優之后也仍然不會這樣做。但是,可以通過創建下面的指南來影響優化器,使之考慮 I11 索引,從而將 MQT mqt1 的刷新速度提高兩倍以上。

統計視圖

基本上,關系數據庫中的數據會因事務和批量更新而發生變化 —— 即使是數據集市或數據倉庫中的內容也會隨著時間而變化。SQL 工作負載常常是動態的 SQL(而不是靜態的),所以任何基于成本的優化器通常都必須對數據、數據選擇性和數據基數做出假設,但是很多情況下,數據的分布呈難以預測的不均勻性,數據域值本身的特性以及表和視圖的相互依賴關系會使優化器很易出錯。

由于查詢是動態的,在編譯時并不知道其選擇標準,因此,即使有了關于數據的完整的分布統計,仍然可能生成錯誤的計劃。如果優化器能預知查詢結果(或部分查詢結果),那么該信息對于幫助確定更精確的訪問計劃將非常有用。

基本上,可以有以下兩點假設:

◆均勻分布

◆域值

為了理解統計視圖,我們首先看看以上兩點假設,通常情況下這兩點假設可能是錯誤的。因此,在進行查詢計劃優化時,就需要使用統計視圖。

均勻分布

考慮以下數據,

C1 1 2 3 3 3 3 7 7 9 10

runstats(無分布)將提供關于 C1 的以下信息:

CARD = 10,

COLCARD = 6,

LOW2KEY = 2,

HIGH2KEY = 9

那么:

◆C1=3 的行的數量將被估計為 10/6 = 1.67。

◆C1=4 和 C1=8 之間的值域被估計為 ((8-4)/(9-2)) * 10 = 5.71。

但是,如果將數據變化一下,以反映數據不均勻、大跨度的分布,如下所示:

C1 1 2 3 3 3 3 7 7 99 100

那么:

C1=3 的行的數量被估計為 10/6 = 1.67。

C1=4 與 C1=8 之間的值域被估計為 ((8-4)/(99-2)) * 10 = 0.41。

如果數據是完全均勻分布的,如下所示:

C1 1 2 3 4 5 6 7 8 9 10

那么:

C1=3 的行的數量將被估計為 10/10 = 1。

C1=4 與 C1=8 之間的值域被估計為 ((8-4)/(9-2)) * 10 = 5.71。

C1=3 與 C1=7 之間的值域被估計為 ((7-3)/(9-2)) * 10 = 5.71。

所以,當數據均勻分布時,無論值和范圍如何,真實的結果與估計的結果都更加一致。

即使擁有頻率值和分位數值之類的分布統計信息(這些信息可以大大減少等于和范圍謂詞的估計錯誤),也仍然會出現估計錯誤無法接受的情況。

域值

a) 現在看看包含以下數據的兩個表的連接 T1.C1 = T2.C1,其中一組數據包含另一組數據:

T1.C1 1 2 3 4 5 6 7 8 9 10 T2.C1 1 2 3 4 5 6 7 8 9 10

謂詞的選擇性定義如下:

Selectivity = 1 / ( max ( C1 colcard , C2 colcard ) ) = 0.1

基數為 10 * 10 * 0.1 = 10。

b) 如果表連接 T1.C1 = T2.C1 中的數據在兩組數據相交處稍微有所不同,一個表中的數據沒有包含另一個表中的數據:

T1.C1 1 2 3 4 5 6 7 8 9 10 T2.C1 1 2 2 2 2 5 12 13 14 15

在這種情況下,T1.C1 的值,例如 7,不能與 T2.C1 連接,而 T2.C1 的值,例如 12,也不能與 T1.C1 連接,但是估計算法并不知道這一點,因而會做出不準確的假設,認為 T1 中的一個值很可能與 T2 中的任意值連接,反之亦然。

基數仍然是 10 * 10 * 0.1 = 10。

所以成本是一樣的,但是 a) 的實際行輸出結果為 10,b) 的實際行輸出結果為 6。

結果 1 2 2 2 2 5

顯然,這里存在不一致性,而且,對于更復雜的連接,這種錯誤估計的問題很可能變得更糟糕。而 V8 FP9 以上版本提供的 DB2 統計視圖特性,正是為彌補這一類由于數據分布和值導致的不一致性而設計的。

為了理解統計視圖的作用,我們來考慮一個更實際一點的連接場景:

T1.C1 T1.C2 1 A 2 B 3 C 4 D 5 E 6 F 7 G 8 H 9 I 10 J T2.C1 1 2 2 2 2 5 5 13 14 15

在這種情況下,連接謂詞 T1.C1=T2.C1 和 T1.C2='A'(或 C2 的任何值)返回的基數估計將為 1。但是,如果本地謂詞為 T1.C2='B' 或 T1.C2='E',那么這個估計就錯得太厲害了。請看上面兩個表在 T1.C1 = T2.C1 上的連接所產生的如下結果。

T1.C1 T1.C2 T2.C1 1 A 1 2 B 2 2 B 2 2 B 2 2 B 2 5 E 5 5 E 5

為了彌補這種估計錯誤,可以創建和準備一個統計視圖,并像下面這樣加以利用:

Create view SCHEMA.V1 as select * from T1, T2 where T1.C1 = T2.C1 Alter view SCHEMA.V1 enable query optimization Runstats on table SCHEMA.V1 with distribution

對于統計視圖,ENABLE QUERY OPTIMIZATION 子句將導致該視圖以及與之相關聯的統計信息被用于改進查詢優化。這里只需收集包含分布特征的數據 runstats 信息。runstats 信息是統計視圖部署的關鍵,必須提供比基本表更完整的信息。有時候,列組或類似的統計選項會很有用。

現在,統計視圖將包含在整個結果集上收集到的關于連接之后的數據分布的統計信息,無論是在 non-DPF 還是 DPF 環境中,這個信息都是完整的,沒有推斷成分。有時候,runstats 可能要花更多的時間,這可能是由于視圖本身的規劃沒做好。在運行 runstats 之后,以下附加信息會成為已知的信息:

結果的列的 COLCARD

結果的基數

值以及值的計數

然后,這些信息被包括進來,用于幫助優化器在為那些符合條件的查詢(這些查詢不需要直接引用視圖)的選擇性估計和基數估計計算成本時做決定。 這將導致更精確的成本計算和更優的訪問計劃。

下面使用以上討論的相同的示例數據,闡釋在使用和不使用查詢的統計視圖的情況下基數估計的差別。

select * from T1,T2 where T1.C2='B' and T1.C1=T2.C1

1) 不使用統計視圖 - 在這種情況下,對于數據的基數的估計明顯不準確。根據估計,訪問計劃中的散列連接將返回 1 行,而實際上是 4 行。

清單2. 不使用統計視圖情況下的訪問計劃

Rows RETURN ( 1) Cost I/O | 1 HSJOIN ( 2) 15.1653 2/-----+----- 10 1 TBSCANTBSCAN ( 3)( 4) 7.58162 7.583011 1| | 10 10 TABLE:TABLE: KCHEN.T2KCHEN.T1

2) 使用統計視圖 - 在這種情況下,估計到的基數為 4 行,這相對于第 1 種情況有很大的提高,并且這次該估計是完全準確的。

注意,解釋輸出將包含以下診斷信息,以表明正在使用統計視圖。在這方面,db2exfmt 工具非常有助于確定是否正在使用統計視圖。

Diagnostic Details: EXP0147W. The following statistical statistical view may have been used by the optimizer to estimate cardinalities: 'KCHEN '.'V1'.

清單 3. 使用統計視圖情況下的訪問計劃

Rows RETURN ( 1) Cost I/O | 4 HSJOIN ( 2) 15.1653 2 /-----+----- 10 1 TBSCANTBSCAN ( 3)( 4) 7.58162 7.58301 1 1 | | 10 10 TABLE: TABLE: KCHEN.T2 KCHEN.T1

通過利用包含關于連接的附加信息(包括通過在 runstats 期間執行查詢而得到的 runstats 信息,但是沒有持久地物化詳細的實際結果集)的統計視圖,基數估計得到了改善。針對一個或多個查詢的統計視圖的使用是透明的,不必直接引用它。統計視圖有點類似于物化查詢表(Materialized Query Table,MQT),不同的是統計視圖不需要物化。實際上,DB2 中對統計視圖的支持與對 MQT 的支持具有類似的局限性。當前,統計視圖不支持 SUM、MAX 之類的聚合函數,也不支持 distinct 操作和 UNION、EXCEPT 或 INTERSECT 之類的集合操作。

在 DB2 V8 FP9 中,需要設置注冊表變量 DB2_STATVIEW,并且統計視圖中只能有 2 個表引用。此外,還需要手動收集統計信息,因為 runstats 不能工作于統計視圖。在 DB2 V9,所有這些限制都已經被去掉了。

通常,在涉及事實表和很多維表的星型連接場景中,統計視圖中將包括維表的列(本地謂詞列尤其重要),而事實表中的列則不需要包括進來。這是因為當事實表與維表連接時,事實表中列的數據分布不會改變,因此優化器只需根據事實表的列的分布統計,就可以得到準確的選擇估計。一個例外是在 V8 中,由于 MQT 路由限制,任何查詢謂詞引用的事實表列都必須包括在統計視圖中。

給定一個 3 表連接,可以創建多個統計視圖,即 T1 和 T2、T1 和 T3 以及 T1、T2、T3 上的統計視圖,這些視圖將包含生成最佳訪問計劃所需的所有統計信息,實際上前 2 個視圖就足夠了。

例子1:

Select * from T1, T2, T3 where T1.C1=T2.C1 and T1.C2=T3.C2 and T2.C1=2 and T3.C2 = 'B'Create view SCHEMA.V11 as select T2.* from T1, T2 where T1.C1 = T2.C1 Create view SCHEMA.V12 as select T3.* from T1, T3 where T1.C2 = T3.C2

其中,T1 是與維表 T2 和 T3 有 FK-PK 關系的事實表。

為改善估計,創建 V11 和 V12 這兩個統計視圖。

結束語

當查詢性能中出現例外情況時,優化指南和統計視圖特性對于彌補訪問計劃估計的不準確性非常有用。如果應用了所有標準的調優技術之后,仍然得不到期望的結果,那么可以考慮這兩個特性。但是使用這兩個特性時要謹慎,因為對于優化指南,需要額外的查詢匹配開銷,而對于統計視圖,又有編譯方面的開銷。此外,優化指南和統計視圖的特定內容也可能會隨著時間和數據庫狀態的改變而改變,例如,優化指南可能會隨著數據量而變化,統計視圖中的統計信息也有可能過時。所以,需要定期地檢查它們的實現,以便從它們的使用當中最大限度地獲益。

標簽: DB2 數據庫
主站蜘蛛池模板: 午夜影院免费观看视频 | 黄色av网站免费 | 国产在线视频网站 | 久久久av| 中文字幕 在线观看 | 日本久久精品一区 | 亚洲福利免费 | 深夜福利亚洲 | 日韩精品一区二区三区在线观看 | 黄色成人在线观看视频 | 一区二区三区亚洲 | 婷婷成人免费视频 | hh99me在线观看 | 国产免费一级特黄录像 | 久久精品1区2区 | 亚洲第一av | 91精品国产91久久久久久最新 | 亚洲日本va中文字幕 | 日韩一级视频 | 午夜精品久久久久久久男人的天堂 | 欧美一级高潮片免费的 | 国产精品视频网站 | 亚洲视频在线看 | 精品天堂 | 日韩精品一二三 | 国产精品久久久久久吹潮 | 五月天婷婷激情视频 | 亚洲视频在线看 | 精品欧美一区二区在线观看视频 | 免费观看一级视频 | 欧美福利一区二区三区 | 日日夜夜精品网站 | 女同理伦片在线观看禁男之园 | 欧美性v | 欧美日韩大片在线观看 | 在线精品自拍 | 色猫猫国产区一区二在线视频 | 午夜久久| 蜜桃精品久久久久久久免费影院 | 视频在线91 | 精品国产成人 | 国产精品欧美一区二区三区不卡 | 在线播放一区二区三区 | 婷婷视频在线 | 九九九视频 | 日韩午夜视频在线观看 | www.久久伊人 | 永久91嫩草亚洲精品人人 | 99久久久国产精品 | 中文字幕免费在线 | 天堂在线中文字幕 | 日韩成人精品在线 | 天堂va| 国产中文一区二区三区 | 亚洲精品一区二区三区精华液 | 亚洲国产高清在线 | 成人免费淫片视频观 | 国产精品女人视频 | 亚洲香蕉精品 | 色婷婷久久 | 欧美视频在线观看不卡 | 欧美精品成人一区二区三区四区 | 91高清视频 | 久久青青操| 国产目拍亚洲精品99久久精品 | 玖玖精品 | 成人午夜精品 | 久久国产视频一区二区 | 九九99 | 亚洲欧美一区二区三区在线 | 看真人视频a级毛片 | 亚洲精品一区二区 | jav成人av免费播放 | av免费网站在线观看 | 欧美一级片免费看 | 日韩五码| 美女天天操 | 国产黄色网址在线观看 | 亚洲精品久久久一区二区三区 | 成人av影片在线观看 | 国产精品欧美久久久久一区二区 | 国产欧美精品一区二区色综合 | 手机久久看片 | 国内外成人在线视频 | 一区二区在线视频免费观看 | 大象视频成人在线观看 | 夜夜骑天天射 | 成人一区二区三区 | 狠狠操综合网 | 成人涩涩日本国产一区 | 久产久精品| 人人射人人插 | 99视频免费播放 | 久久伊人一区 | 精品久久久久久久人人人人传媒 | 国产精品毛片 | 日韩9999 | 久久精品免费一区二区三区 | av亚洲在线 | 欧美日韩国产精品一区二区 | 成人老司机 | 亚洲精品福利网站 | av网站在线免费观看 | 丁香婷婷久久久综合精品国产 | 亚洲 欧美 激情 另类 校园 | 日韩小视频在线播放 | 欧美日一区二区 | 99久久精品一区二区 | 欧美一级片在线观看 | 日本高清视频在线播放 | 国产人妖一区 | 男女免费视频 | 一区二区蜜桃 | 久久99久久99精品免观看粉嫩 | 国产精品久久久久久久久久10秀 | 国产一区 | 久久久久一 | 亚洲高清一区二区三区 | 精品入口麻豆88视频 | 在线成人av| 女同videos另类 | 98久久久 | xx视频在线观看 | 奇米成人影视 | 日本高清无卡码一区二区久久 | 久久久精彩视频 | 性欧美大战久久久久久久免费观看 | v片网站| 一级毛片在线看aaaa | 日韩久久精品一区二区 | 成人在线网址 | 国产一区二区三区久久久久久久久 | 亚洲每日更新 | 国产精品欧美久久久久一区二区 | 中文字幕av亚洲精品一部二部 | 欧美日韩一区二区三区在线观看 | 久久久免费av | 亚洲精品久久久久久久久久久 | 亚洲视频中文字幕 | 日韩视频一区 | 亚洲欧美日韩精品久久亚洲区 | 日韩精品在线免费观看视频 | 黄色毛片在线观看 | 亚洲免费网站 | 亚洲精品国产一区 | 日韩精品一区二区三区在线 | 美女午夜影院 | 国产免费一区二区三区最新不卡 | 国产激情一区二区三区 | 国产午夜精品久久 | 免费一区二区三区 | 欧美日韩在线综合 | 91在线电影 | 美女久久 | 国产丝袜视频 | 人人草在线观看视频 | 久久久国产一区二区三区 | 色成人免费网站 | 国产特一级黄色片 | 免费xxxxx在线观看网站软件 | 精品国产一区二区三区日日嗨 | 欧美一区二区三区四区五区 | 精品在线一区二区三区 | 亚洲一区精品在线 | 精品视频久久久 | 狠狠操天天干 | 久久久久久久久久久亚洲 | 亚洲一区二区在线播放 | 亚洲欧美另类在线 | 国产精品二区一区二区aⅴ污介绍 | 欧美国产一区二区 | 美女视频黄的免费 | 中文字幕在线视频一区 | 精品久久久久久 | 自拍偷拍精品 | 欧美成人精品一区二区男人看 | 蜜桃官网 | 成人福利在线 | 在线高清av | 免费视频一区 | 久久99国产精品久久99果冻传媒 | 精品久久久久久久久久久久久久 | 91精品在线看 | 久久久久久久成人 | 久久成人精品一区二区三区 | 99re6在线视频精品免费 | 蜜桃视频网站在线观看 | jizzjizz亚洲中国少妇 | 久久伦理电影网 | 国产精品一区二区不卡 | 91av久久 | 亚洲福利av | 欧美日韩在线一区二区 | 国产成人在线视频 | 激情综合网五月婷婷 | 一级黄色大片免费 | 国内自拍网站 | 欧美极品欧美精品欧美视频 | 欧美a网| 欧美一区二区三区黄 | 日韩高清在线一区 | 日日操日日操 | 91精品亚洲 | 亚洲97色| 一区二区在线看 | 欧美久久久网站 | 精品国产三级a在线观看 | 午夜寂寞福利视频 | 亚洲一区二区免费 | 五月婷婷天 | 日本在线观看一区 | 久久精品在线 | 国产成人欧美一区二区三区的 | 久久99热精品免费观看牛牛 | 资源av| 国产精品免费看 | 国产精品入口久久 | 色综合网站 | 九九免费视频 | 中文字幕一区二区在线观看 | 国产在线网 | 一区二区亚洲 | 欧美日韩一区二区三区免费视频 | 成人免费毛片嘿嘿连载视频 | 国产一区二区电影 | 天天精品视频免费观看 | 久久艹久久 | 中文字幕在线永久 | 成人精品一区二区三区中文字幕 | 日韩极品在线 | 精品久久久久久久 | www国产亚洲精品 | 久久国产一区二区三区 | 欧美日韩一区二区三区在线观看 | 日韩久久一区 | 国产精品久久久久久一区二区三区 | 欧美一区二区免费在线 | 国产大片黄色 | 国产一区二区三区在线免费 | 成人性视频在线 | 色综合天天| 成人影音 | 久久久亚洲一区二区三区 | 国产高清在线精品一区二区三区 | 久久久精品 | 91精品国产综合久久久久久丝袜 | 国产一区在线视频 | 精品久久久久久久久久久院品网 | 正在播放国产一区 | 我和我的祖国电影在线观看免费版高清 | 欧美日韩成人免费 | 国产精品亚洲一区二区三区在线 | 国产大学生情侣呻吟视频 | 日韩精品一区二区三区在线 | 福利视频一 | 日韩一二三区 | 羞羞av在线 | 一区二区免费视频 | 亚洲国产精品久久久久久 | 日韩成人精品 | 95香蕉视频| 一区免费视频 | 操她视频网站 | 久久久久久国产精品 | av超碰| 免费国产一区 | 中文字幕精品视频在线观看 | 日韩一区在线视频 | 久久久久久久久久一区二区 | 久久先锋 | 亚洲三区视频 | 免费的日批视频 | 成人激情视频在线播放 | 黄色大片视频网站 | 国产日韩欧美 | 日韩av福利| 久久久午夜爽爽一区二区三区三州 | 日本在线观看一区 | 日韩www| 亚洲一区二区国产 | 精品日韩在线 | 精品综合久久久 | 久操视频在线 | 日本一区视频在线观看 | 中文字幕亚洲一区 | 国产精品99久久久久久久vr | 久久久久久久久久久久国产精品 | 99久久精品一区二区成人 | 亚洲不卡| 自拍亚洲 | 欧美性视频网站 | 国产免费自拍视频 | 午夜影院在线免费观看 | 国产精品成人久久久久 | 在线亚洲一区 | 91九色国产视频 | www伊人 | 国产欧美日韩综合精品一区二区 | 亚洲精品乱码久久久久久蜜桃91 | 日韩国产欧美精品 | 日韩福利影院 | 中文字幕视频一区 | 九色精品| sese综合 | 国产精品二区三区在线观看 | 91成人免费视频 | 日韩精品在线观看免费 | 亚洲日韩欧美一区二区在线 | 久久久久一区二区三区 | 色乱码一区二区三区网站 | 91精品国产高清久久久久久久久 | 美女一级毛片 | 中文字幕在线看 | 亚洲国产一区在线 | 国产av毛片| 国产欧美日韩一区二区三区 | 亚州成人| 色综合天天综合网国产成人网 | 最新中文字幕 | 天天草av| 麻豆一区 | 国产日韩精品视频 | 国产精品资源在线 | 91久久精品一区 | 中文字字幕在线 | 欧美一区二区三区aa大片漫 | 久国产精品视频 | 亚洲精品视频在线免费 | 国产传媒在线观看 | 懂色av色香蕉一区二区蜜桃 | 欧美在线视频一区二区 | 午夜国产影院 | 黄色短视频在线观看 | 99国内精品久久久久久久 | 日韩欧美在线一区 | 欧美视频三区 | 色综合久 | 一区在线看 | 欧美日韩视频 | 国产一区二区精品久久 | 精品国产乱码久久久久久久软件 | 国产精品一区二区三 | 久久久.com| 人人射人人干 | 国产精品成人在线 | 欧美高清成人 | 91视频一区二区三区 | 一区视频网站 | 中文字幕亚洲综合 | 成人免费高清 | 亚洲精品在线视频 | 国产日韩成人 | 日韩欧美在线视频播放 | 嫩草影院在线观看91麻豆 | 欧美日韩成人一区 | 欧洲亚洲精品久久久久 | 精品成人免费一区二区在线播放 | 久久久久一 | 91国视频 | 久久精品这里热有精品 | 亚洲激情综合 | 久久国产电影 | 欧美成人性生活视频 | 久久精品无码一区二区日韩av | 在线欧美色 | 久久久欧美 | 久久亚洲天堂 | 国产在线精品视频 | 蜜桃视频网站在线观看 | 精品国产乱码久久久久久1区2区 | 亚洲视频在线看 | av在线中文 | 国产一二三视频 | 亚洲狠狠爱一区二区三区 | 伊人伊人网 | 国产精品a免费一区久久电影 | 欧美精品一区二区三区手机在线 | 亚洲综合激情网 | 性高湖久久久久久久久 | 欧美日韩精品一区二区 | 久久精品欧美电影 | 日韩成人三级 | 午夜国产一级 | 一区二区三区国产免费 | 欧美久久精品 | av一二三区 | 毛片站| 免费看特级毛片 | 国产精品中文字幕在线播放 | 欧美日韩三级在线 | 欲色av| 精品亚洲一区二区 | 国产精品美女久久久久久久久久久 | 在线看h| 欧美日韩亚洲视频 | 毛片99| 粉嫩视频在线观看 | 这里精品 | 久久精品伊人 | 成人av一区二区三区 | 国产高清视频在线 | 欧美精品一区二区视频 | 精品一区二区在线播放 | 日本黄色大片免费 | 99精品国产在热久久 | 午夜免费av| 国产日韩免费 | 成人小视频在线观看 | 日韩成人在线一区 | 欧美久久免费 | 国产大奶视频 | 亚洲精品第一区在线观看 | 精品久| 国产成人精品一区二区三区四区 | 欧美精品一区二区三区在线 | 人人爱夜夜爽日日视频 | 亚洲欧洲tv| 国产美女在线播放 | 久久这里有精品视频 | 精品免费视频 | 91看片网站 | 在线中文av | 日韩城人免费 | 免费欧美视频 | 欧美不卡一区二区三区 | 在线视频一区二区三区 | 国产精品久久久久久久久污网站 | 五月天婷婷激情视频 | 免费一区二区三区视频在线 | 久久成人免费视频 | 一级a性色生活片毛片 | 日韩一区二区在线视频 | 亚洲毛片在线 | 久久久久久久成人 | 不用播放器的免费av | 伊人网站 | 天天亚洲 | 欧美成人综合视频 | 色婷婷久久 | 精品欧美一区二区在线观看视频 | 国产精品美女av | 精品96久久久久久中文字幕无 | 国产精品久久精品 | 欧美日韩亚洲成人 | 国产成人精品免高潮在线观看 | 亚洲精品视频在线 | 久久久一区二区三区 | 国产精品毛片在线 | 成人激情视频在线观看 | 久久国产99 | 亚洲精品专区 | 成人羞羞在线观看网站 | 亚洲中出 | 欧美日韩一区二区三区在线观看 | 国产成人一区 | 欧美精品一区二区在线观看 | 久久久久久国产精品久久 | 91大神免费在线观看 | 91在线高清观看 | 日韩一区二区三区在线观看 | 麻豆一区| 人人玩人人添人人澡97 | 久久人人爽人人爽人人片亚洲 | 国产精品久久精品 | 久久精品国产99国产 | 国产日韩一区二区三区 | 久久精品99| av大片| 一区二区三区国产好 | 伊人99| 国产极品视频在线观看 | 99久久99热这里只有精品 | 精品一区二区三区国产 | 国产综合视频 | 天天精品 | 日韩欧美在线中文字幕 | 国产精品久久久久久中文字 | 国产高清精 | 国产日韩欧美精品一区二区 | 亚洲精品免费看 | 91九色在线 | 99精品视频在线观看 | 日韩欧美a级v片免费播放 | 日韩欧美国产一区二区 | 天堂一区二区三区 | 欧美日韩综合视频 | 久久久久久九九九九九九 | 久久久亚洲一区 | 亚洲福利精品视频 | 欧美精品91 | 久久久久久久久一区二区三区 | 欧美日韩中文字幕 | 在线观看免费黄色小视频 | 狠狠躁夜夜躁人人爽天天高潮 | 一本大道久久a久久精二百 国产精品片aa在线观看 | 99精品在线观看 | 91精品国产91久久久久久吃药 | 国产视频精品在线 | 亚洲欧美91 | 免费毛片网 | 国产亚洲精品精品国产亚洲综合 | 亚洲日本乱码一区两区在线观看 | 欧美成人激情 | 特级做a爰片毛片免费看108 | 久久成人免费视频 | av免费网站在线观看 | 亚洲成人综合网站 | 日韩综合网 | 欧美在线播放一区 | 欧美成人高清视频 | 成全视频免费观看在线看黑人 | 亚洲香蕉精品 | 超碰人人射 | 亚洲成a人 | 天天操网| 99爱国产 | 26uuu成人免费毛片 | 中国大陆高清aⅴ毛片 | 九九爱爱视频 | av观看 | 欧美一级在线观看视频 | 国产成人 综合 亚洲 | 国产精品久久嫩一区二区免费 | 一区二区三区亚洲视频 | a级性视频 | 色综合视频| 国产精品久久久久久久久久东京 | 欧日韩不卡在线视频 | 91久久国产综合久久 | 亚洲欧洲日韩在线 | 久久精品久久久久久 | 亚洲国产成人精品久久 | 欧美精品一区二区三区在线四季 | 色av综合| 欧美日韩国产一区二区 | 久久成人精品视频 | 久久久国产视频 | 日韩欧美亚洲 | 日韩av一区二区三区四区 | 久久久久久一区 | 男女午夜| 中文字幕视频一区 | 一级黄色av片 | 欧美一区二区在线观看 | 亚洲精品久久久久久下一站 | 久久99精品视频 | 久久69精品久久久久久久电影好 | 久草视频国产 | 伊人久久综合 | 91性高湖久久久久久久久_久久99 | 亚洲一区二区在线 | 在线视频a| 亚州中文字幕 | 久久久久香蕉视频 | 成人久久久久 | 成人亚洲视频 | 伊人网网站 | av网站免费| 亚洲一区久久 | 成人综合在线观看 | 欧美国产综合 | 国产精品永久 | 可以在线观看的黄色 | 日韩视频一| 日韩欧美一区二区在线观看视频 | 日韩在线成人av | 成人福利在线 | 成人做爰www免费看视频网站 | 亚洲国产欧美在线 | 久久久精品综合 | 亚洲综合国产 | 国产探花在线精品一区二区 | 精品一区二区三区在线观看 | 亚洲网站久久 | 成人日批 | 午夜视频免费 | 精品国产乱码久久久久久久软件 | 国产女爽123视频.cno | 国产高清免费视频 | 天天干人人 | 九九热视频在线 | 91精品国产综合久久久久久漫画 | 欧美一级特黄aaaaaa大片在线观看 | 一区二区中文字幕 | 青青草视频在线免费观看 | 国内久久精品 | 欧美日韩一区在线观看 | 成人亚洲精品久久久久 | 国产精品美女久久久久久久久久久 | 成年人黄色一级片 | 日韩精品一区二区在线观看 | 中文字幕视频在线观看 | 国产一区二区三区视频在线观看 | 欧美一级三级 | 亚洲人成在线观看 | 四季久久免费一区二区三区四区 | h视频在线观看免费 | 久久久久久麻豆 | 噜噜噜视频在线观看 | 青娱乐一区 | 免费中文字幕日韩欧美 | 一级毛片观看 | 亚洲美女视频在线观看 | 2018国产大陆天天弄 | 中文字幕在线第二页 | 亚洲国产成人久久综合一区,久久久国产99 | 国产精品美女久久久久久久久久久 | 欧美一区二区三区在线观看视频 | 欧美日韩黄色一区二区 | 日韩精品一区二区三区免费观看视频 | 久久99精品视频 | 中文字幕在线一区二区三区 | 一区二区av | 日韩日日夜夜 | 日本天堂一区二区 |