日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle 10g(10.1.0.2)中的OPTIMIZER_INDEX_COST_ADJ

瀏覽:280日期:2023-11-15 14:52:01
Oracle 10g(10.1.0.2)中的OPTIMIZER_INDEX_COST_ADJ Tom Kyte的新書Effective Oracle by Design的第6章 Getting the Most Out of the Cost-Based Optimizer中介紹了參數(shù)OPTIMIZER_INDEX_COST_ADJ,并認(rèn)為可以理解為Oracle執(zhí)行多塊(MultiBlock)I/O(比如全表掃描)的代價與執(zhí)行單塊(Single-block)I/O代價的相對比例。Tom指出,9i下該參數(shù)缺省值為100,意即二者擁有相同的代價,若減小,則CBO傾向于使用索引(即單塊I/O),反之則傾向于全表掃描(多塊I/O)。Tom同樣給出了一個不錯的例子。 在自己的手提上試驗(yàn)了一下,硬盤大小原因,只裝了一個Oracle 10g(10.1.0.2),誰知就發(fā)現(xiàn)該參數(shù)在10g下取值發(fā)生了改變。我們先來看一下參照Tom的實(shí)驗(yàn): A. 創(chuàng)建數(shù)據(jù)表。 SQL> drop table t1; 表已刪除。 SQL> drop table t2; 表已刪除。 SQL> create table t1 2; as 3; select mod(rownum,1000) id,rpad('x',300,'x') data 4; from all_objects 5; where rownum<=5000; 表已創(chuàng)建。 SQL> ed 已寫入 file afiedt.buf 1; create table t2 2; as 3; select rownum id,rpad('x',300,'x') data 4; from all_objects 5* where rownum<=1000 SQL> / 表已創(chuàng)建。 B.創(chuàng)建索引并分析。 SQL> create index idx_t1 on t1(id); 索引已創(chuàng)建。 SQL> create index idx_t2 on t2(id); 索引已創(chuàng)建。 SQL> ed 已寫入 file afiedt.buf 1; begin 2;dbms_stats.gather_table_stats 3;(user,'T1',method_opt=>'for all indexed columns',cascade=>true); 4;dbms_stats.gather_table_stats 5;(user,'T2',method_opt=>'for all indexed columns',cascade=>true); 6* end; SQL> / PL/SQL 過程已成功完成。 C.查詢?nèi)笔≈担⒃O(shè)置好環(huán)境。 SQL> set autot off SQL> show parameters optimizer_index_cost_adj; NAME TYPE;;;;;VALUE; ------------------------------------ ----------- ------------------------------ optimizer_index_cost_adj;;integer;;100; SQL> set autot traceonly eXP stat; D.在缺省值下查詢的結(jié)果。 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=13 Card=5 Bytes=1000; );; 1;0TABLE Access (BY INDEX ROWID) OF 'T1' (TABLE) (Cost=2 Card; =1 Bytes=100) 2;1;;NESTED LOOPS (Cost=13 Card=5 Bytes=1000); 3;2;;;;TABLE ACCESS (BY INDEX ROWID) OF 'T2' (TABLE) (Cost=3 Card=5 Bytes=500);; 4;3 INDEX (RANGE SCAN) OF 'IDX_T2' (INDEX) (Cost=2 Card=; 5); 5;2;;;;INDEX (RANGE SCAN) OF 'IDX_T1' (INDEX) (Cost=1 Card=1); 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 367; recursive calls; 0; db block gets;;; 101; consistent gets; 0; physical reads;; 0; redo size; 1507; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 12; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;;; E.修改參數(shù)值,注重,引用Tom的結(jié)論,9i中這個值在0-100之間,而10g呢? SQL> alter session set optimizer_index_cost_adj=0; ERROR: ORA-00068: 值 0 對參數(shù) optimizer_index_cost_adj 無效, 必須在 1 和 10000 之間 SQL> alter session set optimizer_index_cost_adj=1; 會話已更改。 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=5 Bytes=1000); 1;0TABLE ACCESS (BY INDEX ROWID) OF 'T1' (TABLE) (Cost=1 Card; =1 Bytes=100) 2;1;;NESTED LOOPS (Cost=2 Card=5 Bytes=1000) 3;2;;;;TABLE ACCESS (BY INDEX ROWID) OF 'T2' (TABLE) (Cost=1 Card=5 Bytes=500);; 4;3 INDEX (RANGE SCAN) OF 'IDX_T2' (INDEX) (Cost=2 Card=; 5); 5;2;;;;INDEX (RANGE SCAN) OF 'IDX_T1' (INDEX) (Cost=1 Card=1); 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 1; recursive calls; 0; db block gets;;; 48; consistent gets; 0; physical reads;; 0; redo size; 1507; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; SQL> alter session set optimizer_index_cost_adj=50; 會話已更改。 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=7 Card=5 Bytes=1000); 1;0TABLE ACCESS (BY INDEX ROWID) OF 'T1' (TABLE) (Cost=1 Card; =1 Bytes=100) 2;1;;NESTED LOOPS (Cost=7 Card=5 Bytes=1000) 3;2;;;;TABLE ACCESS (BY INDEX ROWID) OF 'T2' (TABLE) (Cost=2 Card=5 Bytes=500);; 4;3 INDEX (RANGE SCAN) OF 'IDX_T2' (INDEX) (Cost=2 Card=; 5); 5;2;;;;INDEX (RANGE SCAN) OF 'IDX_T1' (INDEX) (Cost=1 Card=1); 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 1; recursive calls; 0; db block gets;;; 48; consistent gets; 0; physical reads;; 0; redo size; 1507; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; F.繼續(xù)修改參數(shù)值,改大。 SQL> alter session set optimizer_index_cost_adj=200; 會話已更改。 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=5 Bytes=1000; );; 1;0TABLE ACCESS (BY INDEX ROWID) OF 'T1' (TABLE) (Cost=4 Card; =1 Bytes=100) 2;1;;NESTED LOOPS (Cost=26 Card=5 Bytes=1000); 3;2;;;;TABLE ACCESS (BY INDEX ROWID) OF 'T2' (TABLE) (Cost=6 Card=5 Bytes=500);; 4;3 INDEX (RANGE SCAN) OF 'IDX_T2' (INDEX) (Cost=2 Card=; 5); 5;2;;;;INDEX (RANGE SCAN) OF 'IDX_T1' (INDEX) (Cost=1 Card=1); 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 1; recursive calls; 0; db block gets;;; 48; consistent gets; 0; physical reads;; 0; redo size; 1507; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; SQL> alter session set optimizer_index_cost_adj=500; 會話已更改。 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=63 Card=5 Bytes=1000; );; 1;0TABLE ACCESS (BY INDEX ROWID) OF 'T1' (TABLE) (Cost=10 Car; d=1 Bytes=100);;;;; 2;1;;NESTED LOOPS (Cost=63 Card=5 Bytes=1000); 3;2;;;;TABLE ACCESS (FULL) OF 'T2' (TABLE) (Cost=13 Card=5 By; tes=500);;; 4;2;;;;INDEX (RANGE SCAN) OF 'IDX_T1' (INDEX) (Cost=1 Card=1); 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 1; recursive calls; 0; db block gets;;; 90; consistent gets; 0; physical reads;; 0; redo size; 1507; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; SQL> alter session set optimizer_index_cost_adj=1000; 會話已更改。 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=66 Card=5 Bytes=1000; );; 1;0HASH JOIN (Cost=66 Card=5 Bytes=1000);;;; 2;1;;TABLE ACCESS (FULL) OF 'T2' (TABLE) (Cost=13 Card=5 Byte; s=500);;;;; 3;1;;TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=52 Card=26 Byt; es=2600);;; 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 1; recursive calls; 0; db block gets;;; 271; consistent gets; 213; physical reads;; 0; redo size; 1651; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; SQL> alter session set optimizer_index_cost_adj=10000; 會話已更改。 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=66 Card=5 Bytes=1000; );; 1;0HASH JOIN (Cost=66 Card=5 Bytes=1000);;;; 2;1;;TABLE ACCESS (FULL) OF 'T2' (TABLE) (Cost=13 Card=5 Byte; s=500);;;;; 3;1;;TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=52 Card=26 Byt; es=2600);;; 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 1; recursive calls; 0; db block gets;;; 271; consistent gets; 0; physical reads;; 0; redo size; 1651; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; G.現(xiàn)在看看對性能的影響。 SQL> set timing on SQL> alter session set optimizer_index_cost_adj=100; 會話已更改。 已用時間:; 00: 00: 00.00 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 已用時間:; 00: 00: 00.02 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=13 Card=5 Bytes=1000; );; 1;0TABLE ACCESS (BY INDEX ROWID) OF 'T1' (TABLE) (Cost=2 Card; =1 Bytes=100) 2;1;;NESTED LOOPS (Cost=13 Card=5 Bytes=1000); 3;2;;;;TABLE ACCESS (BY INDEX ROWID) OF 'T2' (TABLE) (Cost=3 Card=5 Bytes=500);; 4;3 INDEX (RANGE SCAN) OF 'IDX_T2' (INDEX) (Cost=2 Card=; 5); 5;2;;;;INDEX (RANGE SCAN) OF 'IDX_T1' (INDEX) (Cost=1 Card=1); 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 0; recursive calls; 0; db block gets;;; 48; consistent gets; 0; physical reads;; 0; redo size; 1507; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; SQL> alter session set optimizer_index_cost_adj=1; 會話已更改。 已用時間:; 00: 00: 00.00 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 已用時間:; 00: 00: 00.02 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=5 Bytes=1000); 1;0TABLE ACCESS (BY INDEX ROWID) OF 'T1' (TABLE) (Cost=1 Card; =1 Bytes=100) 2;1;;NESTED LOOPS (Cost=2 Card=5 Bytes=1000) 3;2;;;;TABLE ACCESS (BY INDEX ROWID) OF 'T2' (TABLE) (Cost=1 Card=5 Bytes=500);; 4;3 INDEX (RANGE SCAN) OF 'IDX_T2' (INDEX) (Cost=2 Card=; 5); 5;2;;;;INDEX (RANGE SCAN) OF 'IDX_T1' (INDEX) (Cost=1 Card=1); 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 0; recursive calls; 0; db block gets;;; 48; consistent gets; 0; physical reads;; 0; redo size; 1507; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; SQL> alter session set optimizer_index_cost_adj=10000; 會話已更改。 已用時間:; 00: 00: 00.00 SQL> ed 已寫入 file afiedt.buf 1; select * from t1,t2 2; where t1.id=t2.id 3*and t2.id between 50 and 55 SQL> / 已選擇30行。 已用時間:; 00: 00: 00.03 執(zhí)行計(jì)劃 ----------------------------------------------------------;;; 0;;;SELECT STATEMENT Optimizer=CHOOSE (Cost=66 Card=5 Bytes=1000; );; 1;0HASH JOIN (Cost=66 Card=5 Bytes=1000);;;; 2;1;;TABLE ACCESS (FULL) OF 'T2' (TABLE) (Cost=13 Card=5 Byte; s=500);;;;; 3;1;;TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=52 Card=26 Byt; es=2600);;; 統(tǒng)計(jì)信息 ----------------------------------------------------------;;; 0; recursive calls; 0; db block gets;;; 271; consistent gets; 0; physical reads;; 0; redo size; 1651; bytes sent via SQL*Net to client 523; bytes received via SQL*Net from client;; 3; SQL*Net roundtrips to/from client; 0; sorts (memory);; 0; sorts (disk);;;; 30; rows processed;; 來具體分析一下。 首先,10g中OPTIMIZER_INDEX_COST_ADJ的取值范圍發(fā)生了改變。9i中為0-100,而10g中為1-10000。 其次,由于測試環(huán)境的不同,Tom的測試結(jié)果是在缺省值(100)的環(huán)境下,就已經(jīng)和上面取值500時一樣了,即對T2全表掃描而T1使用索引。Tom試驗(yàn)中,減小取值直至0,訪問路徑就變成使用兩個索引,而并不會出現(xiàn)均不使用索引的情況。除去系統(tǒng)的不同(可能導(dǎo)致取缺省值時訪問路徑是否一致),只看變化趨勢,顯然10g中靈活性更高,1-10000的取值使得CBO可以覆蓋所有的訪問路徑。另一方面,正如Tom的結(jié)論所說,OPTIMIZER_INDEX_COST_ADJ的取值越大,優(yōu)化器越傾向于使用全表掃描,取值越小,優(yōu)化器越傾向于使用索引。 再次,我們對比相同訪問路徑下的不同點(diǎn)。在取值從1變化到200(1-50-100-200)的過程中,優(yōu)化器計(jì)算出的代價是持續(xù)增長的,而從1000到10000則是不變的。這說明這個參數(shù)與索引I/O的代價有關(guān),而和全表掃描并無關(guān)系,這與Tom所說的并不矛盾,不過顯然更精確一點(diǎn)。 最后我們其實(shí)應(yīng)該看到,雖然有如上所說的代價變化問題,同一訪問路徑下實(shí)際的運(yùn)行性能并無區(qū)別,由于數(shù)據(jù)量比較小,上面的例子也許不能很好的說明這一點(diǎn),不過想想Oracle用相同的路徑去執(zhí)行,也沒有理由不同性能吧。 好,來看看官方文檔吧。10G的官方文檔(Reference)中對這個參數(shù)描述如下: OPTIMIZER_INDEX_COST_ADJ Parameter type Integer;參數(shù)類型為整數(shù) Default value 100 缺省值為100 Modifiable ALTER SESSION, ALTER SYSTEM; 可通過ALTER SESSION, ALTER SYSTEM來修改 Range of values 1 to 10000取值范圍是1-10000 OPTIMIZER_INDEX_COST_ADJ lets you tune optimizer behavior for access path selection to be more or less index friendly—that is, TO MAKE THE OPTIMIZER MORE OR LESS PRONE TO SELECTING AN INDEX ACCESS PATH OVER A FULL TABLE SCAN. The default for this parameter is 100 percent, at which the optimizer evaluates index access paths at the regular cost. Any other value makes the optimizer evaluate the access path at that percentage of the regular cost. For example, a setting of 50 makes the index access path look half as expensive as normal. Note: The adjustment does not apply to user-defined cost functions for domain indexes. 注重:調(diào)整對用戶為域索引自定義的代價函數(shù)無效。 描述的第一段正證實(shí)了參數(shù)的作用。第二段值得注重,正如Tom所說(我覺得假如他把原文versus前后顛倒一下會更好,即單塊I/O代價比之多塊I/O),參數(shù)表達(dá)了索引訪問代價對比普通(表掃描)代價的比值。不過還有一個疑問我暫時還沒辦法想通,什么條件下索引I/O居然比掃描慢100倍(取值10000)? 結(jié)論: OPTIMIZER_INDEX_COST_ADJ通過指明索引I/O代價與掃描全表I/O代價的相對比值來影響CBO的行為,取值越小,CBO越傾向于使用索引,取值越大,越傾向于全表掃描。而缺省值100,指明缺省下,二者的代價是相等。與9i不同的是,10g中OPTIMIZER_INDEX_COST_ADJ的取值范圍從0-100改為1-10000,相信是更合理的取值(至少按照文檔的說明,作為代價的比值,取0是不合適的,除非說索引I/O的代價相對于全表掃描I/O代價是無窮小的)。
標(biāo)簽: Oracle 數(shù)據(jù)庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品88久久久久久| 成人亚洲一区二区| 亚洲一区二区网站| 免费观看久久久4p| 欧美日韩一视频区二区| 国产精品久久久久久久久久白浆| 精品久久免费| 1024精品久久久久久久久| 亚洲免费专区| 久久精品一区二区国产| 欧美日韩色图| 亚洲免费毛片| 日产精品一区二区| 欧美在线综合| 午夜亚洲福利| 久久久久久亚洲精品美女| 久久久蜜桃一区二区人| 亚洲精品美女| 色爱综合网欧美| 亚洲欧美日韩视频二区| 国产激情精品一区二区三区| 999精品一区| 日韩不卡一区二区三区| 欧美aa一级| 日本亚洲视频| av在线资源| 日韩欧美中文字幕电影| www.九色在线| 亚洲精品伊人| 国产一区二区精品福利地址| 亚洲中午字幕| 久久av资源| 亚洲一区二区三区高清| 精品网站999| 亚洲综合精品| 成人在线黄色| 亚洲精品女人| 久久精品青草| 国产精品欧美在线观看| 激情91久久| 国产suv精品一区二区四区视频| 久久av一区二区三区| 精品国产中文字幕第一页| 久色成人在线| 日产精品一区二区| 青青草伊人久久| 亚洲激情国产| 97精品在线| 国产精品亚洲欧美日韩一区在线 | 在线日韩中文| 国产精品视频一区二区三区 | 精品国产欧美| 日韩精品国产精品| 999国产精品视频| 免费在线成人| 日韩视频一二区| 欧美精品自拍| 色综合www| 精品一区二区三区在线观看视频| 亚洲毛片网站| 亚洲黄色在线| 国产精品99免费看| 91一区二区三区四区| 国产精品成人国产| 只有精品亚洲| 精品在线91| 色婷婷精品视频| 福利一区二区| 国产伦精品一区二区三区千人斩| 国产一区日韩一区| av最新在线| 另类欧美日韩国产在线| 亚洲一区二区小说| 精品1区2区3区4区| 女同性一区二区三区人了人一| 成人av三级| 成人在线观看免费视频| 麻豆精品蜜桃视频网站| 日韩高清在线不卡| 日韩精品一级二级| 亚洲深夜av| 尹人成人综合网| 影院欧美亚洲| 亚洲女同一区| 午夜欧美在线| 五月综合激情| 午夜电影亚洲| 尤物在线精品| 免费在线观看视频一区| 亚洲在线观看| 亚洲在线观看| 日韩精品一二三区| 视频国产精品| 日本三级亚洲精品| 欧美在线观看天堂一区二区三区| 亚洲精品在线a| 日本国产亚洲| 欧美日韩中出| 国产精品亚洲人成在99www| 国产一级成人av| 国产精品一站二站| 欧美黑人做爰爽爽爽| 欧美国产极品| 精品视频高潮| 日韩三级精品| 国产欧美成人| 国精品产品一区| 国内自拍视频一区二区三区| 日本黄色精品| 99视频精品视频高清免费| 激情久久久久久久| 国产精品毛片在线看| 免费观看在线色综合| 亚洲精品人人| 国产精品一区二区三区www| 精品国产鲁一鲁****| 色天使综合视频| 尤物在线精品| 日韩高清在线不卡| 精品免费av| 久久精品国产68国产精品亚洲| 亚州av乱码久久精品蜜桃| 水野朝阳av一区二区三区| 综合一区av| 国产精品99精品一区二区三区∴| 欧美一区不卡| 日本蜜桃在线观看视频| 亚洲福利专区| 亚洲欧美日韩专区| 91亚洲无吗| 国产在线一区不卡| 欧美成人午夜| 日韩激情综合| 国产aⅴ精品一区二区三区久久 | 国产日韩一区二区三区在线| 日韩av一区二区在线影视| 日韩精品亚洲专区| 欧美偷窥清纯综合图区| 国产精品九九| 国产精品不卡| 美女精品一区二区| 婷婷六月综合| 亚洲一区欧美| 国产精一区二区| 91免费精品| 欧美成人精品| 亚洲美女91| 麻豆精品新av中文字幕| www.com.cn成人| 午夜国产精品视频| 亚洲精品动态| 国产精品.xx视频.xxtv| 国产精品毛片一区二区在线看| 91亚洲国产成人久久精品| 久久久夜夜夜| 国产亚洲福利| 国产欧美69| 群体交乱之放荡娇妻一区二区| 99在线精品免费视频九九视| 婷婷亚洲成人| 久久免费福利| 久久久久久美女精品| 蜜桃久久久久久久| 国产精品黄色| 精精国产xxxx视频在线播放| 免费久久99精品国产| 欧美国产专区| 亚洲精品在线观看91| 国产伦精品一区二区三区在线播放| 国产66精品| 亚洲大全视频| 97久久亚洲| 久久国产欧美| 日日摸夜夜添夜夜添国产精品| 精品亚洲二区| 久久国产精品99国产| 国产精品久久久网站| 亚洲综合在线电影| 日韩专区一卡二卡| 麻豆精品蜜桃视频网站| 黄色日韩在线| 久久久亚洲欧洲日产| 一本一道久久a久久精品蜜桃| 日韩av在线免费观看不卡| 九色porny丨国产首页在线| 免费看精品久久片| 老牛影视精品| 日本不卡高清| 午夜精品成人av| 日本午夜精品一区二区三区电影 | 国产精品sss在线观看av| 999国产精品| 国产精品久久久久久久久久白浆| 欧美.日韩.国产.一区.二区| 国产精品亚洲四区在线观看| 亚洲免费观看| 欧美经典一区| 99在线观看免费视频精品观看| 精品视频自拍| 视频在线观看一区|