亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle 10g(10.1.0.2)中的OPTIMIZER_INDEX_COST_ADJ

2024-08-29 13:48:11
字體:
來源:轉載
供稿:網友

  
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中介紹了參數OPTIMIZER_INDEX_COST_ADJ,并認為可以理解為Oracle執行多塊(MultiBlock)I/O(比如全表掃描)的代價與執行單塊(Single-block)I/O代價的相對比例。Tom指出,9i下該參數缺省值為100,意即二者擁有相同的代價,若減小,則CBO傾向于使用索引(即單塊I/O),反之則傾向于全表掃描(多塊I/O)。Tom同樣給出了一個不錯的例子。
    在自己的手提上試驗了一下,硬盤大小原因,只裝了一個Oracle 10g(10.1.0.2),誰知就發現該參數在10g下取值發生了改變。我們先來看一下參照Tom的實驗:
    A. 創建數據表。
      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;
     
      表已創建。
     
      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> /
     
      表已創建。
     
    B.創建索引并分析。
      SQL> create index idx_t1 on t1(id);
     
      索引已創建。
     
      SQL> create index idx_t2 on t2(id);
     
      索引已創建。
     
      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.查詢缺省值,并設置好環境。
      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.在缺省值下查詢的結果。
      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行。
     
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=13 Card=5 Bytes=1000         
                )                                                                    
                                                                                     
         1    0   TABLE 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)         
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
              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.修改參數值,注重,引用Tom的結論,9i中這個值在0-100之間,而10g呢?
      SQL> alter session set optimizer_index_cost_adj=0;
      ERROR:
      ORA-00068: 值 0 對參數 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行。
     
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=5 Bytes=1000)         
         1    0   TABLE 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)         
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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行。
     
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=7 Card=5 Bytes=1000)         
         1    0   TABLE 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)         
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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.繼續修改參數值,改大。

      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行。
     
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=5 Bytes=1000         
                )                                                                    
                                                                                     
         1    0   TABLE 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)         
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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行。
     
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=63 Card=5 Bytes=1000         
                )                                                                    
                                                                                     
         1    0   TABLE 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)         
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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行。
     
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=66 Card=5 Bytes=1000         
                )                                                                    
                                                                                     
         1    0   HASH 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)                                                             
                                                                                     
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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行。
     
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=66 Card=5 Bytes=1000         
                )                                                                    
                                                                                     
         1    0   HASH 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)                                                             
                                                                                     
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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.現在看看對性能的影響。

      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
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=13 Card=5 Bytes=1000         
                )                                                                    
                                                                                     
         1    0   TABLE 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)         
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=5 Bytes=1000)         
         1    0   TABLE 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)         
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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
     
      執行計劃
      ----------------------------------------------------------                     
         0      SELECT STATEMENT Optimizer=CHOOSE (Cost=66 Card=5 Bytes=1000         
                )                                                                    
                                                                                     
         1    0   HASH 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)                                                             
                                                                                     
     
     
     
     
      統計信息
      ----------------------------------------------------------                     
                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的取值范圍發生了改變。9i中為0-100,而10g中為1-10000。
    其次,由于測試環境的不同,Tom的測試結果是在缺省值(100)的環境下,就已經和上面取值500時一樣了,即對T2全表掃描而T1使用索引。Tom試驗中,減小取值直至0,訪問路徑就變成使用兩個索引,而并不會出現均不使用索引的情況。除去系統的不同(可能導致取缺省值時訪問路徑是否一致),只看變化趨勢,顯然10g中靈活性更高,1-10000的取值使得CBO可以覆蓋所有的訪問路徑。另一方面,正如Tom的結論所說,OPTIMIZER_INDEX_COST_ADJ的取值越大,優化器越傾向于使用全表掃描,取值越小,優化器越傾向于使用索引。
    再次,我們對比相同訪問路徑下的不同點。在取值從1變化到200(1-50-100-200)的過程中,優化器計算出的代價是持續增長的,而從1000到10000則是不變的。這說明這個參數與索引I/O的代價有關,而和全表掃描并無關系,這與Tom所說的并不矛盾,不過顯然更精確一點。
    最后我們其實應該看到,雖然有如上所說的代價變化問題,同一訪問路徑下實際的運行性能并無區別,由于數據量比較小,上面的例子也許不能很好的說明這一點,不過想想Oracle用相同的路徑去執行,也沒有理由不同性能吧。
    好,來看看官方文檔吧。10G的官方文檔(Reference)中對這個參數描述如下:
    OPTIMIZER_INDEX_COST_ADJ
      Parameter type Integer    參數類型為整數
      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.
      注重:調整對用戶為域索引自定義的代價函數無效。
    描述的第一段正證實了參數的作用。第二段值得注重,正如Tom所說(我覺得假如他把原文versus前后顛倒一下會更好,即單塊I/O代價比之多塊I/O),參數表達了索引訪問代價對比
普通(表掃描)代價的比值。不過還有一個疑問我暫時還沒辦法想通,什么條件下索引I/O居然比掃描慢100倍(取值10000)?
   
結論:
    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代價是無窮小的)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合av影视| 亚洲va男人天堂| 日韩免费在线看| 欧美做受高潮电影o| 亚洲第一网站免费视频| 性色av香蕉一区二区| 亚洲欧美日韩综合| 欧美国产日产韩国视频| 91高清视频免费观看| 欧美在线精品免播放器视频| 亚洲91av视频| 亚洲天堂av在线免费观看| 亚洲综合精品伊人久久| 国内精品久久久久久中文字幕| 日韩欧美国产免费播放| 这里只有视频精品| 欧美性感美女h网站在线观看免费| 日韩在线观看成人| 美女久久久久久久| 久久香蕉国产线看观看网| 成人免费视频xnxx.com| 欧美激情aaaa| 国产91免费看片| 欧美午夜精品久久久久久浪潮| 欧美日韩成人黄色| 亚洲国产小视频| 日韩国产高清污视频在线观看| 日韩精品小视频| 精品久久香蕉国产线看观看亚洲| 成人福利网站在线观看11| 亚洲天堂av电影| 久久影院资源站| 亚洲一区二区三区四区视频| 成人激情综合网| 91理论片午午论夜理片久久| 日本不卡免费高清视频| 亚洲精品视频在线播放| 精品国产一区二区三区在线观看| 亚洲最大激情中文字幕| 欧美日韩福利视频| 精品国产一区二区三区久久| 久久影视电视剧凤归四时歌| 高清日韩电视剧大全免费播放在线观看| 久热精品视频在线免费观看| 97视频在线观看免费高清完整版在线观看| 国产精品久久久久久久久久东京| 一区二区三区国产视频| 久久这里有精品视频| 97成人精品区在线播放| 国产69精品99久久久久久宅男| 国内自拍欧美激情| 国产丝袜精品视频| 日本欧美一二三区| 国产欧美精品久久久| 国产精品黄视频| 国产乱人伦真实精品视频| 欧美性xxxxx极品娇小| 精品丝袜一区二区三区| 国产精品久久久久久亚洲影视| 亚洲一区二区三区在线免费观看| 久久久黄色av| 欧美精品激情视频| 国产欧美一区二区三区四区| 亚洲欧洲中文天堂| 欧美大学生性色视频| 欧美性猛交99久久久久99按摩| 国产亚洲欧美一区| 国产97在线观看| 久久精品亚洲94久久精品| 日韩欧美a级成人黄色| 韩曰欧美视频免费观看| 欧美精品成人91久久久久久久| 最近2019免费中文字幕视频三| 国产亚洲激情视频在线| 国产不卡视频在线| 亚洲国产成人av在线| 欧美夫妻性生活视频| 欧美激情xxxx性bbbb| 91精品国产精品| 91精品啪aⅴ在线观看国产| 精品无码久久久久久国产| 国自产精品手机在线观看视频| 欧美另类暴力丝袜| 国产精品网红福利| 丝袜亚洲欧美日韩综合| 欧美激情在线狂野欧美精品| 日韩在线视频观看正片免费网站| 久久久免费电影| 久久精品人人做人人爽| 亚洲精品视频中文字幕| 亚洲精品国产精品国自产在线| 日韩经典中文字幕在线观看| 午夜精品一区二区三区视频免费看| 2019中文字幕全在线观看| 黑人巨大精品欧美一区二区三区| 福利一区视频在线观看| 中文字幕日韩在线观看| 久久精品成人欧美大片| 国产一区香蕉久久| 亚洲精品福利在线观看| 欧美一区二三区| 亚洲国产精彩中文乱码av| 伊人久久久久久久久久| 久久综合色88| 国产成人一区二区三区电影| 日韩一区二区欧美| 欧美中文字幕在线播放| 国产精品∨欧美精品v日韩精品| 欧美精品手机在线| 九九视频直播综合网| 91色在线观看| 九九热精品视频在线播放| 国产成+人+综合+亚洲欧洲| 国产在线视频2019最新视频| 国产精品丝袜一区二区三区| 亚洲美女在线视频| 中国china体内裑精亚洲片| 91久久精品一区| 欧美色欧美亚洲高清在线视频| 亚洲精品自拍第一页| 91日韩在线视频| 亚洲人午夜精品| 欧美激情日韩图片| 欧美在线免费观看| 精品久久久91| 亚洲女人天堂网| 中文字幕av一区| 在线电影中文日韩| 久久久精品美女| 69久久夜色精品国产69乱青草| 久久精品国产96久久久香蕉| 国产精品久久久久久av福利软件| 日本午夜人人精品| 美女撒尿一区二区三区| 欧美国产日本在线| 欧美日韩精品在线播放| 91久久久国产精品| 91久久久久久国产精品| 亚洲xxx大片| 91精品视频免费观看| 亚洲一区二区久久久| 亚洲国产精品久久久久| 国产一区二区丝袜高跟鞋图片| 久久视频精品在线| 中文字幕亚洲字幕| 欧美影院久久久| 久久99热精品这里久久精品| 成人欧美一区二区三区黑人孕妇| 精品成人在线视频| 国产91精品久久久久久| 午夜精品三级视频福利| 欧美日韩成人在线观看| 欧美日韩免费区域视频在线观看| 亚洲精品wwwww| 国产精品偷伦视频免费观看国产| 日韩在线视频播放| 欧美丰满片xxx777| 狠狠干狠狠久久| 欧美夫妻性生活视频| 成人免费视频xnxx.com| 久久免费在线观看| 亚洲欧美国产精品专区久久| 成人免费淫片视频软件| wwwwwwww亚洲|