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

一文帶你弄懂 MySQL 的加鎖規(guī)則!

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
在這些文章中,我們大致了解了一些加鎖的情況。但實(shí)際上 MySQL 的加鎖規(guī)則是怎樣的,我還不是特別清楚。所以今天我們就來(lái)深入了解下 MySQL 的加鎖規(guī)則。

?大家好,我是樹哥。

在之前的文章里,我們討論了關(guān)于 MySQL 的許多問題,包括:

  1. MySQL 啥時(shí)候用表鎖,啥時(shí)候用行鎖?
  2. MySQL 不同隔離級(jí)別,都使用了什么鎖?
  3. MySQL 啥時(shí)候用記錄鎖,啥時(shí)候用間隙鎖?

在這些文章中,我們大致了解了一些加鎖的情況。但實(shí)際上 MySQL 的加鎖規(guī)則是怎樣的,我還不是特別清楚。所以今天我們就來(lái)深入了解下 MySQL 的加鎖規(guī)則。

圖片

MySQL 的加鎖規(guī)則到底是怎樣的?

迷霧找真相

為了弄清楚這些加鎖規(guī)則,我查閱了許多資料。但在這些資料中,我覺得比較有質(zhì)量的只有兩個(gè):一個(gè)是極客時(shí)間《MySQL 45 講》第 20/21 節(jié)講得內(nèi)容,另一個(gè)是一篇從源碼角度解析加鎖規(guī)則的文章。

《MySQL 45 講》是丁奇老師出的一個(gè)專欄,現(xiàn)在是騰訊云數(shù)據(jù)庫(kù)負(fù)責(zé)人。在該專欄的第 21、22 節(jié)中講到了具體的加鎖規(guī)則,并且也舉了非常多的例子。本文也將摘取其中一些內(nèi)容,來(lái)跟大家討論學(xué)習(xí)。

另一篇從源碼角度講加鎖規(guī)則的,是網(wǎng)名為「小孩子」的網(wǎng)友寫得一篇文章,其后續(xù)出了一本書叫《從根上了解 MySQL》,內(nèi)容非常多并且很詳細(xì)。這篇文章從源碼角度從頭到尾分析了整個(gè)加鎖規(guī)則,講得還是比較詳細(xì)。

在看著兩份資料之前,我總是嘗試去找到一個(gè)簡(jiǎn)單好記的加鎖規(guī)律,但看完之后覺得:這或許不太可能。丁奇大神在其專欄也提到他是怎么去分析加鎖規(guī)則的。

首先說(shuō)明一下,這些加鎖規(guī)則我沒在別的地方看到過有類似的總結(jié),以前我自己判斷的時(shí)候都是想著代碼里面的實(shí)現(xiàn)來(lái)腦補(bǔ)的。這次為了總結(jié)成不看代碼的同學(xué)也能理解的規(guī)則,是我又重新刷了代碼臨時(shí)總結(jié)出來(lái)的。

可以看到,就連大神也是想著代碼腦補(bǔ)加鎖規(guī)律的。再結(jié)合「小孩子」從源碼角度去分析加鎖規(guī)則,我一下子就覺得:或許還是該深入到源碼角度,才能一窺真相。

即使后面丁奇老師為了方便我們理解,也總結(jié)出了一些加鎖(如下圖所示)。但實(shí)際上這些加鎖規(guī)則也沒啥規(guī)律,只能是記著就好。此外,他也提出:我們需要用動(dòng)態(tài)的眼光去看加鎖。言外之意就是,這些規(guī)則可能都是變化的,也不一定是完全正確的。

圖片

圖片來(lái)自極客時(shí)間專欄

看到這里,我會(huì)想:那我們應(yīng)該怎么學(xué)習(xí) MySQL 的加鎖規(guī)則呢?

我思考了片刻,給出的答案是:我們可以按照丁奇老師總結(jié)出的加鎖規(guī)則先行學(xué)習(xí),后續(xù)再深入源碼層面不斷地補(bǔ)足一些細(xì)節(jié)。

MySQL 加鎖全局視角

在講一些具體加鎖規(guī)則之前,我覺得有必要先給大家一個(gè) MySQL 加鎖的全局視角。這個(gè)是丁奇老師在文章中沒講到的,但我覺得如果不知道全局視角,那么會(huì)影響到對(duì)一些規(guī)則的理解。

我們知道 MySQL 分成了 Server 層和存儲(chǔ)引擎兩部分,每當(dāng)執(zhí)行一個(gè)查詢時(shí),Server 層負(fù)責(zé)生成執(zhí)行計(jì)劃,然后交給存儲(chǔ)引擎去執(zhí)行。其整個(gè)過程可以這樣描述:

  1. Server 層向 Innodb 獲取到掃描區(qū)間的第 1 條記錄。
  2. Innodb 通過 B+ 樹定位到掃描區(qū)間的第 1 條記錄,然后返回給 Server 層。
  3. Server 層判斷是否符合搜索條件,如果符合則發(fā)送給客戶端,不負(fù)責(zé)則跳過。接著繼續(xù)向 Innodb 要下一條記錄。
  4. Innodb 繼續(xù)根據(jù) B+ 樹的雙休鏈表找到下一條記錄,會(huì)執(zhí)行具體的 row_search_mvcc 函數(shù)做加鎖等操作,返回給 Server 層。
  5. Server 層繼續(xù)處理該條記錄,并向 Innodb 要下一條記錄。
  6. 繼續(xù)不停執(zhí)行上述過程,直到 Innodb 讀到一條不符合邊界條件的記錄為止。

通過上面這個(gè)過程,我想讓大家明白兩個(gè)重要的認(rèn)識(shí):

  1. Innodb 并不是一次性把所有數(shù)據(jù)找到,然后返回給 Server 層的,而是會(huì)循環(huán)很多次。
  2. row_search_mvcc 這個(gè)函數(shù)是做具體的加鎖、加什么鎖的重要邏輯,并且由于 Server 層與 Innodb 會(huì)循環(huán)多次,因此該函數(shù)也是會(huì)執(zhí)行多次的。

弄懂了上面兩個(gè)認(rèn)識(shí),會(huì)對(duì)后續(xù)大家理解有很大幫助。例如:對(duì)于 select * from user where id >= 5 進(jìn)行分析的時(shí)候,為什么會(huì)出現(xiàn)說(shuō)第一次加鎖是精確查詢?它明明是范圍查詢呀!這是因?yàn)榈谝淮问且獙ふ业?id = 5 的記錄,對(duì)于 Innodb 來(lái)說(shuō),它就是精確查找,不是范圍查找。隨后找到 id = 5 的記錄之后,就要找 id > 5 的記錄了,此時(shí)就變成了范圍查找了。

MySQL 加鎖規(guī)則

這里的加鎖規(guī)則,我直接引用丁奇老師的總結(jié):兩個(gè)原則、兩個(gè)優(yōu)化、一個(gè) bug。

  • 原則 1:加鎖的基本單位是 next-key lock。其中 next-key lock 是前開后閉區(qū)間,例如:(2, 5]。
  • 原則 2:查找過程中訪問到的對(duì)象才會(huì)加鎖。
  • 優(yōu)化 1:索引上的等值查詢,給唯一索引加鎖的時(shí)候,next-key lock 退化為行鎖。
  • 優(yōu)化 2:索引上的等值查詢,向右遍歷時(shí)且最后一個(gè)值不滿足等值條件的時(shí)候,next-key lock 退化為間隙鎖。
  • 一個(gè) bug:唯一索引上的范圍查詢會(huì)訪問到不滿足條件的第一個(gè)值為止。

對(duì)于原則 1 說(shuō)的:加鎖的基本單位是 Next-Key 鎖,意思是默認(rèn)都是先加上 Next-Key,之后根據(jù) 2 個(gè)優(yōu)化點(diǎn)選擇性退化為行鎖或間隙鎖。

對(duì)于原則 2 說(shuō)的:訪問到的對(duì)象才會(huì)加鎖,意思是如果直接索引覆蓋到了,不需要回表,那么就不會(huì)對(duì)聚簇索引加鎖。這樣的話,其他事務(wù)就可以對(duì)聚簇索引進(jìn)行操作,而不會(huì)阻塞。

為了解釋這些規(guī)則,建立表 t 并插入一些數(shù)據(jù)。

CREATE TABLE `t` (
`id` int(11) NOT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `c` (`c`)
) ENGINE=InnoDB;

insert into t values(0,0,0),(5,5,5),
(10,10,10),(15,15,15),(20,20,20),(25,25,25);

等值查詢間隙鎖

如下圖所示的例子,是一個(gè)等值條件加間隙鎖的例子。

圖片

圖片來(lái)自極客時(shí)間專欄

在事務(wù) A 中,要查找 id = 7 的記錄,其查找過程為:從左到右查找 id 聚簇索引,依次對(duì)比 0、5 兩個(gè)索引,發(fā)現(xiàn)不對(duì)。接著,對(duì)比 10 這個(gè)索引,發(fā)現(xiàn) 7 <10,于是停止搜索。根據(jù)原則 1 默認(rèn)給其加上一個(gè) Next-Key 鎖,即 (5, 10]。根據(jù)優(yōu)化 2 退化為間隙鎖,即 (5,10)。

所以,session B 要插入 id=8 的記錄會(huì)被鎖住,而 session 修改 id=10 這行是可以的。

非唯一索引等值鎖

圖片

圖片來(lái)自極客時(shí)間專欄

在事務(wù) A 中,要查找 c=5 的記錄,其中 c 是非唯一索引。其查找過程為:從左到右查找 c 索引,找到了 c=5 的索引,根據(jù)原則 1 對(duì)其加 Next-Key 鎖,即 (0,5]。

由于普通索引可能重復(fù),因此其還會(huì)繼續(xù)往后搜索,接著搜索到 10,根據(jù)原則 2,訪問到的都要加鎖,因此再給其加 Next-Key 鎖,即 (5,10]。由于這個(gè)還負(fù)責(zé)優(yōu)化 2:等值判斷,向右遍歷,最后一個(gè)不滿足等值條件,因此退化為間隙鎖 (5,10)。

此外,根據(jù)原則 2,只有訪問到的對(duì)象才會(huì)加鎖。這個(gè)查詢使用查詢覆蓋索引,并不需要訪問主鍵索引,所以主鍵索引上沒有加任何鎖。也就是說(shuō) (0,5] 和 (5,10) 這兩個(gè)鎖,只在索引 c 上加鎖,并不在主鍵索引上加鎖,因此 session B 可以執(zhí)行。

session C 中插入一個(gè) c 為 7 的值,c 為 7 的值在 (5,10) 之間,因此會(huì)被鎖住。

主鍵索引范圍鎖

對(duì)于我們這個(gè)表 t,下面這兩條查詢語(yǔ)句,加鎖范圍相同嗎?

mysql> select * from t where id=10 for update;
mysql> select * from t where id>=10 and id<11 for update;

在邏輯上,這兩條查語(yǔ)句肯定是等價(jià)的,但是它們的加鎖規(guī)則不太一樣。現(xiàn)在,我們就讓 session A 執(zhí)行第二個(gè)查詢語(yǔ)句,來(lái)看看加鎖效果。

圖片

圖片來(lái)自極客時(shí)間專欄

我們來(lái)分析一下整體的加鎖規(guī)則吧。

事務(wù) A 開始執(zhí)行的時(shí)候,要找到 id 為 10 的記錄,于是從左到右找到了 id 為 10 的索引。根據(jù)原則 1 會(huì)給其加 Next-Key 鎖,即 (5,10]。根據(jù)優(yōu)化 1,id = 10 是等值查詢,因此其退化為行鎖,即只對(duì) id = 10 這行加了行鎖。

接著繼續(xù)進(jìn)行范圍查找,找到 id=15 這一行,繼續(xù)加 Next-Key 鎖 (10,15]。這時(shí)候 id=15 大于 11,因此其不再查找。TODO

非唯一索引范圍鎖

下面的 c 字段是非唯一普通索引,使用了范圍查詢。

圖片

圖片來(lái)自極客時(shí)間專欄

事務(wù) A 開始執(zhí)行的時(shí)候,要找到 id 為 10 的記錄,于是根據(jù)原則 1 加了 Next-Key 鎖,即 (5,10]。由于索引 C 是非唯一索引,沒有優(yōu)化規(guī)則,因此不會(huì)退化為行鎖。因此對(duì)于事務(wù) A 來(lái)說(shuō),索引 C 上加的是 (5,10] 和 (10,15] 兩個(gè) Next-Key 鎖。

所以當(dāng) session B 和 session C 要操作 c 值為 8 和 15 的數(shù)據(jù)時(shí)會(huì)被阻塞。

總結(jié)

最后我們總結(jié)一下 MySQL 的加鎖規(guī)則:

  • 首先,明白 server 層與存儲(chǔ)引擎層是多次數(shù)據(jù)交互的,并不是存儲(chǔ)引擎層一次性查找完數(shù)據(jù)。
  • 其次,根據(jù)兩個(gè)原則去分析加鎖的范圍,核心是加鎖單位是 Next-Key 鎖。
  • 最后,根據(jù)兩個(gè)優(yōu)化去進(jìn)行鎖退化,核心因素是唯一索引及等值查詢。

其中「兩個(gè)原則、兩個(gè)優(yōu)化」是:

  • 原則 1:加鎖的基本單位是 next-key lock。其中 next-key lock 是前開后閉區(qū)間,例如:(2, 5]。
  • 原則 2:查找過程中訪問到的對(duì)象才會(huì)加鎖。
  • 優(yōu)化 1:索引上的等值查詢,給唯一索引加鎖的時(shí)候,next-key lock 退化為行鎖。
  • 優(yōu)化 2:索引上的等值查詢,向右遍歷時(shí)且最后一個(gè)值不滿足等值條件的時(shí)候,next-key lock 退化為間隙鎖。

通過上面這樣的加鎖規(guī)則,我們就可以有一個(gè)大致的分析思路,至少能開始分析加鎖規(guī)律了。

但要注意的是,實(shí)際上的情況非常復(fù)雜,例如 limit 參數(shù)也會(huì)影響加鎖的范圍,非唯一索引多個(gè)值夜會(huì)影響鎖范圍。簡(jiǎn)單地說(shuō),就是有很多特例的情況,我們還需要繼續(xù)去積累。

參考資料

  • 20 | 幻讀是什么,幻讀有什么問題?
  • 21 | 為什么我只改一行的語(yǔ)句,鎖這么多?
  • 完整版:Innodb 到底是怎么加鎖的
責(zé)任編輯:武曉燕 來(lái)源: 樹哥聊編程
相關(guān)推薦

2023-03-30 08:52:40

DartFlutter

2023-10-26 16:27:50

前端 WebCSS開發(fā)

2023-09-18 08:02:45

CSS布局屬性

2022-08-03 08:01:16

CDN網(wǎng)站服務(wù)器

2023-12-12 07:31:51

Executors工具開發(fā)者

2022-09-05 09:25:53

KubernetesService

2023-04-04 08:01:47

2022-09-09 10:00:13

KubernetesConfigMap

2024-10-16 10:11:52

2022-08-09 09:10:43

Kubernetes容器

2023-11-28 09:31:55

MySQL算法

2021-06-02 05:43:36

比特幣虛擬貨幣區(qū)塊鏈

2022-09-01 08:01:56

Pythongunicorn

2024-05-09 10:11:30

2023-11-20 08:18:49

Netty服務(wù)器

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2023-07-31 08:18:50

Docker參數(shù)容器

2023-11-06 08:16:19

APM系統(tǒng)運(yùn)維

2021-05-29 10:11:00

Kafa數(shù)據(jù)業(yè)務(wù)
點(diǎn)贊
收藏

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

精品资源在线看| 国产乡下妇女做爰毛片| 伊人亚洲精品| 亚洲综合一区二区三区| 久久久久久久久久久久久久久久av| 综合激情网五月| 色婷婷色综合| 亚洲国产日韩欧美综合久久 | 久久久久久久久免费看无码| 欧美123区| 亚洲午夜在线视频| 视频一区视频二区视频| 亚洲精品一区二区三区不卡| 日韩黄色免费电影| 久久久免费高清电视剧观看| 69xxx免费| 久草精品视频| 日韩欧美久久久| 激情综合网俺也去| 欧美少妇精品| 一区二区免费看| 亚洲一区三区| 免费在线国产| 波多野结衣在线aⅴ中文字幕不卡| 国产精品一区二区久久国产| 成年人视频在线免费看| 欧美日本精品| 久久天堂av综合合色| 88久久精品无码一区二区毛片| 午夜视频一区二区在线观看| 欧美精品三级日韩久久| 久久综合久久色| 欧美激情20| 亚洲国产精品久久一线不卡| 99精品一级欧美片免费播放| 137大胆人体在线观看| 久久久久国产成人精品亚洲午夜 | 欧美**字幕| 亚洲激情电影中文字幕| 亚洲av综合色区无码另类小说| 电影一区二区三区久久免费观看| 在线观看免费成人| 欧美污视频网站| 一级毛片久久久| 欧美日韩国产色视频| 波多野结衣50连登视频| 国产777精品精品热热热一区二区| 亚洲人精品午夜| 久久精品青青大伊人av| 中字幕一区二区三区乱码| 欧美美乳视频| 国产亚洲aⅴaaaaaa毛片| 这里只有久久精品| 欧美在线免费看视频| 亚洲视频在线观看视频| 能直接看的av| 天天做天天爱天天综合网2021| 中文字幕在线日韩| 欧美做爰啪啪xxxⅹ性| 国产精品久久天天影视| 欧美成人剧情片在线观看| 91精品国产高清一区二区三蜜臀| 91成人精品视频| 欧美精品午夜视频| 国产在线视频卡一卡二| 亚洲一区欧美二区| 国产精品第三页| 在线观看免费高清视频| 激情六月婷婷综合| 99国精产品一二二线| 男人天堂av网| 久久久蜜桃精品| 五月天色一区| 在线观看免费视频你懂的| 亚洲一二三四在线| 日韩av黄色网址| 日韩在线观看不卡| 日韩一级免费观看| 一起草在线视频| 欧美综合久久| 久久99国产精品久久久久久久久| 日本在线视频中文字幕| 久久九九国产| 91牛牛免费视频| 性感美女一级片| 中文字幕成人av| 中国女人做爰视频| 天堂√8在线中文| 欧美视频日韩视频在线观看| 日韩精品视频网址| 西野翔中文久久精品国产| 一区二区在线免费视频| 成年人av电影| 日韩中文字幕1| 亚洲专区国产精品| 青青久草在线| 亚洲色图.com| 欧洲av无码放荡人妇网站| 中文成人在线| 亚洲热线99精品视频| 中文字幕在线观看成人| 久久午夜精品| 99精品国产高清一区二区| 精品亚洲成a人片在线观看| 亚洲免费大片在线观看| 成人在线免费播放视频| 一区二区三区免费在线看| 国产亚洲人成网站在线观看| 久久免费少妇高潮99精品| 奇米亚洲午夜久久精品| 成人久久18免费网站漫画| 成人77777| 午夜国产精品一区| 能看毛片的网站| 成人黄色av| 青青精品视频播放| 国产 欧美 自拍| 亚洲欧美另类小说| 日本网站免费在线观看| 爱爱精品视频| 美女久久久久久久| 中文字幕视频二区| 久久九九久精品国产免费直播| 激情五月婷婷六月| 91精品亚洲一区在线观看| 亚洲视频免费一区| 国产又黄又猛又粗又爽| 国产成人aaa| 强开小嫩苞一区二区三区网站| 亚洲电影有码| 亚洲三级av在线| www.中文字幕在线观看| 成人黄色综合网站| 91精品国产毛片武则天| 只有精品亚洲| 久久视频中文字幕| av中文字幕在线免费观看| 中文字幕一区在线观看视频| www.99av.com| av伊人久久| 国产精品久久久一区| 精品av中文字幕在线毛片| 日韩欧美国产网站| 国产精品jizz| 久久精品午夜| 日韩精品久久一区二区三区| 一二区成人影院电影网| 亚洲午夜未删减在线观看 | 国产精品一区毛片| 国产欧美亚洲日本| 黄视频免费在线看| 日韩av资源在线播放| 日韩免费观看一区二区| 99精品一区二区三区| 欧美日本视频在线观看| 日韩精品社区| 国产91在线播放九色快色| 韩国中文免费在线视频| 欧美午夜精品久久久久久孕妇| 亚洲一区 欧美| 久久激五月天综合精品| 国产资源第一页| 国产一级成人av| 日韩av毛片网| 日本在线播放| 精品少妇一区二区三区在线视频 | 国产精品一区免费在线| 欧美精品免费在线观看| 欧美视频一二区| 婷婷国产v国产偷v亚洲高清| 18禁裸乳无遮挡啪啪无码免费| 久久蜜桃精品| 香蕉视频在线网址| 国产毛片精品| 国产精品1234| 在线观看h网| 精品亚洲一区二区三区在线播放| 国产女主播喷水视频在线观看 | 国产盗摄精品一区二区三区在线| 国产青草视频在线观看| 亚洲人成网亚洲欧洲无码| 国产精品国产亚洲伊人久久| av在线影院| 亚洲久久久久久久久久| 一卡二卡三卡在线| 亚洲成人1区2区| 亚洲一级黄色录像| 粉嫩aⅴ一区二区三区四区五区 | 毛片在线免费视频| 国产精品久久久久天堂| 无码任你躁久久久久久老妇| 视频在线观看91| 大荫蒂性生交片| 欧美色就是色| 国产精品自拍首页| 亚洲免费一区| 日本成人在线视频网址| www视频在线看| 国产一区二区三区中文| 国产1区在线观看| 欧美午夜精品一区| 国产微拍精品一区| 亚洲精品国产高清久久伦理二区| 精品人妻互换一区二区三区| 国产精品99久久久久久有的能看 | 好吊色视频988gao在线观看| 亚洲国产合集| 福利视频一区二区三区| 麻豆久久久久| 国产成人拍精品视频午夜网站| av在线免费观看网址| 中文字幕精品在线视频| 你懂的视频在线播放| 日韩美女主播在线视频一区二区三区 | 午夜18视频在线观看| 69av一区二区三区| 中文字幕 欧美激情| 一本大道久久a久久精品综合| 久久精品第一页| 亚洲色图视频网站| 特级西西人体高清大胆| 久久精品一区二区三区四区| 黄色在线免费播放| 国产河南妇女毛片精品久久久 | 视频直播国产精品| 亚洲欧美日韩一区二区三区四区| 亚洲一区二区三区美女| 五月天av网站| 中文字幕亚洲欧美在线不卡| 级毛片内射视频| 久久影院视频免费| 日本丰满少妇裸体自慰| 99精品久久99久久久久| 男人的天堂影院| 成人性生交大合| 秘密基地免费观看完整版中文 | 欧美美女激情18p| 中文有码在线播放| 欧美日韩精品欧美日韩精品| 国产精品sm调教免费专区| 在线区一区二视频| 在线观看你懂的网站| 欧洲日韩一区二区三区| 中文字幕理论片| 欧美久久婷婷综合色| 97超碰资源站| 日韩一区二区三区精品视频| 精品久久久中文字幕人妻| 日韩三级精品电影久久久| www天堂在线| 亚洲国产成人精品一区二区 | 日韩在线观看免费高清| 欧美jizzhd69巨大| 美女精品久久久| 99在线视频影院| 欧美在线一级视频| 成人mm视频在线观看| 国产精品日韩久久久久| 性欧美video另类hd尤物| 亚洲最大福利网站| 高潮久久久久久久久久久久久久| 精品视频高清无人区区二区三区| 亚洲免费专区| 伊人久久大香线蕉精品| 欧美日韩伊人| 无码人妻精品一区二区三区在线| 噜噜噜在线观看免费视频日韩| 天堂av在线网站| 国产精品一区三区| 黄色性生活一级片| 国产精品麻豆久久久| 久久网中文字幕| 欧美性xxxx在线播放| 在线观看免费中文字幕| 精品久久久久久久久久久久久久久久久| 色欲av永久无码精品无码蜜桃| 亚洲人成电影在线播放| 久草中文在线| 91av在线网站| 久久三级毛片| 国产精品免费看一区二区三区| 欧美日韩123| 免费cad大片在线观看| 国产农村妇女精品一区二区| 国产又黄又猛的视频| 9人人澡人人爽人人精品| 一本色道久久88| 午夜免费久久看| 国产精品毛片一区二区在线看舒淇 | 欧美专区在线播放| 亚洲国产91视频| 精品久久sese| 99久久.com| 国内外成人免费激情视频| 老司机免费视频一区二区三区| 午夜福利三级理论电影| 国产精品午夜电影| 欧美精品二区三区| 日韩一区二区免费电影| 狠狠色伊人亚洲综合网站l| 欧美精品videofree1080p| 日本肉肉一区| 麻豆一区区三区四区产品精品蜜桃| 一本到12不卡视频在线dvd| 成年人在线看片| 成人小视频在线观看| 永久免费看片直接| 色素色在线综合| 婷婷色在线视频| 欧美精品在线看| 亚洲男女网站| 丝袜美腿玉足3d专区一区| 亚洲国产影院| 师生出轨h灌满了1v1| 亚洲日韩欧美一区二区在线| 天天爱天天做天天爽| 日韩精品电影网| 成人在线免费看片| 国产主播欧美精品| 欧美日韩激情在线一区二区三区| 国产精品后入内射日本在线观看| 国产精品白丝av| 国产天堂av在线| 欧美日韩成人在线| wwwxxx在线观看| 国产97在线|日韩| 亚洲国产欧美日韩在线观看第一区 | 欧美高清视频一二三区 | www.色就是色.com| 国产亚洲一二三区| 欧美日韩乱国产| 国产网站欧美日韩免费精品在线观看 | 久久精品青草| 亚洲日本黄色片| 中文字幕一区在线观看| 国产又粗又猛又爽又黄91| 日韩视频中文字幕| 久久亚洲国产精品尤物| 亚洲永久激情精品| 精品一区二区三区在线观看国产| 黄色av片三级三级三级免费看| 欧美亚洲综合色| 最新真实国产在线视频| 国产在线a不卡| 亚洲成人99| 亚洲精品乱码久久久久久9色| 亚洲另类色综合网站| 朝桐光av在线一区二区三区| 欧美精品在线第一页| 成功精品影院| 欧美 丝袜 自拍 制服 另类| 91丨九色丨国产丨porny| 天天干在线播放| 亚洲性生活视频| 未满十八勿进黄网站一区不卡| 久久久99精品视频| 成人av网在线| а中文在线天堂| 久久久国产91| gogo久久日韩裸体艺术| 黄色网页免费在线观看| 国产视频不卡一区| 一卡二卡三卡在线观看| 欧美国产一区二区三区| 欧美色图五月天| 亚洲福利精品视频| 亚洲精品免费在线| 污污视频在线观看网站| 国产不卡av在线免费观看| 99久久亚洲精品| 在线观看亚洲免费视频| 色呦呦网站一区| 国产一二区在线| 久久手机视频| 精品影视av免费| 国产无码精品视频| 伊人亚洲福利一区二区三区| 精品国产三级| 97国产在线播放| 中文字幕一区免费在线观看| 亚洲精品国产av| 国产成人精品久久二区二区91| 欧美国产一级| 国产精品久久不卡| 欧美日韩精品欧美日韩精品一综合 | 日韩毛片视频在线看| 亚洲成人777777| 国产成人精品久久二区二区91| 五月开心六月丁香综合色啪| 国产草草浮力影院| 884aa四虎影成人精品一区| av资源在线| 先锋影音男人资源| 26uuu亚洲综合色| 精品国产18久久久久久| 国产精品1234| 亚洲作爱视频| 永久看片925tv| 一区二区欧美在线| 六月丁香久久丫|