精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产精品一区二区尤物区| 亚洲视频一区二区三区四区| 99热播精品免费| 成人免费视频caoporn| 91高清视频在线免费观看| 深田咏美中文字幕| 电影亚洲精品噜噜在线观看| 亚洲天堂久久久久久久| 9a蜜桃久久久久久免费| 99超碰在线观看| 成人精品影院| 精品处破学生在线二十三| 欧美aⅴ在线观看| h网站久久久| 成人免费视频视频在线观看免费 | 丰满人妻av一区二区三区| 亚洲一区激情| 久久精品99久久久久久久久| 免费黄色在线播放| 成人日韩av| 一区二区三区国产| 视频一区视频二区视频三区视频四区国产 | 亚洲av成人精品一区二区三区在线播放 | 国产精品jizz| 精品视频在线一区| 一区二区三区不卡在线观看| 日本欧美精品久久久| 国产精品一区二区人人爽| 奶水喷射视频一区| 欧美极品美女视频网站在线观看免费| 在线免费观看日韩av| 51精品国产| 欧美久久久久久蜜桃| 欧美 国产 小说 另类| 大地资源网3页在线观看| 亚洲国产精品二十页| 99高清视频有精品视频| 国产精品成人无码| 久久久国产亚洲精品| 97国产在线视频| 免费无遮挡无码永久在线观看视频 | 17videosex性欧美| 亚洲精品免费一二三区| 亚洲毛片aa| 国产在线观看网站| 久久久久久电影| 久久大片网站| 青青草视频在线观看| 99r国产精品| 国产一区免费在线| 欧洲成人一区二区三区| 成人永久免费视频| 国产不卡一区二区三区在线观看| 国产三级在线观看视频| 国产在线精品一区二区夜色| 国产精品一区二区性色av| 欧美h在线观看| 美女久久一区| 日本精品免费一区二区三区| 91在线视频在线观看| 久久精品五月| 日韩美女免费视频| 粉嫩aⅴ一区二区三区| 欧美精品一卡| 欧美激情视频免费观看| 暗呦丨小u女国产精品| 久久超碰99| 中文一区二区视频| 精品视频第一页| 亚洲成av人片乱码色午夜| 麻豆国产精品va在线观看不卡| 内射一区二区三区| 欧美在线不卡| 91精品国产乱码久久久久久久久| 国产精品老女人| 丝袜a∨在线一区二区三区不卡| 国产不卡av在线| 亚洲男人的天堂在线视频| 激情欧美日韩| 97超级碰碰碰久久久| 四虎影院在线免费播放| 性xx色xx综合久久久xx| 国产精选久久久久久| 国产免费高清视频| 9人人澡人人爽人人精品| 欧美激情一区二区三区在线视频 | 米奇精品关键词| 欧美精品一区二区三区很污很色的 | 国产三级精品三级| 国产成人三级视频| a级片在线免费| 欧美中文字幕一区| 天天色综合天天色| 超碰97成人| 在线一区二区日韩| 久久亚洲AV无码| 日韩视频免费| 成人精品视频99在线观看免费| 黄色成人一级片| 久久综合色8888| 在线免费观看成人网| 黄毛片在线观看| 欧美高清视频不卡网| 日本一区二区三区在线免费观看| 欧洲精品一区| 深夜福利日韩在线看| 色网站在线播放| 精品无码三级在线观看视频 | 手机看片1024日韩| 中文字幕在线不卡一区 | av综合电影网站| 日韩午夜精品电影| jizz18女人高潮| 国产一区欧美| 国产精品久久久久久中文字 | 精品久久久久久久久久久久久久久久久| 中文字幕高清视频| 91精品一区国产高清在线gif| 欧美一级大胆视频| 亚洲精品无遮挡| 亚洲婷婷在线视频| 成人黄色一区二区| 米奇精品关键词| 久久99精品久久久久久噜噜 | 亚洲综合网在线| 美女网站视频久久| 欧美大香线蕉线伊人久久国产精品| a级在线观看| 欧美日韩免费在线视频| 久久av无码精品人妻系列试探| 好看的亚洲午夜视频在线| 成人黄色av播放免费| 国产高清视频在线| 亚洲国产成人精品视频| 日本在线视频播放| 久久久久久久久99精品大| 日韩美女毛茸茸| 日本天堂影院在线视频| 一区二区久久久久| 中文写幕一区二区三区免费观成熟| 91麻豆精品国产91久久久平台| 欧美一级淫片丝袜脚交| 污视频在线免费| 一区二区视频在线看| 婷婷激情四射五月天| 精品久久不卡| 国产精品免费在线免费| www.黄在线观看| 欧美一a一片一级一片| 精品欧美一区二区久久久| 久久久久国产精品一区三寸| 久久精品ww人人做人人爽| 超碰成人av| 制服丝袜亚洲播放| 久久久久久视频| 国产精品综合二区| 成年人深夜视频| 成人h动漫免费观看网站| 性欧美xxxx视频在线观看| 日韩一区免费视频| 色综合久久久久综合体桃花网| 中文字幕av网址| 日本不卡中文字幕| 国产精品jizz在线观看老狼| 高清在线视频不卡| 亚洲国产精品99久久| 国产成人精品网| 国产日韩精品久久久| 手机看片福利日韩| 日韩精品久久| 国产精品夜间视频香蕉| 国产三级在线免费观看| 欧美男人的天堂一二区| 久久精品99国产精| www国产精品av| 伊人影院综合在线| 国一区二区在线观看| 欧美国产一二三区| 粉嫩一区二区三区在线观看| 久久免费视频网站| 久久精品色图| 欧美午夜影院一区| 欧美国产在线看| 久久久欧美精品sm网站| 欧美一级特黄aaa| av成人天堂| 正在播放国产精品| 国产厕拍一区| 国产精品免费一区豆花| wwwww亚洲| 伊人伊成久久人综合网小说| 精品国产av鲁一鲁一区| 91精品办公室少妇高潮对白| 777777国产7777777| 91视频一区二区| 亚洲一区二区中文字幕在线观看| 91久久亚洲| 亚洲va久久久噜噜噜久久狠狠| 欧美区一区二区| 国产精品成人播放| 久久国产精品黑丝| 日韩在线观看免费全| 女人18毛片一区二区三区| 91激情五月电影| 日产电影一区二区三区| 自拍偷拍国产亚洲| 性欧美丰满熟妇xxxx性久久久| 久久99精品久久久久久国产越南 | 欧美aaa大片视频一二区| 久久综合久久八八| 五月激情丁香婷婷| 69成人精品免费视频| 国产成人无码一区二区三区在线| 国产精品国产三级国产有无不卡| 日韩精品卡通动漫网站| 丁香一区二区三区| 在线观看网站黄| 看片网站欧美日韩| 国产福利一区视频| 一区二区自拍| 小泽玛利亚av在线| 青青草国产成人a∨下载安卓| 精品国产aⅴ麻豆| 亚洲专区**| 91久久精品国产91久久| 国产欧美自拍| 欧美最顶级丰满的aⅴ艳星| 国内在线免费视频| 久久99精品国产99久久6尤物| 毛片在线看网站| 亚洲美女自拍视频| 天堂中文在线资源| 精品免费国产二区三区 | 日韩在线观看不卡| 欧美亚洲在线观看| 久久影院午夜精品| 午夜精品在线观看| 大菠萝精品导航| 午夜精品久久久久久久白皮肤| 黄污视频在线观看| 欧美极品美女电影一区| а_天堂中文在线| 78色国产精品| 亚洲国产福利| 日韩av观看网址| 丝袜美腿一区| 国产精品青青在线观看爽香蕉| 欧美色网在线| 国产精品亚洲精品| 国产精品麻豆| 97久草视频| 国产精品调教| 久久久精品国产一区二区三区| 青青视频一区二区| 久久香蕉综合色| 国内精品伊人久久久| 你懂的视频在线一区二区| 亚洲+小说+欧美+激情+另类| 日本在线观看一区二区| 亚洲裸色大胆大尺寸艺术写真| 国产精品久久7| 台湾亚洲精品一区二区tv| 久久久影院一区二区三区| 国产综合久久久| 在线观看成人av电影| 欧美日韩1区| www.中文字幕在线| 蜜桃视频在线观看一区二区| 高清一区在线观看| 国产激情一区二区三区四区| 美女扒开腿免费视频| 99久久精品免费精品国产| 免费人成又黄又爽又色| 国产精品第五页| 豆国产97在线 | 亚洲| 高跟丝袜欧美一区| 中文字幕在线观看国产| 日韩美女视频在线| 撸视在线观看免费视频| 久久综合国产精品台湾中文娱乐网| 888av在线视频| 7777精品视频| 亚洲男人在线| 国产精品对白刺激久久久| 秋霞影院一区二区三区| 免费在线观看一区二区| 日韩国产综合| 久久视频这里有精品| 国产欧美一区二区色老头| 中文字幕第17页| 国产不卡在线视频| 最近中文字幕免费视频| 一区二区三区日韩欧美精品 | 欧美日韩在线播放| 日本wwwxxxx| 在线亚洲欧美视频| 色偷偷色偷偷色偷偷在线视频| 国产欧美 在线欧美| 日韩中文字幕一区二区高清99| 欧美日韩综合另类| 我不卡手机影院| 丰满人妻中伦妇伦精品app| 久久国产主播| 国产一卡二卡三卡四卡| 中文字幕在线一区免费| 无码人妻一区二区三区免费 | 成人在线观看一区| 欧美精品www| 图片一区二区| 日韩精品最新在线观看| 精品电影一区| 天堂av2020| 99re亚洲国产精品| 免费网站观看www在线观| 欧美日韩国产大片| 高清日韩av电影| 97精品久久久中文字幕免费| 成人噜噜噜噜| 亚洲看片网站| 日韩电影在线观看电影| 人妻无码一区二区三区| 亚洲一区二区三区四区不卡| 国产美女明星三级做爰| 久久激情视频久久| 免费污视频在线一区| 蜜桃麻豆91| 亚洲一区成人| 少妇激情一区二区三区视频| 亚洲特级片在线| 中文字幕+乱码+中文字幕明步| 亚洲美女动态图120秒| 九色porny自拍视频在线播放| 国产伦精品一区二区三区在线| 欧美深夜福利| 日韩成人av影院| 一区二区三区在线观看视频| 精品国产九九九| 久久97精品久久久久久久不卡| 国产精品一级在线观看| 激情视频小说图片| 国内精品自线一区二区三区视频| 国产三级精品三级观看| 在线观看欧美精品| а天堂8中文最新版在线官网| 国产精品黄页免费高清在线观看| 精品日韩欧美一区| xxxx一级片| 91丨porny丨国产入口| 国产精品va无码一区二区三区| 亚洲激情自拍图| 欧美片第一页| 亚洲一区二区精品在线| 爽好多水快深点欧美视频| 婷婷色一区二区三区| 91国偷自产一区二区三区观看| 国产小视频在线播放| 欧美黄网免费在线观看| 91精品入口| 穿情趣内衣被c到高潮视频| 国产一区二区三区四| 精品无码久久久久久久| 精品视频—区二区三区免费| av激情成人网| 日本黄色a视频| 成人动漫av在线| 免费的毛片视频| 中文字幕欧美精品在线| 欧美专区视频| 欧美色图另类小说| 国产精品你懂的在线| 国产精品高清无码| 久99久在线视频| 亚洲都市激情| 天天摸天天碰天天添| 国产精品美女久久久久aⅴ国产馆| 99久久99久久久精品棕色圆| 久久久在线视频| 欧美精品一区二区三区中文字幕 | 91麻豆免费在线观看| 在线免费看av的网站| 久久久久五月天| 精品国产91久久久久久浪潮蜜月| 色婷婷.com| 亚洲精品国产a久久久久久| 外国精品视频在线观看| 国产精品视频网址| 国产精品theporn| 中文字幕av久久爽一区| 欧美高清激情brazzers| 免费在线小视频| 国产在线拍揄自揄拍无码| 91丨九色porny丨蝌蚪| 在线免费av网| 欧美一区亚洲一区| 中文字幕人成人乱码| 国产成人av一区二区三区不卡| 欧美一级电影网站| 在线成人视屏| 东北少妇不带套对白| 国产精品美女久久久久久久网站|