精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊怎樣使用Oracle分區表

數據庫 Oracle
單表的數據量如果太大,會影響到讀寫性能。我們可以使用分庫分表來解決單表的性能問題。Oracle的分區表是將一張大表在物理上分成幾張較小的表,從邏輯上來看仍然是一張完整的表。

[[377098]]

本文轉載自微信公眾號「 jinjunzhu」,作者 jinjunzhu 。轉載本文請聯系 jinjunzhu公眾號。

單表的數據量如果太大,會影響到讀寫性能。我們可以使用分庫分表來解決單表的性能問題。Oracle的分區表是將一張大表在物理上分成幾張較小的表,從邏輯上來看仍然是一張完整的表。這樣每次DML操作可以只考慮其中一張分區表。oracle建議單表大小超過2GB時就使用分區表。

今天我們就來聊一聊分區表的使用。

分區類型

范圍分區

范圍分區是最常用的分區方法,它使用分區鍵來作為劃分分區的依據,分區鍵可以使用時間、id等易于比較的字段。

1.使用id進行分區

我們創建一張操作記錄表,有3個字段,分別是id,type和op_time,這里我們使用id對這張表做3個分區,分別為t_operate_log_1(id<100),t_operate_log_2(100<=id<200),t_operate_log_3(id>=200),建表sql如下:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar(1), 
  4.   op_time date 
  5. PARTITION BY RANGE(id) 
  6.  partition t_operate_log_1 values less than (100), 
  7.  partition t_operate_log_2 values less than (200), 
  8.  partition t_operate_log_3 values less than (300) 

創建表成功后,我們插入3條數據,id分別是1,100,200,sql如下:

  1. insert into t_operate_log values(1, '1', sysdate); 
  2. insert into t_operate_log values(100, '1', sysdate); 
  3. insert into t_operate_log values(200, '1', sysdate); 

下面這3條sql分別可以查到id是1,100,200的這3條記錄:

  1. select * from t_operate_log partition(t_operate_log_1); 
  2. select * from t_operate_log partition(t_operate_log_2); 
  3. select * from t_operate_log partition(t_operate_log_3); 

下面這個sql可以查到t_operate_log中所有記錄:

  1. select * from t_operate_log 

注意:我們可以用下面命令再添加一個分區:

  1. ALTER TABLE t_operate_log ADD PARTITION t_operate_log_4 VALUES LESS THAN(400); 

但是要注意一點,如果一個分區的范圍是maxvalue(比如把300替換成maxvalue),添加分區會失敗。

我們也可以用下面命令刪除一個分區:

  1. ALTER TABLE t_operate_log DROP PARTITION t_operate_log_4; 

2.使用時間進行分區

我們還是使用上面的表進行試驗,這次我們使用op_time字段做3個分區,分別為:

  1. t_operate_log_1(op_time時間小于2019-01-17) 
  2.  
  3. t_operate_log_2(2019-01-17<=id<2020-01-17),t_operate_log_3(id>=2020-01-17) 

建表sql如下:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar(1), 
  4.   op_time date 
  5. PARTITION BY RANGE(op_time) 
  6.  partition t_operate_log_1 values less than (to_date('2019-01-17','yyyy-MM-dd')), 
  7.  partition t_operate_log_2 values less than (to_date('2020-01-17','yyyy-MM-dd')), 
  8.  partition t_operate_log_3 values less than (maxvalue) 

創建表成功后,我們插入3條數據,id分別是1,2,3,時間分別是2019-01-16、2019-01-17、2020-01-17:

  1. insert into t_operate_log values(1, '1', to_date('2019-01-16','yyyy-MM-dd')); 
  2. insert into t_operate_log values(2, '1', to_date('2019-01-17','yyyy-MM-dd')); 
  3. insert into t_operate_log values(3, '1', to_date('2020-01-17','yyyy-MM-dd')); 

下面這3條sql分別可以查到id是1,2,3的這3條記錄:

  1. select * from t_operate_log partition(t_operate_log_1); 
  2. select * from t_operate_log partition(t_operate_log_2); 
  3. select * from t_operate_log partition(t_operate_log_3); 

下面這個sql可以查到t_operate_log中所有記錄:

  1. select * from t_operate_log 

列表分區

列表分區的使用場景是表中的某一列只有固定幾個值,比如上面的操作日志表,假如我們的type有4個類型:add、edit、delete、query,我們建立分區表如下:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar2(10), 
  4.   op_time date 
  5. PARTITION BY list(type) 
  6.  partition t_operate_log_add values('add'), 
  7.  partition t_operate_log_delete values('delete'), 
  8.  partition t_operate_log_edit values('edit'), 
  9.  partition t_operate_log_query values('query'

創建表成功后,我們插入4條數據,type分別為add,delete,edit,query

  1. insert into t_operate_log values(1, 'add', to_date('2019-01-16','yyyy-MM-dd')); 
  2. insert into t_operate_log values(2, 'delete', to_date('2019-01-16','yyyy-MM-dd')); 
  3. insert into t_operate_log values(3, 'edit', to_date('2020-01-16','yyyy-MM-dd')); 
  4. insert into t_operate_log values(4, 'query', to_date('2020-01-16','yyyy-MM-dd')); 

下面的4條sql分別可以查出每一種type類型對應的數據:

  1. select * from t_operate_log partition(t_operate_log_add); 
  2. select * from t_operate_log partition(t_operate_log_delete); 
  3. select * from t_operate_log partition(t_operate_log_edit); 
  4. select * from t_operate_log partition(t_operate_log_query); 

注意:我們可以給列表分區增加元素,比如我們在t_operate_log_query這個分區表中增加一個元素"select",sql如下:

  1. ALTER TABLE t_operate_log MODIFY PARTITION t_operate_log_query ADD VALUES('select'); 

也可以給列表分區刪除元素,比如我們在t_operate_log_query這個分區表中刪除元素"select",sql如下:

  1. ALTER TABLE t_operate_log MODIFY PARTITION t_operate_log_query DROP VALUES('select'); 

如果每個分區的數據量不大,沒有必須做太多分區,我們創建分區時可以減少數量,如下創建分區的sql我們把t_operate_log創建成了2個分區:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar2(10), 
  4.   op_time date 
  5. PARTITION BY list(type) 
  6.  partition t_operate_log_add_del values('add','delete'), 
  7.  partition t_operate_log_edit_query values('edit','query'

創建成功后我們還是使用上面的insert語句插入4條數據,成功后我們用下面的sql查詢,分別可以查詢出2條數據:

  1. #查詢出type是adddelete的數據 
  2. select * from t_operate_log partition(t_operate_log_add_del); 
  3. #查詢出type是edit和query的數據 
  4. select * from t_operate_log partition(t_operate_log_edit_query); 

HASH分區

范圍分區和列表分區都使用了某一個字段來做分區鍵,使用這個字段的值作為分區的依據,使用簡單。但是有一個問題就是分區鍵的區分度要大,不然容易存在分區數據量嚴重不均勻的情況。

如果沒有一個合適的分區鍵,使用HASH分區就是一個很好的選擇,HASH分區的好處是可以讓分區表數據分布均勻。我們還是以上面的表為例,我們使用HASH分區來創建4個分區表,sql如下:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar2(10), 
  4.   op_time date 
  5. PARTITION BY hash(id) 
  6.  partition t_operate_log_1, 
  7.  partition t_operate_log_2, 
  8.  partition t_operate_log_3, 
  9.  partition t_operate_log_4 

創建成功后我們插入100條數據,id是從1~100,我們分別查詢4個分區表的數據,數據條數分別是20、28、25、27。

使用HASH分區有2個建議:

  • 分區鍵的值最好是連續的
  • 分區數量最好是2的n次方,這樣可以對hash運算更加友好(想想java中HashMap構造函數的initialCapacity參數)

注意:

  • HASH分區支持添加操作,比如我們添加一個分區,sql如下:
  1. ALTER TABLE t_operate_log ADD PARTITION t_operate_log_5; 
  • 創建后我們查詢t_operate_log_5這張表,發現也有數據,這是因為添加或刪除分區時,所有數據會重新計算HASH值,重新分配到不同的分區表中。
  • HASH分區是不能刪除的,刪除會報“ORA-14255:不能對范圍、列表,組合范圍或組合列表方式對表進行分區”

范圍列表組合分區

在一些復雜的場景下,我們可以使用范圍和列表組合分區來進行分區,比如在前面講范圍分區和列表分區的例子,我們做一個范圍列表組合分區的改進,sql如下:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar2(10), 
  4.   op_time date 
  5. PARTITION BY RANGE(op_time) SUBPARTITION BY LIST (type)   
  6. (   
  7.    PARTITION t_operate_log_time_1 VALUES LESS THAN(to_date('2021-01-16','yyyy-MM-dd')) 
  8.   (        
  9.      SUBPARTITION t_operate_log_add_1 values('add'), 
  10.      SUBPARTITION t_operate_log_delete_1 values('delete'), 
  11.      SUBPARTITION t_operate_log_edit_1 values('edit'), 
  12.      SUBPARTITION t_operate_log_query_1 values('query'
  13.   ),    
  14.    PARTITION t_operate_log_time_2 VALUES LESS THAN (to_date('2021-01-17','yyyy-MM-dd')) 
  15.   (    
  16.        SUBPARTITION t_operate_log_add_2 values('add'), 
  17.      SUBPARTITION t_operate_log_delete_2 values('delete'), 
  18.      SUBPARTITION t_operate_log_edit_2 values('edit'), 
  19.      SUBPARTITION t_operate_log_query_2 values('query'
  20.   )    

上面我按照op_time做了分區,然后按照type做了子分區,這是我插入8條數據,每張子分區表一條,sql如下:

  1. insert into t_operate_log values(1, 'add', to_date('2021-01-15','yyyy-MM-dd')); 
  2. insert into t_operate_log values(2, 'delete', to_date('2021-01-15','yyyy-MM-dd')); 
  3. insert into t_operate_log values(3, 'edit', to_date('2021-01-15','yyyy-MM-dd')); 
  4. insert into t_operate_log values(4, 'query', to_date('2021-01-15','yyyy-MM-dd')); 
  5. insert into t_operate_log values(5, 'add', to_date('2021-01-16','yyyy-MM-dd')); 
  6. insert into t_operate_log values(6, 'delete', to_date('2021-01-16','yyyy-MM-dd')); 
  7. insert into t_operate_log values(7, 'edit', to_date('2021-01-16','yyyy-MM-dd')); 
  8. insert into t_operate_log values(8, 'query', to_date('2021-01-16','yyyy-MM-dd')); 

然后我用下面的sql可以查出每張子分區表有1條數據:

  1. select * from t_operate_log SUBPARTITION(t_operate_log_add_1); 
  2. select * from t_operate_log SUBPARTITION(t_operate_log_delete_1); 
  3. select * from t_operate_log SUBPARTITION(t_operate_log_edit_1); 
  4. select * from t_operate_log SUBPARTITION(t_operate_log_query_1); 
  5. select * from t_operate_log SUBPARTITION(t_operate_log_add_2); 
  6. select * from t_operate_log SUBPARTITION(t_operate_log_delete_2); 
  7. select * from t_operate_log SUBPARTITION(t_operate_log_edit_2); 
  8. select * from t_operate_log SUBPARTITION(t_operate_log_query_2); 

注意:我們可以添加子分區,比如我們給t_operate_log_time_1這個分區添加一個子分區,列表分區的type字段值是'select',sql如下:

  1. ALTER TABLE t_operate_log MODIFY PARTITION t_operate_log_time_1 ADD SUBPARTITION t_operate_log_select_1 values('select');   

我們也可以刪除子分區,比如刪除type是'select'的這個分區,sql如下:

  1. ALTER TABLE t_operate_log DROP SUBPARTITION t_operate_log_select_1; 

范圍和HASH組合分區

如果范圍列表組合分區導致分區表數據不太均衡時,我們可以考慮范圍分區和HASH分區來組合使用,看如下的建表sql:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar2(10), 
  4.   op_time date 
  5. PARTITION BY RANGE(op_time) SUBPARTITION BY HASH (id)   
  6. (   
  7.    PARTITION t_operate_log_time_1 VALUES LESS THAN(to_date('2021-01-16','yyyy-MM-dd')) 
  8.   (        
  9.      SUBPARTITION t_operate_log_1, 
  10.      SUBPARTITION t_operate_log_2, 
  11.      SUBPARTITION t_operate_log_3, 
  12.      SUBPARTITION t_operate_log_4 
  13.   ),    
  14.    PARTITION t_operate_log_time_2 VALUES LESS THAN (to_date('2021-01-17','yyyy-MM-dd')) 
  15.   (    
  16.      SUBPARTITION t_operate_log_5, 
  17.      SUBPARTITION t_operate_log_6, 
  18.      SUBPARTITION t_operate_log_7, 
  19.      SUBPARTITION t_operate_log_8 
  20.   )    

我們用下面的sql插入8條記錄:

  1. insert into t_operate_log values(1, 'add', to_date('2021-01-15','yyyy-MM-dd')); 
  2. insert into t_operate_log values(2, 'delete', to_date('2021-01-15','yyyy-MM-dd')); 
  3. insert into t_operate_log values(3, 'edit', to_date('2021-01-15','yyyy-MM-dd')); 
  4. insert into t_operate_log values(4, 'query', to_date('2021-01-15','yyyy-MM-dd')); 
  5. insert into t_operate_log values(5, 'add', to_date('2021-01-16','yyyy-MM-dd')); 
  6. insert into t_operate_log values(6, 'delete', to_date('2021-01-16','yyyy-MM-dd')); 
  7. insert into t_operate_log values(7, 'edit', to_date('2021-01-16','yyyy-MM-dd')); 
  8. insert into t_operate_log values(8, 'query', to_date('2021-01-16','yyyy-MM-dd')); 

我們分別查詢這8張表的記錄時,發現并不是每張表中1條數據,這是使用了HASH分區的原因。

列表和HASH組合分區

我們也可以使用列表和HASH做組合進行分區,建表sql如下:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar2(10), 
  4.   op_time date 
  5. PARTITION BY list(type) SUBPARTITION BY HASH (id)   
  6. (   
  7.    PARTITION t_operate_log_type_add VALUES('add'
  8.   (        
  9.      SUBPARTITION t_operate_log_add_1, 
  10.      SUBPARTITION t_operate_log_add_2 
  11.   ),    
  12.    PARTITION t_operate_log_type_delete VALUES('delete'
  13.   (    
  14.      SUBPARTITION t_operate_log_delete_1, 
  15.      SUBPARTITION t_operate_log_delete_2 
  16.   ) ,   
  17.    PARTITION t_operate_log_type_edit VALUES('edit'
  18.   (        
  19.      SUBPARTITION t_operate_log_edit_1, 
  20.      SUBPARTITION t_operate_log_edit_2 
  21.   ),    
  22.    PARTITION t_operate_log_type_query VALUES('query'
  23.   (    
  24.      SUBPARTITION t_operate_log_query_1, 
  25.      SUBPARTITION t_operate_log_query_2 
  26.   ) 

注意事項

1.創建分區表時可以選擇TABLESPACE,比如下面的sql:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar2(10), 
  4.   op_time date 
  5. PARTITION BY list(type) 
  6.  partition t_operate_log_add_del values('add','delete') TABLESPACE LOG, 
  7.  partition t_operate_log_edit_query values('edit','query') TABLESPACE LOG 

2.使用下面sql可以查看分區列表和子分區列表,TABLE_NAME要大寫:

  1. SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='T_OPERATE_LOG'
  2. SELECT * FROM USER_TAB_SUBPARTITIONS WHERE TABLE_NAME='T_OPERATE_LOG'

3.如果表中只有一個分區,那是不能刪除分區的,刪除的時候報ORA-14083:無法刪除分區表的唯一分區

4.除了添加和刪除,分區還支持合并、拆分、重命名等多個操作,感興趣的可以自己研究。

分區索引創建

Oracle分區索引有2種,local索引和global索引。

首先我要解釋幾個概念,從官網翻譯:

  1. Local - All index entries in a single partition will correspond to a single table partition (equipartitioned). They are created with the LOCAL keyword and support partition independance. Equipartioning allows oracle to be more efficient whilst devising query plans. 
  2. #本地索引 - 單個分區中的所有索引項只對應于單個表分區。使用LOCAL關鍵字創建,并且支持分區獨立性。本地索引使oracle在設計查詢計劃時更加高效。 
  3. Global - Index in a single partition may correspond to multiple table partitions. They are created with the GLOBAL keyword and do not support partition independance. Global indexes can only be range partitioned and may be partitioned in such a fashion that they look equipartitioned, but Oracle will not take advantage of this structure. 
  4. #全局索引 - 單個分區中的索引對應于多個表分區。使用GLOBAL關鍵字創建,不支持分區獨立性。全局索引只支持范圍分區,或者分區方式看起來是均衡的,但Oracle不會利用這種結構。 
  1. Prefixed - The partition key is the leftmost column(s) of the index. Probing this type of index is less costly. If a query specifies the partition key in the where clause partition pruning is possible, that isnot all partitions will be searched. 
  2. #前綴索引 - 分區關鍵字在索引字段的左邊。檢測這種索引比較容易,如果查詢的where條件中包含了分區鍵,就會消除掉不必要的分區,不會掃描所有分區表了。 
  3. Non-Prefixed - Does not support partition pruning, but is effective in accessing data that spans multiple partitions. Often used for indexing a column that is not the tables partition keywhen you would like the index to be partitioned on the same key as the underlying table
  4. #分前綴索引 - 不支持分區消除,但在跨分區查找數據時很有效。通常用于創建的索引不是分區鍵,而這個索引想用在所有子表的情況。 

下面我們先來創建local索引,下面的sql我先創建一個范圍分區,然后創建了一個本地索引:

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar(1), 
  4.   op_time date 
  5. PARTITION BY RANGE(id) 
  6.  partition t_operate_log_1 values less than (100), 
  7.  partition t_operate_log_2 values less than (200), 
  8.  partition t_operate_log_3 values less than (300) 
  9. #創建本地索引 
  10. create index index_t_operate_log on t_operate_log(type) local 
  11.  partition t_operate_log_1, 
  12.  partition t_operate_log_2, 
  13.  partition t_operate_log_3 

這里有幾點說明:

  • local索引是針對單個分區表的索引,無論是普通索引還是唯一索引,這個索引只對單個分區表有效。
  • 創建local索引,可以不加括號后面的語句,但是如果加了必須選擇所有分區表,否則會報“ORA-14024:LOCAL索引的分區數必須等于基礎表的分區數”。

下面我們創建一個global索引,sql如下:

  1. CREATE INDEX index_t_operate_log ON t_operate_log (type) GLOBAL  

注意:oracle不支持全局非前綴索引。

對已經存在的表分區

1.創建表

  1. create table t_operate_log 
  2.   id   number(7), 
  3.   type varchar(1), 
  4.   op_time date 

創建完成后插入100條數據,id為1~100。

2.創建一個分區表,只有1個分區

  1. create table t_operate_log_p 
  2.  
  3.  
  4. id number(7), 
  5.  
  6. type varchar(1), 
  7.  
  8. op_time date 
  9.  
  10.  
  11. PARTITION BY RANGE(id) 
  12.  
  13.  
  14. partition t_operate_log_1 values less than (101) 
  15.  

3.把原表數據抽取到分區表

  1. ALTER TABLE t_operate_log_p 
  2.   EXCHANGE PARTITION t_operate_log_1 
  3.   WITH TABLE t_operate_log 
  4.   WITHOUT VALIDATION; 

這時我們查看t_operate_log_p這個表有100條數據。

4.刪除原有表,把新的表改名為原來的表

  1. DROP TABLE t_operate_log; 
  2. RENAME t_operate_log_p TO t_operate_log; 

5.把新表拆分成多個分區表

  1. ALTER TABLE t_operate_log SPLIT PARTITION t_operate_log_1 AT (id) 
  2. INTO (PARTITION t_operate_log_2, 
  3.       PARTITION t_operate_log_3); 

6.驗證

使用下面sql我們可以看到有2個分區:

SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='T_OPERATE_LOG';

使用下面sql我們可以看到,第一個分區有49條,第二個分區有51條,可見我們分區用的id=50的記錄分到了第二個分區表:

select * from t_operate_log PARTITION(t_operate_log_2);

select * from t_operate_log PARTITION(t_operate_log_3);

參考鏈接:

https://oracle-base.com/articles/8i/partitioned-tables-and-indexes

 

責任編輯:武曉燕 來源: jinjunzhu
相關推薦

2009-06-24 10:26:41

Oracle約束分區表

2022-01-11 08:46:56

Oracle 在線重定義數據庫

2023-10-11 13:42:21

2010-04-19 14:01:22

Oracle查看分區表

2011-04-11 11:32:29

Oracle分區表磁盤IO沖突

2023-01-30 09:13:17

Oracle分區表技術

2017-08-30 16:59:54

PostgreSQL分區表

2011-08-23 10:37:15

Oracle分區表本地索引

2016-09-23 09:29:08

mysq分區表l互聯網

2010-10-11 10:16:17

Mysql分區表

2010-11-22 15:06:46

MySQL分區表

2011-03-22 14:57:52

Oracle數據庫普通表分區表

2010-10-11 09:50:32

Mysql分區表

2021-09-07 17:54:04

OpenGauss分區表索引

2021-03-08 22:22:20

MySQL分區表SQL

2021-04-19 08:16:38

Hive數據類型大數據技術

2010-04-16 13:41:14

Oracle表分區

2009-08-17 08:35:22

Linux掛載分區表fstab

2010-04-19 14:23:34

Oracle增加表分區

2019-03-04 13:54:18

MySQL分區表數據
點贊
收藏

51CTO技術棧公眾號

天天干天天干天天干| 少妇献身老头系列| 精品推荐蜜桃传媒| 欧美午夜一区| 精品久久久久久久久久久久久久久久久 | 久久综合九色综合97婷婷女人 | www.欧美视频| 亚洲亚洲精品在线观看| 精品国产乱码久久久久久丨区2区| 亚欧视频在线观看| 国产精品一区二区99| 欧美日韩大陆一区二区| 亚洲最大免费| 欧美 日韩 国产 成人 在线| 玖玖精品视频| 日韩中文字幕网址| 欧美激情国内自拍| 手机在线观看av| 91热门视频在线观看| 青青久久av北条麻妃海外网| 萌白酱视频在线| av不卡一区| 精品国产91久久久久久老师| 亚洲一区二区免费视频软件合集| 亚洲福利在线观看视频| 天堂精品中文字幕在线| 欧美日本在线视频中文字字幕| 国产免费一区二区三区最新6| 777午夜精品电影免费看| 亚洲免费色视频| 日韩欧美视频一区二区| 精品人妻少妇AV无码专区| 91久久夜色精品国产九色| 日韩成人xxxx| 国产在线观看中文字幕| 成人爱爱网址| 亚洲尤物在线视频观看| 日本在线观看一区二区| 男人天堂av网| 狠狠色狠狠色合久久伊人| 欧美孕妇孕交黑巨大网站| 男女羞羞免费视频| 超碰成人久久| 亚洲美女av在线播放| 国产精品无码自拍| 亚洲精品第一| 91久久精品日日躁夜夜躁欧美| 日本福利视频网站| 一区二区三区视频在线观看视频| 99久久精品一区| 亚洲一区二区三区xxx视频| 国产91av在线播放| 国产视频一区在线观看一区免费| 久久亚洲电影天堂| 国产黄色录像片| 偷拍视屏一区| 亚洲韩国欧洲国产日产av| 搡的我好爽在线观看免费视频| 久久天堂av| 色综合天天综合狠狠| 欧美黑人在线观看| 三级网站视频在在线播放| 亚洲欧美日韩国产一区二区三区| 欧美三日本三级少妇三99| 国产综合无码一区二区色蜜蜜| 国产麻豆视频一区二区| 国产主播欧美精品| 一卡二卡在线观看| 日本欧美韩国一区三区| 国产精品久久电影观看| 国产一级片av| 欧美aaaaaa午夜精品| 日本aⅴ大伊香蕉精品视频| 久久免费在线观看视频| 午夜久久99| 欧美黑人一级爽快片淫片高清| 欧美偷拍第一页| 欧美三级视频| 久久久欧美一区二区| 久草视频在线免费看| 韩国av一区| 国内精久久久久久久久久人| 激情综合网五月婷婷| 亚洲黄色在线| 欧美国产日韩精品| 国产精品成人av久久| 伊人成人在线| 欧美在线观看视频| 久久国产香蕉视频| 国产剧情在线观看一区二区| 69174成人网| 韩国中文字幕hd久久精品| av电影在线观看完整版一区二区| 精品国产乱码久久久久久久软件| 黄色片免费在线| 国产精品乱码一区二三区小蝌蚪| 国产四区在线观看| xxx在线免费观看| 日韩欧美在线播放| 国内外成人免费在线视频| 精品三级久久久| 精品国产三级a在线观看| 成人网站免费观看| 日韩国产专区| 欧美高清视频在线观看| 国产精品国产三级国产专区52| 美女网站久久| 91美女福利视频高清| 欧美一级视频免费| 亚洲国产电影在线观看| 一区在线电影| 久久香蕉av| 欧美私人免费视频| 人妻互换一二三区激情视频| 久久93精品国产91久久综合| 久久九九国产精品怡红院| 日韩欧美国产亚洲| 美洲天堂一区二卡三卡四卡视频| 99热最新在线| av色图一区| 亚洲一级二级三级| 99sesese| 蜜桃精品噜噜噜成人av| 久久成人av网站| 精品久久久久久久久久久久久久久久| 精彩视频一区二区三区| 久久亚洲午夜电影| 手机av在线播放| 欧美亚洲国产怡红院影院| 污污免费在线观看| 欧美激情成人| 欧洲日本亚洲国产区| 国产suv精品一区二区69| 久久精子c满五个校花| 宅男噜噜99国产精品观看免费| 免费在线小视频| 日韩一区二区电影网| 五月婷婷欧美激情| 99在线|亚洲一区二区| 成人av在线网址| 男人的天堂av高清在线| 亚洲国产日产av| 亚洲一级片免费| 蜜桃一区二区三区| 4438全国成人免费| 亚洲精品无遮挡| 亚洲欧美日韩国产中文在线| 天天色综合社区| 要久久爱电视剧全集完整观看| 久久99亚洲热视| 国产精品久久无码一三区| 国产欧美日韩在线| 午夜成人免费电影| 91禁外国网站| 日本免费精品视频| 久久午夜色播影院免费高清| 黄色www网站| 日本精品国产| 欧美日韩福利视频| 国产在线观看第一页| 26uuu久久综合| 久久久999免费视频| 日韩美女毛片| 欧美日韩国产91| 亚洲大尺度网站| 亚洲在线视频网站| 久久久久亚洲AV成人无码国产| 亚洲天堂男人| 粉嫩高清一区二区三区精品视频| 国产黄网站在线观看| 7777精品伊人久久久大香线蕉的 | 亚洲精品乱码久久| 国产日韩欧美高清免费| 久久影院理伦片| 亚洲日本天堂| 亚洲天堂久久av| 奴色虐av一区二区三区| 国产欧美一区视频| 一区二区三区视频在线观看免费| 色欧美自拍视频| 成人高清视频观看www| 免费网站黄在线观看| 欧美性感一类影片在线播放| 卡一卡二卡三在线观看| 精品影院一区二区久久久| 天天综合五月天| 影音先锋欧美激情| 97视频在线观看免费| 国产综合在线观看| 在线观看视频一区二区欧美日韩| www.黄色在线| 国产精品一卡二卡| 又大又硬又爽免费视频| 东京久久高清| 国产成人精品免高潮在线观看| 中文字幕日本在线| 日韩欧美色综合网站| 久热这里只有精品6| 欧美国产精品劲爆| 少妇愉情理伦片bd| 国产欧美91| 亚洲天堂av免费在线观看| 中文字幕一区二区三区中文字幕| 午夜精品久久久久久久久久久久久 | 精品国产老师黑色丝袜高跟鞋| 欧美 日韩 国产 成人 在线观看| 国产在线精品一区二区不卡了 | 成人在线中文字幕| 123区在线| 伊是香蕉大人久久| 好男人www在线视频| 91国偷自产一区二区三区成为亚洲经典 | 精品1区2区3区| 精品视频久久久久| 欧美国产97人人爽人人喊| www.成人黄色| 99精品欧美| 欧美h视频在线观看| www.久久东京| 成人黄色av免费在线观看| caoporn视频在线观看| 最近2019中文字幕一页二页| 五月激情婷婷网| 欧美性一二三区| 日本少妇久久久| 亚洲日本成人在线观看| 久久午夜精品视频| 日本一区二区三区视频视频| 波多野结衣福利| 99这里只有久久精品视频| 欧美体内she精高潮| 国产在线播放一区二区三区| 亚洲国产高清av| 全国精品久久少妇| 黄色一级二级三级| 三级成人在线视频| 97公开免费视频| 日韩激情中文字幕| caoporn超碰97| 日韩av在线发布| www日韩在线观看| 欧美综合二区| jizz欧美激情18| 日本欧美一区二区三区乱码| 亚洲一级片网站| 九色综合狠狠综合久久| 国产无遮挡猛进猛出免费软件| 蜜臀99久久精品久久久久久软件| 999精彩视频| 黑人巨大精品欧美黑白配亚洲| 亚洲久久中文字幕| 国产在线播精品第三| 色诱av手机版| av日韩在线网站| 日本激情小视频| 亚洲国产高清不卡| 日韩欧美综合视频| 夜夜嗨av一区二区三区网页| 精品无码m3u8在线观看| 午夜影院久久久| 精品视频一二三区| 欧美日韩精品一区二区三区蜜桃| 91福利在线观看视频| 日韩免费成人网| 青春草在线观看| 在线观看国产精品91| 搞黄网站在线观看| 久久久在线免费观看| 欧美成人免费电影| 成人信息集中地欧美| 福利片一区二区| 日本免费高清一区二区| 久久久久国产| 日本中文字幕亚洲| 日本美女一区二区| 黑人无套内谢中国美女| 97久久精品人人爽人人爽蜜臀| 国产激情av在线| 一区二区国产盗摄色噜噜| www.日本精品| 欧美精品在线观看一区二区| 亚洲av无码乱码国产麻豆| 日韩成人av在线| 乱人伦中文视频在线| 久久亚洲欧美日韩精品专区| 高清视频在线观看三级| 国产噜噜噜噜久久久久久久久| 91麻豆精品国产91久久久久推荐资源| 久久久久久久久一区二区| 欧美丰满老妇| 六月丁香激情网| 国产精品综合视频| b站大片免费直播| 一区二区三区国产| 久久久久久亚洲av无码专区| 日韩午夜在线观看| 国产乱子伦三级在线播放| 欧美疯狂性受xxxxx另类| 日本欧美一区| 国产一区二区精品在线| 99精品综合| 91av俱乐部| 成人综合婷婷国产精品久久蜜臀| 内射毛片内射国产夫妻| 亚洲成a人片在线观看中文| 国产99久久久久久免费看| 亚洲精品动漫久久久久| 91高清在线观看视频| 国产精品免费在线免费| 久久97精品| 欧美黄色免费网址| 理论片日本一区| 亚洲欧洲久久久| 午夜av电影一区| 午夜精品一二三区| 久久精品99久久久久久久久| 日韩电影网站| 欧美黄色直播| 伊人激情综合| 国产老头和老头xxxx×| 一区在线观看视频| 国产亚洲久一区二区| 亚洲男女自偷自拍图片另类| 国产不卡123| 好吊妞www.84com只有这里才有精品| 综合精品一区| 日韩av福利在线观看| 中文字幕中文字幕在线一区| 精品无码一区二区三区的天堂| 日韩av在线电影网| 激情视频网站在线播放色| 好吊妞www.84com只有这里才有精品| 欧美日本在线| 欧美69精品久久久久久不卡| 亚洲乱码国产乱码精品精的特点 | 亚洲国产日韩欧美在线动漫| 在线午夜影院| 成人xxxxx色| 国产一区激情| 成年女人免费视频| 亚洲成av人片在www色猫咪| 成人午夜免费福利| 高清欧美电影在线| 久久午夜影院| 亚洲自偷自拍熟女另类| 91视频免费播放| 久久久久99精品成人片我成大片| 亚洲精选在线观看| 性欧美1819sex性高清| 日日夜夜精品网站| 免费精品视频最新在线| 久久久久久久麻豆| 欧美一级欧美一级在线播放| 日本在线观看大片免费视频| 国产精品xxx在线观看www| 亚洲激情国产| 一区二区黄色片| 欧美猛男gaygay网站| 成人黄色在线电影| 国产精品久久国产精品| 国产精品毛片在线| 女人黄色一级片| 日韩午夜av电影| av男人的天堂在线观看| 欧美高清视频一区| 老司机免费视频一区二区| 成熟的女同志hd| 亚洲精品久久久久久下一站| 午夜欧美巨大性欧美巨大| 一本色道久久综合亚洲精品婷婷| 国产在线精品一区在线观看麻豆| 国产在线观看成人| 国产亚洲精品久久久久久777| 国产精品久久乐| 91免费国产精品| 久久久久国产精品人| 国产乱码精品一区二区三区精东| 久久久久久久一区二区| 国产一区二区在线| 久久综合桃花网| 日韩欧美在线中文字幕| 好操啊在线观看免费视频| 国产日韩一区二区| 久久国产乱子精品免费女| 麻豆一区二区三区精品视频| 亚洲免费视频网站| 国产精品白丝久久av网站| 波多野结衣家庭教师在线播放| 国产精品国产三级国产有无不卡| 亚洲精品久久久久久久久久久久久久| 日本亚洲欧洲色α| 欧美永久精品| 国产手机在线观看| 欧美v日韩v国产v| 欧美大片1688网站| a级黄色一级片| 亚洲乱码一区二区三区在线观看| 国产美女视频一区二区三区| 国产一区二区三区四区五区在线| 精品一区二区三区日韩|