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

美團三面:一直追問我, MySQL 幻讀被徹底解決了嗎?

數(shù)據(jù)庫 MySQL
MySQL 可重復(fù)讀隔離級別并沒有徹底解決幻讀,只是很大程度上避免了幻讀現(xiàn)象的發(fā)生。

大家好,我是小林。

之前有位小伙伴美團三面,一直被追求「幻讀是否被 MySQL 可重復(fù)度隔離級別徹底解決了?」

圖片

之前我也提到過,MySQL InnoDB 引擎的默認(rèn)隔離級別雖然是「可重復(fù)讀」,但是它很大程度上避免幻讀現(xiàn)象(并不是完全解決了),解決的方案有兩種:

  • 針對快照讀(普通 select 語句),是通過 MVCC 方式解決了幻讀,因為可重復(fù)讀隔離級別下,事務(wù)執(zhí)行過程中看到的數(shù)據(jù),一直跟這個事務(wù)啟動時看到的數(shù)據(jù)是一致的,即使中途有其他事務(wù)插入了一條數(shù)據(jù),是查詢不出來這條數(shù)據(jù)的,所以就很好了避免幻讀問題。
  • 針對當(dāng)前讀(select ... for update 等語句),是通過 next-key lock(記錄鎖+間隙鎖)方式解決了幻讀,因為當(dāng)執(zhí)行 select ... for update 語句的時候,會加上 next-key lock,如果有其他事務(wù)在 next-key lock 鎖范圍內(nèi)插入了一條記錄,那么這個插入語句就會被阻塞,無法成功插入,所以就很好了避免幻讀問題。

這次,我會舉例兩個實驗場景來說明 MySQL InnoDB 引擎的可重復(fù)讀隔離級別發(fā)生幻讀的問題。

好了,發(fā)車!

什么是幻讀?

首先來看看 MySQL 文檔是怎么定義幻讀(Phantom Read)的:

The so-called phantom problem occurs within a transaction when the same query produces different sets of rows at different times. For example, if a SELECT is executed twice, but returns a row the second time that was not returned the first time, the row is a “phantom” row.

翻譯:當(dāng)同一個查詢在不同的時間產(chǎn)生不同的結(jié)果集時,事務(wù)中就會出現(xiàn)所謂的幻象問題。例如,如果 SELECT 執(zhí)行了兩次,但第二次返回了第一次沒有返回的行,則該行是“幻像”行。

舉個例子,假設(shè)一個事務(wù)在 T1 時刻和 T2 時刻分別執(zhí)行了下面查詢語句,途中沒有執(zhí)行其他任何語句:

SELECT * FROM t_test WHERE id > 100;

只要 T1 和 T2 時刻執(zhí)行產(chǎn)生的結(jié)果集是不相同的,那就發(fā)生了幻讀的問題,比如:

  • T1 時間執(zhí)行的結(jié)果是有 5 條行記錄,而 T2 時間執(zhí)行的結(jié)果是有 6 條行記錄,那就發(fā)生了幻讀的問題。
  • T1 時間執(zhí)行的結(jié)果是有 5 條行記錄,而 T2 時間執(zhí)行的結(jié)果是有 4 條行記錄,也是發(fā)生了幻讀的問題。

隔離級別

當(dāng)多個事務(wù)并發(fā)執(zhí)行時可能會遇到「臟讀、不可重復(fù)讀、幻讀」的現(xiàn)象,這些現(xiàn)象會對事務(wù)的一致性產(chǎn)生不同程序的影響。

臟讀:讀到其他事務(wù)未提交的數(shù)據(jù);

不可重復(fù)讀:前后讀取的數(shù)據(jù)不一致;

幻讀:前后讀取的記錄數(shù)量不一致。

這三個現(xiàn)象的嚴(yán)重性排序如下:

圖片

SQL 標(biāo)準(zhǔn)提出了四種隔離級別來規(guī)避這些現(xiàn)象,隔離級別越高,性能效率就越低,這四個隔離級別如下:

  • 讀未提交(read uncommitted),指一個事務(wù)還沒提交時,它做的變更就能被其他事務(wù)看到;
  • 讀提交(read committed),指一個事務(wù)提交之后,它做的變更才能被其他事務(wù)看到;
  • 可重復(fù)讀(repeatable read),指一個事務(wù)執(zhí)行過程中看到的數(shù)據(jù),一直跟這個事務(wù)啟動時看到的數(shù)據(jù)是一致的,MySQL InnoDB 引擎的默認(rèn)隔離級別;
  • 串行化(serializable );會對記錄加上讀寫鎖,在多個事務(wù)對這條記錄進(jìn)行讀寫操作時,如果發(fā)生了讀寫沖突的時候,后訪問的事務(wù)必須等前一個事務(wù)執(zhí)行完成,才能繼續(xù)執(zhí)行;

針對不同的隔離級別,并發(fā)事務(wù)時可能發(fā)生的現(xiàn)象也會不同。

圖片

也就是說:

  • 在「讀未提交」隔離級別下,可能發(fā)生臟讀、不可重復(fù)讀和幻讀現(xiàn)象;
  • 在「讀提交」隔離級別下,可能發(fā)生不可重復(fù)讀和幻讀現(xiàn)象,但是不可能發(fā)生臟讀現(xiàn)象;
  • 在「可重復(fù)讀」隔離級別下,可能發(fā)生幻讀現(xiàn)象,但是不可能臟讀和不可重復(fù)讀現(xiàn)象;
  • 在「串行化」隔離級別下,臟讀、不可重復(fù)讀和幻讀現(xiàn)象都不可能會發(fā)生。

所以,要解決臟讀現(xiàn)象,就要升級到「讀提交」以上的隔離級別;要解決不可重復(fù)讀現(xiàn)象,就要升級到「可重復(fù)讀」的隔離級別,要解決幻讀現(xiàn)象不建議將隔離級別升級到「串行化」。

不同的數(shù)據(jù)庫廠商對 SQL 標(biāo)準(zhǔn)中規(guī)定的 4 種隔離級別的支持不一樣,有的數(shù)據(jù)庫只實現(xiàn)了其中幾種隔離級別,我們討論的 MySQL 雖然支持 4 種隔離級別,但是與SQL 標(biāo)準(zhǔn)中規(guī)定的各級隔離級別允許發(fā)生的現(xiàn)象卻有些出入。

MySQL 在「可重復(fù)讀」隔離級別下,可以很大程度上避免幻讀現(xiàn)象的發(fā)生(注意是很大程度避免,并不是徹底避免),所以 MySQL 并不會使用「串行化」隔離級別來避免幻讀現(xiàn)象的發(fā)生,因為使用「串行化」隔離級別會影響性能。

MySQL InnoDB 引擎的默認(rèn)隔離級別雖然是「可重復(fù)讀」,但是它很大程度上避免幻讀現(xiàn)象(并不是完全解決了),解決的方案有兩種:

  • 針對快照讀(普通 select 語句),是通過 MVCC 方式解決了幻讀,因為可重復(fù)讀隔離級別下,事務(wù)執(zhí)行過程中看到的數(shù)據(jù),一直跟這個事務(wù)啟動時看到的數(shù)據(jù)是一致的,即使中途有其他事務(wù)插入了一條數(shù)據(jù),是查詢不出來這條數(shù)據(jù)的,所以就很好了避免幻讀問題。
  • 針對當(dāng)前讀(select ... for update 等語句),是通過 next-key lock(記錄鎖+間隙鎖)方式解決了幻讀,因為當(dāng)執(zhí)行 select ... for update 語句的時候,會加上 next-key lock,如果有其他事務(wù)在 next-key lock 鎖范圍內(nèi)插入了一條記錄,那么這個插入語句就會被阻塞,無法成功插入,所以就很好了避免幻讀問題。

快照讀是如何避免幻讀的?

可重復(fù)讀隔離級是由 MVCC(多版本并發(fā)控制)實現(xiàn)的,實現(xiàn)的方式是啟動事務(wù)后,在執(zhí)行第一個查詢語句后,會創(chuàng)建一個 Read View,后續(xù)的查詢語句利用這個 Read View,通過這個  Read View 就可以在 undo log 版本鏈找到事務(wù)開始時的數(shù)據(jù),所以事務(wù)過程中每次查詢的數(shù)據(jù)都是一樣的,即使中途有其他事務(wù)插入了新紀(jì)錄,是查詢不出來這條數(shù)據(jù)的,所以就很好了避免幻讀問題。

做個實驗,數(shù)據(jù)庫表 t_stu 如下,其中 id 為主鍵。

圖片

然后在可重復(fù)讀隔離級別下,有兩個事務(wù)的執(zhí)行順序如下:

圖片

從這個實驗結(jié)果可以看到,即使事務(wù) B 中途插入了一條記錄,事務(wù) A 前后兩次查詢的結(jié)果集都是一樣的,并沒有出現(xiàn)所謂的幻讀現(xiàn)象。

當(dāng)前讀是如何避免幻讀的?

MySQL 里除了普通查詢是快照讀,其他都是當(dāng)前讀,比如 update、insert、delete,這些語句執(zhí)行前都會查詢最新版本的數(shù)據(jù),然后再做進(jìn)一步的操作。

這很好理解,假設(shè)你要 update 一個記錄,另一個事務(wù)已經(jīng) delete 這條記錄并且提交事務(wù)了,這樣不是會產(chǎn)生沖突嗎,所以 update 的時候肯定要知道最新的數(shù)據(jù)。

另外,select ... for update 這種查詢語句是當(dāng)前讀,每次執(zhí)行的時候都是讀取最新的數(shù)據(jù)。

接下來,我們假設(shè)select ... for update當(dāng)前讀是不會加鎖的(實際上是會加鎖的),在做一遍實驗。

圖片

這時候,事務(wù) B 插入的記錄,就會被事務(wù) A 的第二條查詢語句查詢到(因為是當(dāng)前讀),這樣就會出現(xiàn)前后兩次查詢的結(jié)果集合不一樣,這就出現(xiàn)了幻讀。

所以,Innodb 引擎為了解決「可重復(fù)讀」隔離級別使用「當(dāng)前讀」而造成的幻讀問題,就引出了間隙鎖。(額外提一句,讀提交隔離級別,是沒有間隙鎖的,只有記錄鎖)

假設(shè),表中有一個范圍 id 為(3,5)間隙鎖,那么其他事務(wù)就無法插入 id = 4 這條記錄了,這樣就有效的防止幻讀現(xiàn)象的發(fā)生。

圖片

舉個具體例子,場景如下:

圖片

事務(wù) A 執(zhí)行了這條當(dāng)前讀語句后,就在對表中的記錄加上 id 范圍為 (2, +∞] 的 next-key lock(next-key lock 是間隙鎖+記錄鎖的組合)。

然后,事務(wù) B 在執(zhí)行插入語句的時候,判斷到插入的位置被事務(wù) A 加了  next-key lock,于是事物 B 會生成一個插入意向鎖,同時進(jìn)入等待狀態(tài),直到事務(wù) A 提交了事務(wù)。這就避免了由于事務(wù) B 插入新記錄而導(dǎo)致事務(wù) A 發(fā)生幻讀的現(xiàn)象。

幻讀被徹底解決了嗎?

可重復(fù)讀隔離級別下雖然很大程度上避免了幻讀,但是還是沒有能完全解決幻讀。

我舉例兩個可重復(fù)讀隔離級別發(fā)生幻讀現(xiàn)象的場景。

第一個發(fā)生幻讀現(xiàn)象的場景

還是以這張表作為例子:

圖片

事務(wù) A 執(zhí)行查詢 id = 5 的記錄,此時表中是沒有該記錄的,所以查詢不出來。

# 事務(wù) A
mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t_stu where id = 5;
Empty set (0.01 sec)

然后事務(wù) B 插入一條 id = 5 的記錄,并且提交了事務(wù)。

# 事務(wù) B
mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t_stu values(5, '小美', 18);
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

此時,事務(wù) A  更新 id = 5 這條記錄,對沒錯,事務(wù) A 看不到 id = 5 這條記錄,但是他去更新了這條記錄,這場景確實很違和,然后再次查詢 id = 5 的記錄,事務(wù) A 就能看到事務(wù) B 插入的紀(jì)錄了,幻讀就是發(fā)生在這種違和的場景。

# 事務(wù) A
mysql> update t_stu set name = '小林coding' where id = 5;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from t_stu where id = 5;
+----+--------------+------+
| id | name | age |
+----+--------------+------+
| 5 | 小林coding | 18 |
+----+--------------+------+
1 row in set (0.00 sec)

整個發(fā)生幻讀的時序圖如下:

圖片

在可重復(fù)讀隔離級別下,事務(wù) A 第一次執(zhí)行普通的 select 語句時生成了一個 ReadView,之后事務(wù) B 向表中新插入了一條 id = 5 的記錄并提交。接著,事務(wù) A 對 id = 5 這條記錄進(jìn)行了更新操作,在這個時刻,這條新記錄的 trx_id 隱藏列的值就變成了事務(wù) A 的事務(wù) id,之后事務(wù) A  再使用普通 select 語句去查詢這條記錄時就可以看到這條記錄了,于是就發(fā)生了幻讀。

因為這種特殊現(xiàn)象的存在,所以我們認(rèn)為 MySQL Innodb 中的 MVCC 并不能完全避免幻讀現(xiàn)象。

第二個發(fā)生幻讀現(xiàn)象的場景

除了上面這一種場景會發(fā)生幻讀現(xiàn)象之外,還有下面這個場景也會發(fā)生幻讀現(xiàn)象。

  • T1 時刻:事務(wù) A 先執(zhí)行「快照讀語句」:select * from t_test where id > 100 得到了 3 條記錄。
  • T2 時刻:事務(wù) B 往插入一個 id= 200 的記錄并提交;
  • T3 時刻:事務(wù) A 再執(zhí)行「當(dāng)前讀語句」 select * from t_test where id > 100 for update 就會得到 4 條記錄,此時也發(fā)生了幻讀現(xiàn)象。

要避免這類特殊場景下發(fā)生幻讀的現(xiàn)象的話,就是盡量在開啟事務(wù)之后,馬上執(zhí)行 select ... for update 這類當(dāng)前讀的語句,因為它會對記錄加 next-key lock,從而避免其他事務(wù)插入一條新記錄。

小結(jié)

MySQL InnoDB 引擎的可重復(fù)讀隔離級別(默認(rèn)隔離級),根據(jù)不同的查詢方式,分別提出了避免幻讀的方案:

  • 針對快照讀(普通 select 語句),是通過 MVCC 方式解決了幻讀。
  • 針對當(dāng)前讀(select ... for update 等語句),是通過 next-key lock(記錄鎖+間隙鎖)方式解決了幻讀。

我舉例了兩個發(fā)生幻讀場景的例子。

第一個例子:對于快照讀, MVCC 并不能完全避免幻讀現(xiàn)象。因為當(dāng)事務(wù) A 更新了一條事務(wù) B 插入的記錄,那么事務(wù) A 前后兩次查詢的記錄條目就不一樣了,所以就發(fā)生幻讀。

第二個例子:對于當(dāng)前讀,如果事務(wù)開啟后,并沒有執(zhí)行當(dāng)前讀,而是先快照讀,然后這期間如果其他事務(wù)插入了一條記錄,那么事務(wù)后續(xù)使用當(dāng)前讀進(jìn)行查詢的時候,就會發(fā)現(xiàn)兩次查詢的記錄條目就不一樣了,所以就發(fā)生幻讀。

所以,MySQL 可重復(fù)讀隔離級別并沒有徹底解決幻讀,只是很大程度上避免了幻讀現(xiàn)象的發(fā)生。

要避免這類特殊場景下發(fā)生幻讀的現(xiàn)象的話,就是盡量在開啟事務(wù)之后,馬上執(zhí)行 select ... for update 這類當(dāng)前讀的語句,因為它會對記錄加 next-key lock,從而避免其他事務(wù)插入一條新記錄。

責(zé)任編輯:武曉燕 來源: 小林coding
相關(guān)推薦

2022-09-08 13:56:49

MySQL事務(wù)記錄鎖

2022-06-30 08:00:00

MySQL關(guān)系數(shù)據(jù)庫開發(fā)

2025-03-03 00:13:50

2023-08-09 17:22:30

MVCCMySQL數(shù)據(jù)

2025-06-17 06:40:45

DockerDocker鏡像

2019-05-28 13:50:27

MySQL幻讀數(shù)據(jù)庫

2024-10-31 08:50:14

2009-11-27 10:31:02

GPRS路由

2022-10-08 23:55:58

iOS蘋果開發(fā)

2021-12-03 12:15:01

QT中文亂碼Windows

2025-02-11 00:00:00

2025-06-27 07:17:52

2021-11-30 06:56:59

MySQL幻讀查詢

2023-06-05 00:28:24

MySQL數(shù)據(jù)庫非鎖定讀

2024-04-24 09:02:58

線程池面試鎖升級

2023-12-11 17:31:39

2021-04-27 08:25:52

MVCC數(shù)據(jù)MySQL

2023-02-27 08:08:54

Pulsar源碼重復(fù)消費

2009-12-21 14:12:30

路由器配置故障

2018-09-18 11:28:01

點贊
收藏

51CTO技術(shù)棧公眾號

老熟妇一区二区三区啪啪| 日本女人性视频| av在线资源站| 国产精品白丝jk黑袜喷水| 欧美激情伊人电影| 短视频在线观看| 伊人久久一区| 天天综合天天做天天综合| 色99中文字幕| 丰满熟妇乱又伦| 男女激情视频一区| 亚洲3p在线观看| 99久久精品久久亚洲精品| 久久1电影院| 欧美人xxxx| 妞干网在线视频观看| 欧美被日视频| 久久久国产一区二区三区四区小说 | 亚洲精品一区二区三区福利| 日本三区在线观看| 国产精品a成v人在线播放| 日本免费一区二区三区视频| 欧美视频在线免费看| 做爰高潮hd色即是空| 日韩av资源站| 婷婷久久综合| 亚洲第一男人天堂| 中文字幕av一区二区三区人妻少妇| 超碰一区二区| 久久中文资源| 国产九色精品成人porny| 日韩av免费在线播放| 国产高潮国产高潮久久久91| 国产永久精品大片wwwapp| 亚洲亚洲人成综合网络| 一区二区精品国产| 久久精品国产亚洲AV无码男同| 麻豆精品少妇| 日韩亚洲欧美高清| 日韩av一二三四| 欧洲亚洲精品视频| 成人网页在线观看| 成人激情av| 成人黄色免费视频| 亚洲视频免费| 精品自拍视频在线观看| 久久久亚洲国产精品| 中国免费黄色片| 日本精品视频| 日韩欧美国产一区在线观看| 日韩黄色片在线| 亚洲午夜激情视频| 欧美日韩在线网站| 日韩精品视频免费| 亚洲一二区在线| 91xxx在线观看| 亚洲欧洲精品一区二区精品久久久 | 美女日韩欧美| 中文字幕一区在线观看视频| 亚洲一区精品视频| 国产午夜精品久久久久免费视| 国产精品视频线看| 台湾成人av| 免费黄色电影在线观看| 亚洲天堂2016| 久久这里只有精品8| 电影k8一区二区三区久久| 亚洲成a人v欧美综合天堂下载| 美脚丝袜脚交一区二区| 国产拍在线视频| 色婷婷久久一区二区三区麻豆| 99精品视频在线看| 成人av色网站| 日韩三级精品电影久久久| 亚洲精品鲁一鲁一区二区三区| 亚洲精品在线a| 亚洲国产天堂久久国产91| 51调教丨国产调教视频| 日本一区二区在线看| 久久手机精品视频| 欧美成人精品欧美一级乱黄| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品激情av在线播放 | 亚洲第一福利视频| 在线免费观看麻豆| 天天揉久久久久亚洲精品| 欧美日韩国产二区| 免费视频久久久| 久久99最新地址| 国产精品二区三区四区| 欧美男男激情freegay| 国产精品国产三级国产专播品爱网| 97精品国产97久久久久久粉红| 123区在线| 欧美日本韩国一区| 五十路六十路七十路熟婆| 久久精品国产大片免费观看| 久久天天躁狠狠躁夜夜av| 五月天综合激情| 久久99精品久久久久婷婷| 成人在线资源网址| 自拍视频在线网| 天天操天天干天天综合网| 国产美女18xxxx免费视频| 久久久精品国产**网站| 色妞欧美日韩在线| 欧美性猛交bbbbb精品| 久久超碰97人人做人人爱| 久久精品国产美女| 污视频在线免费观看网站| 在线观看www91| 玖玖爱在线精品视频| 亚洲天堂免费| 国产精品成人播放| 污污的视频网站在线观看| **网站欧美大片在线观看| 欧美v在线观看| 亚洲免费一区三区| xxxxxxxxx欧美| 国产无码精品久久久| 精品亚洲成a人在线观看| 欧美一区二区福利| 日本不良网站在线观看| 日韩午夜在线影院| 亚洲色图27p| 日韩中文字幕不卡| 免费亚洲一区二区| eeuss鲁一区二区三区| 欧美一级久久久| 97在线观看免费高| 美国av一区二区| 日本电影一区二区三区| a级片在线免费观看| 欧美草草影院在线视频| 日本a级片视频| 精品亚洲免费视频| 国产精品夜夜夜爽张柏芝| 99久久er| 最新国产成人av网站网址麻豆| www欧美在线| 2024国产精品| 日韩av在线综合| 国产99久久久国产精品成人免费| 97人人爽人人喊人人模波多| 亚洲h视频在线观看| 一区二区三区中文免费| 性一交一黄一片| 欧美国产综合| 国产精品一区二区三区四区五区 | 日韩欧美大尺度| 野外性满足hd| 欧美亚洲一级| 欧美一区二区视频17c| 日韩三级影视| 一区二区亚洲精品国产| 中文字幕黄色av| 亚洲天堂a在线| 无码人妻丰满熟妇区毛片蜜桃精品| 综合久久婷婷| 国产传媒欧美日韩| 一本大道色婷婷在线| 亚洲天堂免费观看| 最新中文字幕免费| ...xxx性欧美| 精品无码人妻少妇久久久久久| 好吊一区二区三区| 麻豆传媒一区| 国产亚洲精彩久久| 精品自在线视频| 日本一区视频| 欧美日韩三级在线| 永久久久久久久| 99国产欧美久久久精品| 久久综合久久色| 欧美电影免费播放| 国产精品露出视频| 2022成人影院| 久久最新资源网| 五月婷婷免费视频| 欧美在线免费观看亚洲| 免费在线观看黄色小视频| 大桥未久av一区二区三区中文| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产欧美日韩在线观看视频| 成人精品视频99在线观看免费| 免费看电影在线| 亚洲新中文字幕| 亚洲第一第二区| 91官网在线免费观看| 99久久婷婷国产综合| 91丨porny丨中文| 日日夜夜精品视频免费观看| 亚洲精品在线二区| 影音先锋欧美资源| 欧美在线导航| 91久久久久久久久久久| 免费高潮视频95在线观看网站| 中文字幕在线观看日韩| 日韩性xxxx| 欧美蜜桃一区二区三区| 综合激情网五月| 亚洲精选视频在线| 2019男人天堂| 91麻豆精品秘密| 麻豆精品国产传媒| 美女视频第一区二区三区免费观看网站 | 亚洲永久精品大片| 欧美成人另类视频| 91在线小视频| 黄色av电影网站| 激情综合一区二区三区| 熟妇人妻va精品中文字幕| 亚洲精选久久| 成人在线免费观看视频网站| 久久影院一区| 日韩女优中文字幕| 亚洲人成亚洲精品| 国产精品欧美久久| 亚洲精品福利| 97超碰最新| 激情aⅴ欧美一区二区欲海潮| 欧美理论电影在线观看| 日韩黄色影院| 在线中文字幕日韩| 岛国在线大片| 亚洲免费一级电影| 日色在线视频| 日韩av在线不卡| 天天操天天干天天插| 日韩视频在线永久播放| 国产乱码精品一区二区三区精东| 色噜噜久久综合| 伊人手机在线视频| 高潮白浆女日韩av免费看| 国产午夜激情视频| 亚洲综合色成人| 精品爆乳一区二区三区无码av| 久久日韩粉嫩一区二区三区| 中文字幕一区二区三区人妻| 99国产精品99久久久久久| 亚洲视频天天射| 成人的网站免费观看| 美女伦理水蜜桃4| 成人美女视频在线看| 95视频在线观看| 999成人网| 国产99在线免费| 精品亚洲免a| 鲁丝片一区二区三区| 最新亚洲精品| 日韩福利影院| 97偷自拍亚洲综合二区| 最新91在线视频| 中文字幕1区2区| 青青草91视频| 国产麻花豆剧传媒精品mv在线| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲专区中文字幕| 国产成人77亚洲精品www| 国产又爽又黄的激情精品视频| 亚瑟国产精品| av激情久久| 在线看成人短视频| 午夜久久资源| 欧美二区不卡| 欧美亚洲另类色图| 免费看欧美美女黄的网站| 天天夜碰日日摸日日澡性色av| 欧美精品momsxxx| 一区二区三区在线观看www| 亚洲女同中文字幕| 农民人伦一区二区三区| jiujiure精品视频播放| 日韩在线视频观看| 日本三级在线观看网站| 97欧美精品一区二区三区| 久久久久久女乱国产| 尤物yw午夜国产精品视频| 第一福利在线| 欧美国产日本高清在线 | 国产精品传媒在线| 久久久久香蕉视频| 国产精品国产三级国产| 国内av一区二区| 不卡在线观看av| 日韩欧美黄色网址| 亚洲第一狼人社区| 一级一片免费看| 给我免费播放日韩视频| 国产精品18久久久久久首页狼| 在线播放高清视频www| 色偷偷噜噜噜亚洲男人| 户外极限露出调教在线视频| 亚洲欧美在线看| 亚洲精品承认| 69久久夜色精品国产69| 国产免费不卡| 电影午夜精品一区二区三区| 精品久久视频| 亚洲国产精品无码观看久久| 日韩av二区在线播放| 精品伦一区二区三区| 国产精品无圣光一区二区| 欧美图片一区二区| 国产精品影音先锋| 极品尤物一区二区| 午夜精品久久久久久久久久| 国产精品亚洲lv粉色| 亚洲精品有码在线| 91色在线看| 亚洲mm色国产网站| 成人免费a**址| 国产精品50p| 成人高清免费观看| 欧美成人片在线观看| 欧美日韩精品一区二区三区| 日本大臀精品| 91精品国产亚洲| 97超碰成人| 国产专区在线视频| 久久机这里只有精品| 亚洲av毛片基地| 91久久线看在观草草青青| 午夜福利理论片在线观看| 九色成人免费视频| 国产色99精品9i| 99热这里只有精品7| 九九视频精品免费| 免费成人美女女在线观看| 欧美色视频一区| 国产三级在线免费| 日韩av男人的天堂| 蜜臀久久99精品久久一区二区| 国产色一区二区三区| 国产精品乡下勾搭老头1| 99视频只有精品| 日韩一区二区视频| 三级福利片在线观看| 91嫩草国产在线观看| 欧美激情精品久久久六区热门| 中文字幕avav| 亚洲一区二区三区中文字幕在线 | 精品写真视频在线观看| 欧美另类69xxxx| 欧美日韩的一区二区| 蜜桃视频网站在线| 91视频国产精品| 午夜精品久久久久99热蜜桃导演| 宇都宫紫苑在线播放| 亚洲一区二区三区三| 男人天堂一区二区| 亚洲3p在线观看| 少妇一区二区视频| 日本人视频jizz页码69| 国产精品大尺度| 精品国产黄色片| 国外成人在线直播| 伊甸园亚洲一区| 日本中文字幕精品—区二区| 亚洲欧美自拍偷拍色图| 亚洲xxxx天美| 2021久久精品国产99国产精品| 神马香蕉久久| av污在线观看| 亚洲欧美另类久久久精品2019| 国产1区在线观看| 欧美在线亚洲在线| 国产一区二区在线| 成人综合久久网| 亚洲国产精品一区二区尤物区| 色网站在线免费观看| 国产精品91久久久| 在线中文字幕亚洲| asian性开放少妇pics| 欧美日韩国产经典色站一区二区三区| a毛片在线观看| 久久久久久九九九九| 久久成人免费网站| 国产精品30p| 日韩在线视频观看| 久久视频在线观看| 国产免费又粗又猛又爽| 亚洲自拍偷拍图区| 国产一区二区三区不卡在线| 亚洲在线观看视频| 快she精品国产999| 中文字幕手机在线观看| 亚洲欧美www| 日本不良网站在线观看| 国产高清精品软男同| 91丨porny丨国产入口| 国产乱码精品一区二三区蜜臂| 久久免费视频在线| 欧美好骚综合网| 第四色在线视频| 9191国产精品| 欧美极品免费| 一卡二卡三卡视频| 日韩一区日韩二区| 精品亚洲成a人片在线观看|