校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 淺談PostgreSQL中的孤兒文件用法(orphaned data files)

淺談PostgreSQL中的孤兒文件用法(orphaned data files)

熱門標(biāo)簽:400電話申請客服 江蘇400電話辦理官方 電銷機(jī)器人能補(bǔ)救房產(chǎn)中介嗎 地圖標(biāo)注要花多少錢 廣州電銷機(jī)器人公司招聘 移動外呼系統(tǒng)模擬題 天津開發(fā)區(qū)地圖標(biāo)注app 電話機(jī)器人怎么換人工座席 濟(jì)南外呼網(wǎng)絡(luò)電話線路

創(chuàng)建一個(gè)測試表

postgres=# create table t1(a int);
CREATE TABLE
postgres=# select pg_relation_filepath('t1');
 pg_relation_filepath
----------------------
 base/75062/75297
(1 row) 
postgres=#

在操作系統(tǒng)上已經(jīng)可以看到該文件。

$ ls -la $PGDATA/base/75062/75297
-rw------- 1 postgres postgres 0 Nov 9 11:11 /data/pgdata/11/data/base/75062/75297

插入一些數(shù)據(jù):

postgres=# show segment_size;
 segment_size
--------------
 1GB
(1 row)
postgres=# insert into t1 select * from generate_series(1,100000000);
INSERT 0 100000000
postgres=#

因?yàn)閟egment_size的設(shè)置為1GB,磁盤上已經(jīng)有了多個(gè)文件

$ ls -la $PGDATA/base/75062/75297*
-rw------- 1 postgres postgres 1073741824 Nov 9 11:19 /data/pgdata/11/data/base/75062/75297
-rw------- 1 postgres postgres 1073741824 Nov 9 11:17 /data/pgdata/11/data/base/75062/75297.1
-rw------- 1 postgres postgres 1073741824 Nov 9 11:18 /data/pgdata/11/data/base/75062/75297.2
-rw------- 1 postgres postgres 439803904 Nov 9 11:19 /data/pgdata/11/data/base/75062/75297.3
-rw------- 1 postgres postgres  917504 Nov 9 11:18 /data/pgdata/11/data/base/75062/75297_fsm

現(xiàn)在,開啟另一個(gè)會話(session 2)。

在session2中,啟動一個(gè)事務(wù)并創(chuàng)建一個(gè)空表,但是不提交事務(wù):

postgres=# begin;
BEGIN
postgres=# create table t2(a int);
CREATE TABLE
postgres=# select pg_relation_filepath('t2');
 pg_relation_filepath
----------------------
 base/75062/75300
(1 row)
 
postgres=# select * from pg_backend_pid();
 pg_backend_pid
----------------
   17710
(1 row) 
postgres=#

在操作系統(tǒng)已經(jīng)可以看到對應(yīng)的文件:

$ ls -la $PGDATA/base/75062/75300
-rw------- 1 postgres postgres 0 Nov 9 11:23 /data/pgdata/11/data/base/75062/75300

如果這個(gè)時(shí)候,posrgresql server發(fā)生了奔潰、或者發(fā)生了oom被kill了或者session被kill了。會發(fā)生什么呢?

我們來模擬一下session被kill的場景:

$ kill -9 17710

再次在session2中執(zhí)行查詢:

postgres=# select 1;
server closed the connection unexpectedly
  This probably means the server terminated abnormally
  before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=#

這個(gè)session在事務(wù)提交之前被kill了,事務(wù)無法正常完成,但是事務(wù)已經(jīng)創(chuàng)建了一個(gè)表。應(yīng)該發(fā)生什么呢?事務(wù)被回滾,創(chuàng)建的表應(yīng)該不存在了。

postgres=# select * from t2;
ERROR: relation "t2" does not exist
LINE 1: select * from t2;
      ^
postgres=#

這正是我們所預(yù)期的。但在操作系統(tǒng)上,文件仍然存在:

$ ls -la $PGDATA/base/75062/75300
-rw------- 1 postgres postgres 0 Nov 9 11:23 /data/pgdata/11/data/base/75062/75300

這樣,文件就成了孤兒文件(orphaned file)。

postgresql并不知道這個(gè)文件屬于哪個(gè)relation

postgres=# select relname from pg_class where oid = '75300';
 relname
---------
(0 rows) 
postgres=#

這樣,你就需要自己手動清理孤兒文件了!

假設(shè)你做了大量的數(shù)據(jù)的加載,就在加載完成之前,會話被殺死:

postgres=# begin;
BEGIN
postgres=# create table t3(a int);
CREATE TABLE
postgres=# select pg_relation_filepath('t3');
 pg_relation_filepath
----------------------
 base/75062/99528
(1 row)
 
postgres=# select * from pg_backend_pid();
 pg_backend_pid
----------------
   21988
(1 row)
 
postgres=# insert into t3 select * from generate_series(1,1000000000);
server closed the connection unexpectedly
  This probably means the server terminated abnormally
  before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

雖然會話被kill了。但是磁盤上的空間并沒有被釋放。

$ ls -la $PGDATA/base/75062/99528*
-rw------- 1 postgres postgres 1073741824 Nov 9 11:51 /data/pgdata/11/data/base/75062/99528
-rw------- 1 postgres postgres 413777920 Nov 9 11:51 /data/pgdata/11/data/base/75062/99528.1
-rw------- 1 postgres postgres  385024 Nov 9 11:51 /data/pgdata/11/data/base/75062/99528_fsm

在最糟糕的時(shí)候,可能會占用大量的磁盤空間。那是否有什么方法去檢測這些孤兒文件呢?

你需要比較postgresql中的目錄表中的記錄和文件系統(tǒng)上信息,然后刪除這些孤兒文件。這個(gè)過程需要小心謹(jǐn)慎。

首先獲得你要檢測的數(shù)據(jù)庫的oid:

postgres=# select oid from pg_database where datname = 'postgres';
 oid 
-------
 75062
(1 row) 
postgres=#

這樣就可以知道文件在文件系統(tǒng)上的位置。即 $PGDATA/base/[OID_OF_THE_DATABASE]

然后,獲得孤兒文件:

postgres=# select * from pg_ls_dir ( '/data/pgdata/11/data/base/75062' ) as file where file ~ '^[0-9]*$' and file::text not in (select oid::text from pg_class );
 file 
-------
 75280
 75281
 75282
 75283
 75300
 83144
 99528
(7 rows) 
postgres=#

補(bǔ)充:理解postgreSQL中的prepared transactions和處理孤兒(orphans)事務(wù)

Prepared transactions是PostgreSQL的一個(gè)關(guān)鍵特性。理解該特性提供的功能和處理任何潛在的陷阱對于系統(tǒng)的維護(hù)是很關(guān)鍵的。所以,我們來深入研究一下具體什么是prepared transactions。

關(guān)于事務(wù)

在數(shù)據(jù)庫系統(tǒng)中,事務(wù)是一種處理通常包含多個(gè)語句的塊中的全部或零個(gè)語句的方法。在提交整個(gè)塊之前,該塊中語句的結(jié)果對其他事務(wù)不可見。 如果事務(wù)失敗或回滾,則對數(shù)據(jù)庫完全沒有影響。

事務(wù)依附于會話。但是,當(dāng)要執(zhí)行與會話獨(dú)立的事務(wù)時(shí)(也有其他好處)。這就是“prepared transactions”的來源。

prepared transactions

prepared transaction是獨(dú)立于會話、抗崩潰、狀態(tài)維護(hù)的事務(wù)。事務(wù)的狀態(tài)存儲在磁盤上,這使得數(shù)據(jù)庫服務(wù)器即使在從崩潰中重新啟動后也可以恢復(fù)事務(wù)。在對prepared transaction執(zhí)行回滾或提交操作之前,將一直維護(hù)該事務(wù)。

PostgreSQL文檔聲明,在一個(gè)已存在的事務(wù)塊中,可以使用prepare transaction 'transaction_id‘命令創(chuàng)建一個(gè)prepared transaction。它進(jìn)一步聲明該過程為兩階段提交準(zhǔn)備了一個(gè)事務(wù)。

此外,建議應(yīng)用程序或交互式會話不要使用prepared transaction。理想情況下,外部事務(wù)管理器應(yīng)該跨同構(gòu)或異構(gòu)數(shù)據(jù)庫資源執(zhí)行原子的全局事務(wù)。

在postgreSQL中,缺省的max_prepared_transaction=0;即關(guān)閉了prepared transaction。如果你想使用prepared transaction,建議將max_prepared_transaction設(shè)置成max_connections的值。在同步的流復(fù)制standby庫上,最好將其設(shè)置的比max_connections大一點(diǎn),以免standby不能接收查詢。

在任何給定的時(shí)間,你可以查看活躍狀態(tài)的prepared transactions,通過查看視圖pg_prepared_xacts。

pg_prepared_xacts視圖含有以下一些列:

#select * from pg_prepared_xacts;
 transaction | gid | prepared | owner | database
-------------+-----+----------+-------+----------
(0 rows)

1.transaction:事務(wù)id

2.gid:用戶為prepared transaction定義的名稱

3.prepared:prepared日期,創(chuàng)建事務(wù)時(shí)帶有時(shí)區(qū)的時(shí)間戳

4.owner:創(chuàng)建該prepared transaction的事務(wù)

5.database:數(shù)據(jù)庫名

創(chuàng)建prepared transaction

知道什么是prepared transaction之后,現(xiàn)在來看看如何創(chuàng)建一個(gè)prepared transaction。創(chuàng)建一個(gè)該事務(wù)通常需要四個(gè)步驟:

1.begin(或start transaction)

2.執(zhí)行需要的操作

3.prepare transaction

4.commit(或rollback prepared)

prepare transaction、commit prepared、或rollback prepared后面加上一個(gè)gid,可以唯一標(biāo)識prepared transaction。

例如下面的代碼塊:

postgres=# begin;
BEGIN
postgres=# create table abce(id int);
CREATE TABLE
postgres=# insert into abce values(1);
INSERT 0 1
postgres=# prepare transaction 'abce_insert';
PREPARE TRANSACTION
postgres=# select * from pg_prepared_xacts;
 transaction |  gid  |   prepared   | owner | database
-------------+-------------+-------------------------------+----------+----------
  16362 | abce_insert | 2020-12-09 11:41:45.742375+08 | postgres | postgres
(1 row)
 
postgres=# commit prepared 'abce_insert';
COMMIT PREPARED
postgres=# select * from pg_prepared_xacts;
 transaction | gid | prepared | owner | database
-------------+-----+----------+-------+----------
(0 rows)
 
postgres=#

當(dāng)一個(gè)含有一個(gè)或多個(gè)活躍的prepared transactions的postgresql停止了或者奔潰了,會為每個(gè)活躍的prepared transaction創(chuàng)建一個(gè)文件,在目錄pg_twophase中。

比如,我們有個(gè)prepared transaction:

postgres=# select * from pg_prepared_xacts;
 transaction |  gid  |   prepared   | owner | database
-------------+--------------+-------------------------------+----------+----------
  16363 | abce_insert2 | 2020-12-09 11:46:01.983483+08 | postgres | postgres
(1 row)
 
postgres=#

所以我沒有提交事務(wù)就停止了postgresql server。postgresql就會創(chuàng)建一個(gè)名為00003FEB的文件,對應(yīng)于prepared transaction的事務(wù)id。

$ ls -l ../data/pg_twophase/
total 4
-rw------- 1 postgres postgres 220 Dec 9 11:47 00003FEB

00003FEB等價(jià)于16363。在postgresql被重啟后,在啟動日志會報(bào)如下信息:

2020-12-09 11:51:28.112 CST [963] LOG: database system was shut down at 2020-12-09 11:47:39 CST
2020-12-09 11:51:28.113 CST [963] LOG: recovering prepared transaction 16363 from shared memory
2020-12-09 11:51:28.132 CST [960] LOG: database system is ready to accept connections

如果你不希望恢復(fù)一個(gè)prepared transaction,可以簡單地刪除pg_twophase文件夾下的相應(yīng)文件。

這很簡單,不是嗎?那么我們?yōu)槭裁床唤?jīng)常地使用它呢?畢竟,它提供了更高的提交操作成功的可能性。事情要是這么簡單就好了!

prepared transaction可能遇到哪些錯(cuò)誤?

如果客戶端消失了,則prepared transaction可以未完成(既不提交也不回滾)。發(fā)生這種情況的原因多種多樣,包括客戶機(jī)崩潰,或者服務(wù)器崩潰導(dǎo)致客戶機(jī)連接被終止而無法重新連接。你實(shí)際上是依靠事務(wù)管理器來確保沒有孤立的prepared transaction。

除了崩潰之外,還有另一種原因可以使prepared transaction未完成。如果一個(gè)用于恢復(fù)的備份包含了事務(wù)的prepared階段,但是沒有包含關(guān)閉事務(wù)的階段,仍然會生成孤兒事務(wù)。

或者,DBA創(chuàng)建了一個(gè)prepared transaction,卻忘記了關(guān)閉它。

所以,如果一個(gè)prepared transaction沒有完成,又會有什么大不了的呢?

真正的問題

真正的問題是,孤兒prepared transaction繼續(xù)持有可能包含鎖的關(guān)鍵系統(tǒng)資源,或者使事務(wù)ID保持活動狀態(tài),該事務(wù)ID可能會阻止vacuum清除只對該孤兒事務(wù)可見、對其它事務(wù)不可見的死的元組。

回想一下我在上面創(chuàng)建的prepared 事務(wù)。當(dāng)事務(wù)prepared,并且在提交該事務(wù)之前,如果另一個(gè)事務(wù)試圖更改該表,它將無法獲取所需的鎖并掛起,直到解決了prepared事務(wù)(提交或回滾)為止。 否則,alter命令會無限期掛起,最終,我必須發(fā)出CTRL + C來停止該命令。

postgres=# select * from pg_prepared_xacts;
 transaction |  gid  |   prepared   | owner | database
-------------+--------------+-------------------------------+----------+----------
  16363 | abce_insert2 | 2020-12-09 11:46:01.983483+08 | postgres | postgres
(1 row)
 
postgres=# alter table abce add column b int;
^CCancel request sent
ERROR: canceling statement due to user request
postgres=# select c.oid,c.relname,l.locktype,l.relation,l.mode
postgres-# from pg_class c
postgres-# inner join pg_locks l on c.oid=l.relation
postgres-# where c.relname='abce';
 oid | relname | locktype | relation |  mode  
--------+---------+----------+----------+------------------
 370883 | abce | relation | 370883 | RowExclusiveLock
(1 row)
 
postgres=#

對vacuum的阻塞可能會更嚴(yán)重,在極端情況下,會導(dǎo)致數(shù)據(jù)庫關(guān)閉,因?yàn)楣聝簆repared事務(wù)會阻止事務(wù)id的wrap around。

發(fā)現(xiàn)和通知

雖然一般的預(yù)期是prepared事務(wù)在幾秒鐘內(nèi)完成,但是情況并不總是這樣。一個(gè)prepared事務(wù)可能持續(xù)幾分鐘、幾小時(shí)甚至幾天。

為這些事務(wù)維護(hù)元數(shù)據(jù)本身可能是一項(xiàng)挑戰(zhàn)。但是,我建議設(shè)置一個(gè)術(shù)語來定義prepared事務(wù)可以存在的最大時(shí)間。例如,考慮以下的prepared事務(wù):

postgres=# BEGIN;
BEGIN
postgres=# INSERT INTO abce VALUES(3);
INSERT 0 1
postgres=# PREPARE TRANSACTION 'abce_insert 1m';
PREPARE TRANSACTION

或者下面的事務(wù):

postgres=# BEGIN;
BEGIN
postgres=# INSERT INTO abce VALUES(4);
INSERT 0 1
postgres=# PREPARE TRANSACTION 'abce_insert 1d';
PREPARE TRANSACTION

在這些事務(wù)名稱中,最后一部分定義事務(wù)的時(shí)間。任何超出時(shí)間的事務(wù)可以通過sql查詢輕易地找出來:

postgres=# select gid,prepared,regexp_replace(gid, '.* ', '') AS age
from pg_prepared_xacts
WHERE prepared + CAST(regexp_replace(gid, '.* ', '') AS INTERVAL)  NOW();
  gid  |   prepared   | age
----------------+-------------------------------+-----
 abce_insert 1m | 2020-12-09 13:39:01.383091+08 | 1m
(1 row)
 
postgres=#

這里就很清晰地顯示了一個(gè)不應(yīng)該再有效的事務(wù)。因此,使用一個(gè)外部代理或者cron任務(wù)可以輕易找出這些事務(wù),或者通知管理員、或者回滾事務(wù)。

在我看來,這是一種簡單而容易的方式,可以確保即使事務(wù)管理器失敗或DBA意外地留下了一個(gè)事務(wù),也可以在你的環(huán)境中管理孤兒事務(wù)。

結(jié)論

Prepared transactions顯然是一個(gè)非常重要的功能,但是需要使用回退通知程序或清理程序仔細(xì)設(shè)置環(huán)境,以輕松確保這些事務(wù)不會不必要地占用關(guān)鍵資源,并且系統(tǒng)保持良好狀態(tài)。

PostgreSQL社區(qū)中仍在討論如何處理孤兒prepared事務(wù)。它是否成為postgresql核心的一部分尚待觀察。同時(shí),我們需要使用外部工具來管理這些事務(wù),或者設(shè)法解決這個(gè)問題。

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

您可能感興趣的文章:
  • PostgreSQL 對IN,EXISTS,ANY/ALL,JOIN的sql優(yōu)化方案
  • postgresql 13.1 insert into select并行查詢的實(shí)現(xiàn)
  • PostgreSQL 啟動失敗的解決方案
  • 解決postgresql無法遠(yuǎn)程訪問的情況
  • 淺談Postgresql默認(rèn)端口5432你所不知道的一點(diǎn)
  • postgresql修改完端口后直接psql連接數(shù)據(jù)庫報(bào)錯(cuò)的解決
  • postgresql 實(shí)現(xiàn)啟動、狀態(tài)查看、關(guān)閉
  • postgresql連續(xù)歸檔及時(shí)間點(diǎn)恢復(fù)的操作

標(biāo)簽:榆林 濮陽 杭州 寶雞 辛集 溫州 海西 昭通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談PostgreSQL中的孤兒文件用法(orphaned data files)》,本文關(guān)鍵詞  淺談,PostgreSQL,中的,孤兒,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談PostgreSQL中的孤兒文件用法(orphaned data files)》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談PostgreSQL中的孤兒文件用法(orphaned data files)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    色综合久久中文综合久久牛| ●精品国产综合乱码久久久久| 久久亚洲春色中文字幕久久久| 国产精品少妇自拍| 五月综合激情婷婷六月色窝| 国产一区在线观看麻豆| 欧美在线制服丝袜| 中日韩av电影| 狠狠久久亚洲欧美| 欧美三级韩国三级日本一级| 国产欧美日韩三区| 免费人成在线不卡| 91福利在线导航| 久久久精品欧美丰满| 日本成人在线电影网| 色综合中文综合网| 中文字幕久久午夜不卡| 亚洲电影你懂得| 成人激情小说网站| 久久精品一级爱片| 精品一区二区免费在线观看| 91麻豆精品国产综合久久久久久 | 亚洲免费观看高清完整版在线观看熊 | 国产精品久线在线观看| 国内精品自线一区二区三区视频| 在线播放中文一区| 亚洲二区在线视频| 欧美性色欧美a在线播放| 亚洲欧洲日产国产综合网| 国产高清在线精品| 欧美精品一区二区在线观看| 理论片日本一区| 日韩女优av电影在线观看| 视频一区二区不卡| 6080午夜不卡| 秋霞午夜av一区二区三区| 日韩一区二区视频| 久久成人免费日本黄色| 日韩欧美黄色影院| 久久国产夜色精品鲁鲁99| 日韩欧美一区二区三区在线| 国产在线播放一区三区四| 欧美成人在线直播| 国产资源精品在线观看| 久久夜色精品国产欧美乱极品| 国产在线观看免费一区| 中文欧美字幕免费| 日本高清不卡在线观看| 午夜欧美电影在线观看| 日韩午夜av电影| 国产一区二区不卡在线 | 亚洲va国产天堂va久久en| 7777精品伊人久久久大香线蕉的 | 国产亚洲视频系列| 成人精品一区二区三区四区| 亚洲欧美日韩国产中文在线| 欧美年轻男男videosbes| 日韩电影免费一区| 久久久久免费观看| 99久久99久久精品免费观看| 香港成人在线视频| 久久久亚洲午夜电影| bt欧美亚洲午夜电影天堂| 亚洲综合在线第一页| 精品久久99ma| av成人免费在线观看| 日韩精品乱码av一区二区| 国产日本亚洲高清| 91国在线观看| 国产精品一区久久久久| 成人免费在线视频观看| 欧美高清激情brazzers| 国产精品 欧美精品| 亚洲影视在线观看| 精品国产一区二区三区久久影院| 99视频精品全部免费在线| 亚洲国产精品精华液网站| 精品国产精品一区二区夜夜嗨| 色婷婷久久一区二区三区麻豆| 老司机午夜精品| 综合亚洲深深色噜噜狠狠网站| 欧美一级夜夜爽| 91啪亚洲精品| 国产成人精品影视| 亚洲成av人片| 亚洲欧洲三级电影| 欧美成人一区二区三区在线观看 | 国产91丝袜在线播放九色| 亚洲一区在线观看免费 | 日韩高清国产一区在线| 中文字幕一区在线观看| 日韩欧美电影一二三| 色综合网色综合| 国产成人精品免费| 蜜臀精品一区二区三区在线观看| 中文字幕在线一区免费| 久久人人爽爽爽人久久久| 欧美人与性动xxxx| 91日韩一区二区三区| kk眼镜猥琐国模调教系列一区二区| 免费av成人在线| 日韩精品色哟哟| 亚洲国产精品欧美一二99| 亚洲美女在线一区| 国产精品久久一级| 久久久www成人免费无遮挡大片| 日韩欧美在线123| 欧美视频一区二区三区| 色婷婷精品大视频在线蜜桃视频| 国产成人av福利| 激情六月婷婷久久| 黄一区二区三区| 麻豆精品视频在线观看| 青青草原综合久久大伊人精品优势| 亚洲精品免费一二三区| 亚洲免费资源在线播放| 国产精品你懂的在线| 久久久久成人黄色影片| 久久久亚洲精品一区二区三区| 精品美女一区二区| 日韩精品一区二区三区swag| 精品国产乱码久久久久久久久| 欧美一级高清大全免费观看| 欧美一区二区女人| 日韩美女一区二区三区四区| 久久影视一区二区| 亚洲国产成人自拍| 国产精品久久久久久久午夜片| 一色桃子久久精品亚洲| 亚洲一区二区综合| 日韩电影免费在线看| 成人听书哪个软件好| 成人91在线观看| 欧洲色大大久久| 日韩亚洲欧美高清| 91精品国产综合久久久久久漫画 | 日韩av电影一区| 26uuu国产在线精品一区二区| 欧美成人精品二区三区99精品| 精品福利视频一区二区三区| 国产蜜臀av在线一区二区三区| 日韩一区中文字幕| 一区二区三区在线不卡| 天天影视色香欲综合网老头| 韩国一区二区三区| 成人高清av在线| 欧美视频一区二| 国产午夜一区二区三区| 一区二区三区毛片| 玖玖九九国产精品| 波多野结衣中文字幕一区二区三区| 91激情五月电影| 欧美va亚洲va| 一区二区三区四区不卡视频| 男男视频亚洲欧美| 国产成人亚洲综合色影视| 在线精品视频免费观看| 26uuu亚洲综合色| 亚洲午夜视频在线| 国产精品一区二区在线看| 欧美日韩在线播放| 国产人久久人人人人爽| 午夜精品一区二区三区免费视频 | 91精品福利在线一区二区三区| 久久中文字幕电影| 亚洲精品videosex极品| 国产精品一区二区在线观看不卡 | 国产日韩欧美一区二区三区乱码| 亚洲免费资源在线播放| 国产一区二区剧情av在线| 欧美人体做爰大胆视频| 国产欧美精品一区| 美日韩一级片在线观看| 色综合久久天天综合网| 国产亚洲欧美中文| 日韩av一区二区三区四区| 色视频一区二区| 中文字幕国产一区二区| 久久99国产精品免费网站| 欧美日本国产视频| 一区二区高清在线| 99麻豆久久久国产精品免费| 精品国产污污免费网站入口 | 日韩美女视频一区| 国产自产2019最新不卡| 日韩欧美色电影| 亚洲福利视频导航| 欧洲一区二区av| 亚洲精品少妇30p| 99精品视频一区二区| 国产日产欧美一区| 国产99久久久国产精品潘金网站| 欧美一级理论性理论a| 亚洲高清视频在线| 欧美中文字幕一区二区三区亚洲| 亚洲色图.com| 成人国产精品免费| 国产精品天美传媒沈樵| 国产精品99久久久久| 日韩精品影音先锋|