成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > PostgreSQL LIST、RANGE 表分區(qū)的實(shí)現(xiàn)方案

PostgreSQL LIST、RANGE 表分區(qū)的實(shí)現(xiàn)方案

熱門(mén)標(biāo)簽:合肥公司外呼系統(tǒng)運(yùn)營(yíng)商 漯河外呼電話系統(tǒng) 外呼調(diào)研系統(tǒng) 打電話智能電銷(xiāo)機(jī)器人授權(quán) 美容工作室地圖標(biāo)注 地圖標(biāo)注和圖片名稱(chēng)的區(qū)別 重慶自動(dòng)外呼系統(tǒng)定制 辦公外呼電話系統(tǒng) 海豐有多少商家沒(méi)有地圖標(biāo)注

簡(jiǎn) 介

PG分區(qū):就是把邏輯上的一個(gè)大表分割成物理上的幾塊。

分區(qū)的優(yōu)點(diǎn)

1. 某些類(lèi)型的查詢(xún)性能得到提升

2. 更新的性能也可以得到提升,因?yàn)槟硥K的索引要比在整個(gè)數(shù)據(jù)集上的索引要小。

3. 批量刪除可以通過(guò)簡(jiǎn)單的刪除某個(gè)分區(qū)來(lái)實(shí)現(xiàn)。

4. 可以將很少用的數(shù)據(jù)移動(dòng)到便宜的、轉(zhuǎn)速慢的存儲(chǔ)介質(zhì)上。

分區(qū)實(shí)現(xiàn)原理

10.x版本之前PG表分區(qū)的實(shí)現(xiàn)原理:PG中是通過(guò)表的繼承來(lái)實(shí)現(xiàn)的,建立一個(gè)主表,里面是空的,然后每個(gè)分區(qū)去繼承它。無(wú)論何時(shí),該主表里面都必須是空的

官網(wǎng)建議:只有當(dāng)表本身大小超過(guò)了機(jī)器物理內(nèi)存的實(shí)際大小時(shí),才考慮分區(qū)。

原分區(qū)用法

以繼承表的方式實(shí)現(xiàn):

create table tbl( a int, b varchar(10) ); 
create table tbl_1 ( check ( a = 1000 ) ) INHERITS (tbl); 
create table tbl_2 ( check ( a = 10000 and a >1000 ) ) INHERITS (tbl);
create table tbl_3 ( check ( a = 100000 and a >10000 ) ) INHERITS (tbl);

再通過(guò)創(chuàng)建觸發(fā)器或者規(guī)則,實(shí)現(xiàn)數(shù)據(jù)分發(fā),只需要向子表插入數(shù)據(jù)則會(huì)自動(dòng)分配到子表中

CREATE OR REPLACE FUNCTION tbl_part_tg() 
RETURNS TRIGGER AS $$ 
BEGIN 
 IF ( NEW. a = 1000 ) THEN 
 INSERT INTO tbl_1 VALUES (NEW.*); 
 ELSIF ( NEW. a > 1000 and NEW.a = 10000 ) THEN 
 INSERT INTO tbl_2 VALUES (NEW.*); 
 ELSIF ( NEW. a > 10000 and NEW.a = 100000 ) THEN 
 INSERT INTO tbl_3 VALUES (NEW.*); 
 ELSIF ( NEW. a > 100000 and NEW.a = 1000000 ) THEN 
 INSERT INTO tbl_4 VALUES (NEW.*); 
 ELSE RAISE EXCEPTION 'data out of range!'; 
 END IF;
 RETURN NULL; 
END;
 $$ 
LANGUAGE plpgsql; 
CREATE TRIGGER insert_tbl_part_tg
  BEFORE INSERT ON tbl 
FOR EACH ROW EXECUTE PROCEDURE tbl_part_tg();

分區(qū)創(chuàng)建成功

如何實(shí)現(xiàn)分區(qū)過(guò)濾?

對(duì)于分區(qū)表來(lái)說(shuō),如果有50個(gè)分區(qū)表,對(duì)于某個(gè)條件的值如果能確定,那么很可能直接過(guò)濾掉49個(gè)分區(qū),大大提高掃描速度,當(dāng)然分區(qū)表也能放在不同的物理盤(pán)上,提高IO速度。

對(duì)于查詢(xún)是怎么實(shí)現(xiàn)分區(qū)表過(guò)濾呢?

約束排除 是否使用約束排除通過(guò)postgresql.conf中參數(shù)constraint_exclusion 來(lái)控制,

只有三個(gè)值

 constraint_exclusion = on

on:所有情況都會(huì)進(jìn)行約束排除檢查

off:關(guān)閉,所有約束都不生效

partition:對(duì)分區(qū)表或者繼承表進(jìn)行約束排查,默認(rèn)為partition

如:

select *from tbl where a = 12345;

首先找到主表tbl,然后通過(guò)tbl找到它的子表,找到后再對(duì)再拿著謂詞條件a = 12345對(duì)一個(gè)個(gè)子表約束進(jìn)行檢查,不符合條件表就去掉不掃描,實(shí)現(xiàn)分區(qū)表過(guò)濾,下面簡(jiǎn)單介紹下約束排除源碼邏輯。

如何實(shí)現(xiàn)數(shù)據(jù)分發(fā)?

基于規(guī)則的話,會(huì)在查詢(xún)重寫(xiě)階段按時(shí)替換規(guī)則生成新的插入語(yǔ)句,基于觸發(fā)器會(huì)在insert主表前觸發(fā)另外一個(gè)insert操作,這兩個(gè)邏輯都比較簡(jiǎn)單,相關(guān)代碼不再介紹。

錯(cuò)誤描述:在新建分區(qū)主表時(shí)提示以下錯(cuò)誤信息

錯(cuò)誤原因:在本地postgresql.conf 配置了 search_path = ‘$user' ,所以在使用的時(shí)候需要先創(chuàng)建當(dāng)前用戶(hù)對(duì)應(yīng)的schema,如果不存在,則會(huì)提示錯(cuò)誤

解決方法:在創(chuàng)建表時(shí)指定創(chuàng)建的schemal,即可成功。

PostgreSQL 10.x LIST分區(qū)方案

postgres=# CREATE TABLE list_parted (
postgres(# a int
postgres(# ) PARTITION BY LIST (a);
CREATE TABLE
postgres=# CREATE TABLE part_1 PARTITION OF list_parted FOR VALUES IN (1);
CREATE TABLE
postgres=# CREATE TABLE part_2 PARTITION OF list_parted FOR VALUES IN (2);
CREATE TABLE
postgres=# CREATE TABLE part_3 PARTITION OF list_parted FOR VALUES IN (3);
CREATE TABLE
postgres=# CREATE TABLE part_4 PARTITION OF list_parted FOR VALUES IN (4);
CREATE TABLE
postgres=# CREATE TABLE part_5 PARTITION OF list_parted FOR VALUES IN (5);
CREATE TABLE
postgres=#
postgres=# insert into list_parted values(32); --faled
ERROR: no partition of relation "list_parted" found for row
DETAIL: Failing row contains (32).
postgres=# insert into part_1 values(1);
INSERT 0 1
postgres=# insert into part_1 values(2);--faled
ERROR: new row for relation "part_1" violates partition constraint
DETAIL: Failing row contains (2).
postgres=# explain select *from list_parted where a =1;
       QUERY PLAN
-----------------------------------------------------------------
 Append (cost=0.00..41.88 rows=14 width=4)
 -> Seq Scan on list_parted (cost=0.00..0.00 rows=1 width=4)
   Filter: (a = 1)
 -> Seq Scan on part_1 (cost=0.00..41.88 rows=13 width=4)
   Filter: (a = 1)
(5 rows)

上面是LIST分區(qū)表,建表是先建主表,再建子表,子表以 PARTITION OF 方式說(shuō)明和主表關(guān)系,約束條件應(yīng)該就是后面的in里面。

Explain 執(zhí)行sql解析計(jì)劃

cost:數(shù)據(jù)庫(kù)自定義的消耗單位,通過(guò)統(tǒng)計(jì)信息來(lái)估計(jì)SQL消耗。(查詢(xún)分析是根據(jù)analyze的固執(zhí)生成的,生成之后按照這個(gè)查詢(xún)計(jì)劃執(zhí)行,執(zhí)行過(guò)程中analyze是不會(huì)變的。所以如果估值和真是情況差別較大,就會(huì)影響查詢(xún)計(jì)劃的生成。)

rows:根據(jù)統(tǒng)計(jì)信息估計(jì)SQL返回結(jié)果集的行數(shù)。

width:返回結(jié)果集每一行的長(zhǎng)度,這個(gè)長(zhǎng)度值是根據(jù)pg_statistic表中的統(tǒng)計(jì)信息來(lái)計(jì)算的。

PostgreSQL 10.x RANGE分區(qū)

創(chuàng)建RANGE分區(qū)

postgres=# CREATE TABLE range_parted (
postgres(# a int
postgres(# ) PARTITION BY RANGE (a);
CREATE TABLE
postgres=# CREATE TABLE range_parted1 PARTITION OF range_parted FOR VALUES from (1) TO (1000);
CREATE TABLE
postgres=# CREATE TABLE range_parted2 PARTITION OF range_parted FOR VALUES FROM (1000) TO (10000);
CREATE TABLE
postgres=# CREATE TABLE range_parted3 PARTITION OF range_parted FOR VALUES FROM (10000) TO (100000);
CREATE TABLE
postgres=#
postgres=# insert into range_parted1 values(343);
INSERT 0 1
postgres=#
postgres=# explain select *from range_parted where a=32425;
        QUERY PLAN
---------------------------------------------------------------------
 Append (cost=0.00..41.88 rows=14 width=4)
 -> Seq Scan on range_parted (cost=0.00..0.00 rows=1 width=4)
   Filter: (a = 32425)
 -> Seq Scan on range_parted3 (cost=0.00..41.88 rows=13 width=4)
   Filter: (a = 32425)
(5 rows)
postgres=# set constraint_exclusion = off;
SET
postgres=# explain select *from range_parted where a=32425;
        QUERY PLAN
---------------------------------------------------------------------
 Append (cost=0.00..125.63 rows=40 width=4)
 -> Seq Scan on range_parted (cost=0.00..0.00 rows=1 width=4)
   Filter: (a = 32425)
 -> Seq Scan on range_parted1 (cost=0.00..41.88 rows=13 width=4)
   Filter: (a = 32425)
 -> Seq Scan on range_parted2 (cost=0.00..41.88 rows=13 width=4)
   Filter: (a = 32425)
 -> Seq Scan on range_parted3 (cost=0.00..41.88 rows=13 width=4)
   Filter: (a = 32425)
(9 rows)

上述操作中的 a的取值范圍為【0,1000)即插入值若為1000邊界值,則會(huì)保存在第二個(gè)分區(qū)表中和LIST差不多,就是語(yǔ)法略有不同,范圍表值是一個(gè)連續(xù)的范圍,LIST表是單點(diǎn)或多點(diǎn)的集合。

從上面例子可以看到,顯然還是走的約束排除過(guò)濾子表的方式。

constraint_exclusion = “on ,off,partition ”; 該參數(shù)為postgresql.conf中的參數(shù)

on 表示所有的查詢(xún)都會(huì)執(zhí)行約束排除

off 關(guān)閉,所有的查詢(xún)都不會(huì)執(zhí)行約束排除

partition :表示只對(duì)分區(qū)的表進(jìn)行約束排除

分區(qū)列的類(lèi)型必須支持btree索引接口(幾乎涵蓋所有類(lèi)型, 后面會(huì)說(shuō)到檢查方法)。

更新后的數(shù)據(jù)如果超出了所在分區(qū)的范圍,則會(huì)報(bào)錯(cuò)

PostgreSQL 分區(qū)注意事項(xiàng)

語(yǔ)法

1、創(chuàng)建主表

[ PARTITION BY { RANGE | LIST } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ] 

2、創(chuàng)建分區(qū)

PARTITION OF parent_table [ ( 
 { column_name [ column_constraint [ ... ] ] 
 | table_constraint } 
 [, ... ] 
) ] FOR VALUES partition_bound_spec 
and partition_bound_spec is: 
{ IN ( expression [, ...] ) -- list分區(qū) 
 | 
 FROM ( { expression | UNBOUNDED } [, ...] ) TO ( { expression | UNBOUNDED } [, ...] ) } -- range分區(qū), unbounded表示無(wú)限小或無(wú)限大

語(yǔ)法解釋

partition by 指定分區(qū)表的類(lèi)型range或list指定分區(qū)列,或表達(dá)式作為分區(qū)鍵。

range分區(qū)表鍵:支持指定多列、或多表達(dá)式,支持混合(鍵,非表達(dá)式中的列,會(huì)自動(dòng)添加not null的約束)

list分區(qū)表鍵:支持單個(gè)列、或單個(gè)表達(dá)式

分區(qū)鍵必須有對(duì)應(yīng)的btree索引方法的ops(可以查看系統(tǒng)表得到)

select typname from pg_type where oid in (select opcintype from pg_opclass); 

主表不會(huì)有任何數(shù)據(jù),數(shù)據(jù)會(huì)根據(jù)分區(qū)規(guī)則進(jìn)入對(duì)應(yīng)的分區(qū)表

如果插入數(shù)據(jù)時(shí),分區(qū)鍵的值沒(méi)有匹配的分區(qū),會(huì)報(bào)錯(cuò)

不支持全局的unique, primary key, exclude, foreign key約束,只能在對(duì)應(yīng)的分區(qū)建立這些約束

分區(qū)表和主表的 列數(shù)量,定義 必須完全一致,(包括OID也必須一致,要么都有,要么都沒(méi)有)

可以為分區(qū)表的列單獨(dú)增加Default值,或約束。

用戶(hù)還可以對(duì)分區(qū)表增加表級(jí)約束

如果新增的分區(qū)表check約束,名字與主表的約束名一致,則約束內(nèi)容必須與主表一致

當(dāng)用戶(hù)往主表插入數(shù)據(jù)庫(kù)時(shí),記錄被自動(dòng)路由到對(duì)應(yīng)的分區(qū),如果沒(méi)有合適的分區(qū),則報(bào)錯(cuò)

如果更新數(shù)據(jù),并且更新后的KEY導(dǎo)致數(shù)據(jù)需要移動(dòng)到另一分區(qū),則會(huì)報(bào)錯(cuò),(意思是分區(qū)鍵 可以更新,但是不支持更新后的數(shù)據(jù)移出到別的分區(qū)表)

修改主表的字段名,字段類(lèi)型時(shí),會(huì)自動(dòng)同時(shí)修改所有的分區(qū)

TRUNCATE 主表時(shí),會(huì)清除所有繼承表分區(qū)的記錄(如果有多級(jí)分區(qū),則會(huì)一直清除到所有的直接和間接繼承的分區(qū))

如果要清除單個(gè)分區(qū),請(qǐng)對(duì)分區(qū)進(jìn)行操作

如果要?jiǎng)h除分區(qū)表,可以使用DROP TABLE的DDL語(yǔ)句,注意這個(gè)操作會(huì)對(duì)主表也加access exclusive lock。

補(bǔ)充:對(duì)PostgreSQL語(yǔ)法分析中 targetlist 的理解

在 gram.y 中:

simple_select:                
      SELECT  opt_distinct  target_list          
      into_clause   from_clause   where_clause          
      group_clause   having_clause  window_clause          
        {        
          SelectStmt *n = makeNode(SelectStmt);      
          n->distinctClause = $2;      
          n->targetList = $3;      
          n->intoClause = $4;      
          n->fromClause = $5;      
          n->whereClause = $6;      
          n->groupClause = $7;      
          n->havingClause = $8;      
          n->windowClause = $9;      
          $$ = (Node *)n;      
        }        
……   

把它修改一下,增加:

simple_select:                
      SELECT  opt_distinct  target_list          
      into_clause   from_clause   where_clause          
      group_clause   having_clause  window_clause          
        {        
          SelectStmt *n = makeNode(SelectStmt);      
          n->distinctClause = $2;      
          n->targetList = $3;      
          n->intoClause = $4;      
          n->fromClause = $5;      
          n->whereClause = $6;      
          n->groupClause = $7;      
          n->havingClause = $8;      
          n->windowClause = $9;      
          $$ = (Node *)n;
          fprintf(stderr,"length of list: %d\n", n->targetList->length);      
        }      
……    

psql 中執(zhí)行:

select id, name from a8;

后臺(tái)出現(xiàn):

length of list: 2

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL 創(chuàng)建表分區(qū)
  • 淺析postgresql 數(shù)據(jù)庫(kù) TimescaleDB 修改分區(qū)時(shí)間范圍
  • 利用python為PostgreSQL的表自動(dòng)添加分區(qū)
  • 如何為PostgreSQL的表自動(dòng)添加分區(qū)
  • 淺談PostgreSQL 11 新特性之默認(rèn)分區(qū)
  • PostgreSQL之分區(qū)表(partitioning)
  • PostgreSQL分區(qū)表(partitioning)應(yīng)用實(shí)例詳解
  • PostgreSQL教程(三):表的繼承和分區(qū)表詳解
  • 淺談PostgreSQL表分區(qū)的三種方式

標(biāo)簽:來(lái)賓 株洲 錦州 蚌埠 晉城 衡陽(yáng) 珠海 烏海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PostgreSQL LIST、RANGE 表分區(qū)的實(shí)現(xiàn)方案》,本文關(guān)鍵詞  PostgreSQL,LIST,RANGE,表,分區(qū),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PostgreSQL LIST、RANGE 表分區(qū)的實(shí)現(xiàn)方案》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PostgreSQL LIST、RANGE 表分區(qū)的實(shí)現(xiàn)方案的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    午夜丝袜av电影| 97精品久久久午夜一区二区三区| 欧美刺激性大交免费视频| 中文字幕乱码在线| 精品视频高清无人区区二区三区| 日本欧美三级| 少妇av一区二区三区无码| 亚洲欧美不卡| 亚洲av无码久久精品色欲| 亚洲精品视频一区二区三区| 成人久久18免费网站麻豆| 99热在这里有精品免费| 国产精品视频中文字幕91| 亚洲成色777777在线观看影院| 久操视频在线播放| 精品人妻aV中文字幕乱码色欲| 国产91综合一区在线观看| 99热国产在线| 亚洲高清视频在线| 欧美激情久久久久久久| 337p亚洲精品色噜噜| 亚洲天堂资源| 日本三级视频网站| 欧美午夜激情在线| 性久久久久久久久久久久| 69堂成人精品免费视频| 九九热在线观看| 中文字幕精品网| 91精品国产91久久久久青草| 欧美精品一区二区三区四区五区| caopon在线免费视频| 亚洲电影在线播放| 国产农村老头老太视频| 国产一区二区电影在线观看| 午夜欧美在线一二页| 亚洲国产高清自拍| 影音先锋中文字幕影院| 一区二区三区偷拍| 国内精品一区视频| 高清国产一区二区三区| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 盗摄系列偷拍视频精品tp| 天天做夜夜爱爱爱| 情侣黄网站免费看| 国产日韩欧美精品| 亚洲国产成人在人网站天堂| 欧美午夜电影在线播放| 久久久久久久久久久久久久久久久久久| 色综合久久久| 青青操视频在线| 国产精品久久久久久久久久久不卡| 天堂电影在线| h在线观看视频免费网站| 精品亚洲a∨| 97超碰色婷婷| 久久一区二区三区四区| 久久久亚洲欧洲日产国码aⅴ| 蜜桃成人在线视频| 九色精品视频在线观看| 竹内纱里奈兽皇系列在线观看| 成人动漫av| 99久久国产免费| 日产欧产美韩系列久久99| 岛国视频免费在线观看| 亚洲日本视频在线| 成人黄色影视| 国产福利91精品一区二区三区| 亚洲AV成人无码精电影在线| 老司机精品视频一区二区| 美女扒开腿让男人桶爽久久软| 新欧美整片sss第一页| 欧美精品第一页| 日韩中文字幕在线视频观看| 欧美色欧美亚洲另类七区| 99热一区二区三区| 一级成人国产| 欧美日本视频在线观看| 亚洲精品综合久久中文字幕| 第九色区aⅴ天堂久久香| 国产毛片毛片毛片毛片毛片毛片| 国产美女高潮一区二区三区| 激情一区二区| 特级毛片www| 大胸美女被爆操| 91在线高清| 成年人三级视频| 国产偷v国产偷v亚洲高清| 色婷婷精品久久二区二区蜜臀av| 亚洲熟妇无码av在线播放| 亚洲丝袜一区在线| 精品国产乱码久久久久软件| 久久久久xxxx| 一区二区精品伦理...| 1区2区3区在线视频| 国产精品一区二区在线观看网站| 久久99久久98精品免观看软件| 亚洲精品国产偷自在线观看| 97视频在线免费| 亚洲精品一区| 欧美色另类天堂2015| 国产香蕉精品视频一区二区三区| 天天想你在线观看完整版电影免费| 自拍偷拍你懂的| 国产精品99久久久| 欧洲亚洲国产日韩| 国产欧美日韩视频一区二区三区| x88av在线| 欧洲xxxxx| 色综合桃花网| av女同在线| 国产精品污www一区二区三区| 日韩不卡视频在线观看| 欧洲美女亚洲激情| 久久久噜噜噜久久| 色婷婷激情视频| 日韩精品一区二区三区在线| 成人在线视频首页| 国产日韩综合一区二区性色av| www.久久草| 性色av蜜臀av浪潮av老女人| 久久综合伊人77777蜜臀| 欧美日韩国产一区二区| 清纯唯美亚洲综合一区| 亚洲人成网站999久久久综合| gogo亚洲高清大胆美女人体| 91在线一区二区三区| 欧美最猛黑人猛交69| 一区二区三区四区在线视频| 国产盗摄一区二区三区在线| www.浪潮av.com| 亚洲欧美激情四射在线日| 日韩视频免费| 一个色综合网| 欧美日在线观看| 久久777国产线看观看精品| 亚洲网站视频在线观看| 在线xxxx| 五月婷婷六月香| 99在线欧洲视频| 国产精品xxxav免费视频| 真人抽搐一进一出视频| 欧美bbbbb| 自由的xxxx在线视频| 日韩视频在线免费| 欧美日韩一区二区三区在线免费观看| 性欧美疯狂猛交69hd| 开心丁香婷婷深爱五月| www.com.cn成人| 久久成年人视频| 中文子幕无线码一区tr| 亚洲视频一区| 欧美在线视频在线播放完整版免费观看| 欧美三区免费完整视频在线观看| 91视频青青草| 岛国毛片在线播放| 99国产精品久久久久老师| 7777久久香蕉成人影院| 中文字幕观看av| 日韩欧美综合视频| 日韩最新中文字幕| 日韩女优av电影| h片精品在线观看| 亚洲一区视频在线播放| av在线收看| 精品视频—区二区三区免费| 日本黄色激情视频| 久久综合九色99| 日本高清不卡一区| 娇小发育未年成性色xxx8| 国产亚洲精品久久久久久久| 91精品国产综合久久久蜜臀图片| 成人性生交大片免费观看嘿嘿视频| 成人免费看片39| 国产精品久久久久久久久久三级| 日本一区二区三区在线视频| 成人手机电影网| 午夜一区二区三视频在线观看| 久久久久久日本一区99| 欧美 国产 小说 另类| 亚洲乱码国产乱码精品天美传媒| 一级视频在线观看视频在线啦啦| 国产偷人视频免费| 黄页视频在线观看| 国产不卡一区二区在线观看| 亚洲欧美国产一区二区三区| 久久婷婷久久一区二区三区| 一本久道久久综合| 久久久一区二区| 久久中文精品| 国产一区2区| 中文一区一区三区高中清不卡免费| 国产探花一区| 色一情一乱一伦一视频免费看| 成人永久免费视频| 亚洲精品20p| 亚洲精品粉嫩美女一区| 午夜一级免费视频| 毛片av一区二区三区| 国产成人精品一区| 激情亚洲成人| 热久久这里只有| 男人的天堂va免费视频| 国产视频亚洲视频| 中文字幕亚洲欧美一区二区三区| 99久久精品网站| 91porny九色| aa亚洲一区一区三区| 日韩国产在线观看| 欧美极品在线观看| 一区二区不卡久久精品| 国产揄拍国内精品对白| 国产精品嫩草影视| 日韩伦理在线视频| 激情五月婷婷小说| 九九热精品视频| 高清国产午夜精品久久久久久| 亚洲国产精品一区二区www在线| 一区久久精品| 91蝌蚪porny| 精品国产av无码| 久久国产乱子伦精品| 911美女片黄在线观看游戏| 国产做a爰片久久毛片| 亚洲 欧美 成人| 免费观看成人www动漫视频| 亚洲欧洲日夜超级视频| 日韩成人在线一区| 国产精品一久久香蕉国产线看观看| 成人做爰69片免费看网站| 久久9999免费视频| 丝袜亚洲欧美日韩综合| 99re亚洲国产精品| 亚洲制服丝袜在线播放| 欧美激情喷水视频| 亚洲一区二区中文字幕在线观看| 深爱激情综合网| 久久久不卡网国产精品二区| 亚洲精品99久久久久| 日本成人免费网站| 国产一级二级三级在线观看| 亚洲综合精品伊人久久| 国产精品毛片大码女人| 日韩高清成人| 一本一道精品欧美中文字幕| 日本在线观看www| 成年人免费视频播放| 日本成人一区| 国产欧美一区二区三区在线观看视频| 国产乱人乱偷精品视频| 91蜜桃网址入口| 色欲色香天天天综合网www| 黑粗硬大欧美视频| 麻豆av在线免费看| 亚洲毛片一区| 91麻豆精品国产91久久久更新时间| 欧美老少配视频| 欧美日韩一区二区在线观看视频| 国产69精品久久久久99| 久久久久蜜桃| 日本高清不卡在线| 国产精品毛片无遮挡高清| 国产综合久久久久| videoxxxx另类日本极品| 日本在线观看网站| 性欧美18~19sex高清播放| 99精品在免费线偷拍| 国产精品电影在线观看| 中文一区一区三区免费在线观看| 欧美另类网站| 欧洲美女少妇精品| 欧美黑人一区| 国产精品91免费在线| 在线视频精品一区| 亚洲国产国产亚洲一二三| 日本三级中文字幕| 蜜臀av国产精品久久久久| 97超碰在线人人| 欧美日本黄色片| 四虎地址8848| 51国产偷自视频区视频| 国产综合久久久久影院| 深夜激情久久| 日本三级理论片| 亚洲成a人片77777精品| 少妇被狂c下部羞羞漫画| 五月天丁香婷| 国产精品va在线观看视色| 久久精品国产清自在天天线| 亚洲aa在线| 天天在线视频色| 日本成人激情视频| 日本黄色片视频| 久久艹在线视频| 黑巨人与欧美精品一区| 国产一区二区久久精品| 国产在线拍揄自揄视频不卡99| www.久久热.com| 欧美video巨大粗暴18| 91国模大尺度私拍在线视频| 在线观看免费视频一区| 99久久精品国产网站| 2019中文字幕视频| 亚洲欧美另类视频| 亚洲最大的黄色网| 黄色av网站在线看| 邪恶网站在线观看| 国产精品一区二区免费看| 国产人妖在线播放| 亚洲色图欧美在线| 在线日本中文字幕| 国产精品久久久久久婷婷天堂| 免费看一级视频| 国产精品麻豆欧美日韩ww| 亚洲电影免费观看高清完整版在线观看| 伊人免费视频| 亚洲第一综合网站| 免费性色视频| 男人和女人做事情在线视频网站免费观看| 国产日本欧美一区二区三区在线| 18视频在线观看娇喘| 免费成年人视频在线观看| 国产在线不卡视频| 午夜久久久久久久久| 四季久久免费一区二区三区四区| 91精品免费久久久久久久久| 国产精品一级视频| 91在线直播亚洲| 99久久亚洲一区二区三区青草|