精品欧美一区二区三区在线观看 _久久久久国色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)

欧美一级爽aaaaa大片| 亚洲欧美中文字幕在线一区| www.男人天堂网| 午夜性色福利影院| 琪琪一区二区三区| 欧美人与物videos| 国产女主播喷水高潮网红在线| 久久免费影院| 欧美日韩国产一区二区三区| 在线观看成人av| 亚洲 小说区 图片区 都市| 另类小说视频一区二区| 97视频人免费观看| 少妇被躁爽到高潮无码文| 亚洲警察之高压线| 日韩欧美视频一区| 日韩欧美国产片| av最新在线| 亚洲欧美影音先锋| 欧美一级日本a级v片| 色婷婷中文字幕| 国内精品久久久久影院一蜜桃| 1769国内精品视频在线播放| 无码人妻精品一区二区三区夜夜嗨| 亚洲免费毛片| 亚洲电影第1页| 免费看的av网站| 欧美少妇激情| 欧美在线视频全部完| 日韩在线一级片| 91美女主播在线视频| 亚洲欧美另类小说视频| 亚洲欧美日韩另类精品一区二区三区| 色鬼7777久久| 99麻豆久久久国产精品免费 | 最近中文字幕在线免费观看| 日韩一区二区久久| 久久久久中文字幕2018| 国产精品久久久精品四季影院| 欧美三级三级| 国产一区二区三区视频免费| 久久久久欧美| 丁香六月色婷婷| 国产专区综合网| 国产九九精品视频| 自拍偷拍精品视频| 视频一区在线播放| 日本精品久久久久久久| 亚洲免费在线视频观看| 一区二区黄色| 26uuu日韩精品一区二区| 日本三级午夜理伦三级三| 精品电影一区| 久久久在线观看| 五月天综合在线| 亚洲精品偷拍| 青青久久av北条麻妃海外网| 欧美videossex极品| 国产日韩精品视频一区二区三区| 午夜精品一区二区三区在线视 | 一区二区动漫| 45www国产精品网站| 伦av综合一区| 三级欧美韩日大片在线看| 国产成人福利视频| 亚洲不卡视频在线观看| 日韩精品每日更新| 国产精品444| 国产又粗又猛又爽又黄91| 国内成人精品2018免费看| 91福利入口| 天堂中文在线看| 国产亚洲精品久| 一区二区三区观看| 在线观看三级视频| 五月天视频一区| 国产视频一区二区三区在线播放| 岛国精品在线| 日韩欧美www| 精品无码在线视频| 青青草原综合久久大伊人精品| 日韩最新中文字幕电影免费看| 欧美一区二区三区爽爽爽| 韩国在线一区| 人妖精品videosex性欧美| 亚洲色成人www永久网站| 精品一区二区影视| 国产激情一区二区三区在线观看| 一级成人黄色片| 免费高清在线一区| 国产精品xxx在线观看www| 九九在线视频| 亚洲久草在线视频| 精品视频一区二区在线| av在线精品| 国产视频精品va久久久久久| 乱老熟女一区二区三区| 亚洲精品美女| 国产日韩综合一区二区性色av| 国内老熟妇对白xxxxhd| 久久久av毛片精品| 国产午夜精品视频一区二区三区| 伊伊综合在线| 欧美va在线播放| 国产精品理论在线| 最新成人av网站| 成人黄色网免费| 日本不卡免费播放| 一区二区三区四区中文字幕| 91在线视频观看免费| 精品中国亚洲| xxx一区二区| 97人妻一区二区精品视频| 国产精品主播直播| 亚洲午夜精品一区二区三区| 这里有精品可以观看| 欧美一卡在线观看| 成年人看的免费视频| 久久成人一区| 精品乱色一区二区中文字幕| av在线free| 欧美日韩免费视频| 日本免费色视频| 亚洲黄页在线观看| 97久久国产精品| 性猛交富婆╳xxx乱大交天津 | 日韩精品一区二| 日韩一级片在线免费观看| 西西人体一区二区| 国产精品我不卡| www在线免费观看视频| 欧美群妇大交群的观看方式| a级片在线观看| 国产一区二区高清| 精品日韩美女| 国产乱码午夜在线视频| 亚洲精品在线三区| 久久久久成人网站| 国产乱人伦精品一区二区在线观看 | 中文字幕精品一区二| 成人在线黄色| 国产91色综合久久免费分享| 国产精品99久久久久久久久久久久| 亚洲黄色在线免费观看| 亚洲欧美欧美一区二区三区| 九九热99视频| 99久久激情| 成人有码视频在线播放| 一广人看www在线观看免费视频| 色爱区综合激月婷婷| 国产特黄级aaaaa片免| 国产午夜久久| 欧美高清性xxxxhd| 电影一区二区三| 亚洲码在线观看| 日韩一级片中文字幕| 中文字幕精品综合| 日韩精品你懂的| 国产精品国内免费一区二区三区| 国产免费观看久久黄| 欧美成人视屏| 日韩一级高清毛片| 免费人成视频在线| 成人免费av资源| 97视频久久久| 久久99国产成人小视频| 国产精品久久久久久网站| 天天综合视频在线观看| 欧美精品xxxxbbbb| 久久国产免费观看| 99精品黄色片免费大全| 久久久久久久久久久久久久国产| 亚洲一区二区三区日韩| 欧美视频久久| 精品国产乱码久久久久久108| 香蕉伊大人中文在线观看| 国产小视频国产精品| 亚洲天堂免费av| 亚洲一区二区三区不卡国产欧美| 亚洲第一黄色网址| 奇米一区二区三区| 成年人深夜视频| 猛男gaygay欧美视频| 成人免费看黄网站| a天堂资源在线| 伊人青青综合网站| 朝桐光av在线一区二区三区| 欧美特级www| 特一级黄色录像| 99久久精品免费看国产免费软件| www日韩视频| 欧美日韩国产探花| 欧美在线一二三区| 一区二区网站| 国产精品视频免费在线观看| 欧美xxx黑人xxx水蜜桃| 亚洲一级片在线看| 高清毛片aaaaaaaaa片| 欧美午夜一区二区三区免费大片| 成人免费视频在线观看超级碰| 污视频在线看网站| 国产午夜精品视频免费不卡69堂| 国产黄色av网站| 欧美天堂亚洲电影院在线播放| 国产va在线播放| 久久精品亚洲一区二区三区浴池 | 国产在线拍揄自揄拍无码视频| 久久久综合网站| 韩国三级在线看| 青青青伊人色综合久久| 欧美久久久久久久久久久久久| 日韩免费视频| 久久亚洲精品欧美| 亚洲不卡视频| 自拍亚洲一区欧美另类| 欧美一级视频免费| 制服丝袜成人动漫| 亚洲欧美一二三区| 狠狠躁夜夜躁人人爽超碰91| 欧美成人一二三区| 欧美精品videosex| 精品国产不卡一区二区三区| 亚洲综合免费视频| 欧美午夜宅男影院在线观看| 久久伊人成人网| 亚洲日本青草视频在线怡红院| 欧美大波大乳巨大乳| 成人av电影在线网| 日本在线视频播放| 精品在线观看视频| 国产超碰在线播放| 首页欧美精品中文字幕| 黄色av网址在线播放| 精品福利电影| 800av在线免费观看| 亚洲理论电影网| 国产成年人在线观看| 欧美国产一级| 一本一道久久久a久久久精品91| 精品国产精品久久一区免费式| 久久99久久精品国产| 欧美理论电影在线精品| 国产精品视频免费观看| 好吊妞视频这里有精品| 粉嫩av四季av绯色av第一区| 欧洲精品99毛片免费高清观看| 亚洲sss综合天堂久久| 2019中文亚洲字幕| 91日本视频在线| 国产精品欧美一区二区三区不卡| 国产一区二区丝袜| 国产一区二区高清在线| 91九色蝌蚪国产| 国产精品一区二区三区四区在线观看 | 国产精品自拍一区| 麻豆网站免费观看| 成人综合婷婷国产精品久久 | 亚洲国产激情av| 日本欧美一区二区三区不卡视频| 国产精品久久午夜| 日本一二三区在线观看| 亚洲美女淫视频| 久久精品欧美一区二区| 午夜精品久久久久久久蜜桃app| 国产女同在线观看| 一本大道av一区二区在线播放| 波多野结衣在线观看视频| 欧美日韩在线播放一区| 国产女人高潮毛片| 精品国产伦一区二区三区观看方式 | 成人在线综合网| 91精品国产自产| 国产日韩欧美不卡在线| 亚洲人做受高潮| 亚洲综合在线视频| 天堂中文字幕在线观看| 国产成人三级| 国产成人在线播放| 亚洲日本免费电影| 超碰97国产在线| 美女100%一区| 国产精品夜色7777狼人| 日韩三级不卡| 久久av一区二区三区漫画| 欧美日韩在线二区| www.激情网| 丝袜美腿亚洲综合| 男人午夜视频在线观看| 不卡的看片网站| 欧美精品日韩在线| 一区二区三区国产豹纹内裤在线| 国产日产精品一区二区三区| 欧美高清视频www夜色资源网| 丰满少妇被猛烈进入| 国产一区二区三区四区福利| 四虎影视国产在线视频| 国产成人拍精品视频午夜网站 | 久久久久99| 黑人性生活视频| 久久久五月婷婷| 久久久久久久9999| 欧美三级乱人伦电影| 午夜视频www| 毛片精品免费在线观看| 欧美free嫩15| 国产一区二区不卡视频| 亚洲成人国产| 可以在线看的黄色网址| 成人动漫视频在线| 国产美女久久久久久| 欧美综合视频在线观看| 亚洲欧美日韩动漫| 欧美成人午夜视频| 粉嫩91精品久久久久久久99蜜桃| 久草一区二区| 国产精品porn| 在线一区二区不卡| 中文字幕 久热精品 视频在线| 日本黄色片视频| 欧美va亚洲va在线观看蝴蝶网| 亚洲精品视频大全| 爽爽淫人综合网网站| 国产精品果冻传媒| 1024国产精品| 中文在线字幕免费观| 亚洲欧洲中文天堂| 午夜裸体女人视频网站在线观看| 翡翠波斯猫1977年美国| 欧美淫片网站| 樱花草www在线| 国产精品免费视频观看| 日韩中文字幕高清| 亚洲欧洲在线播放| 午夜日韩成人影院| 欧美日韩国产免费一区二区三区| 亚洲人人精品| 人妻av一区二区| 99re成人在线| 久久精品国产av一区二区三区| 欧美一区永久视频免费观看| 欧美日韩在线看片| 91精品久久久久久久| 久久要要av| 色91精品久久久久久久久| 中文字幕在线不卡| 亚洲视频在线免费播放| 色狠狠av一区二区三区香蕉蜜桃| 日本高清不卡一区二区三区视频| 欧美成人久久久| 草久久免费视频| 欧美性xxxxxxxxx| 日本午夜在线视频| 日本久久久a级免费| 国产欧美日韩精品一区二区免费| 国产淫片av片久久久久久| 久久精品在这里| 怡春院在线视频| 精品国产一区久久久| 国产一区二区三区免费在线 | 亚洲精选91| 中日韩精品一区二区三区| 在线亚洲高清视频| 欧美三级黄网| 国产精品国产三级国产专区53 | 91国内在线播放| 亚洲女同女同女同女同女同69| 亚洲高清精品视频| 91精品国产高清久久久久久| 亚洲精品国产setv| 亚洲 激情 在线| 亚洲精品国产视频| 亚洲av毛片成人精品| 国产免费亚洲高清| 欧美亚韩一区| 亚洲黄色小说视频| 在线成人免费视频| 爱情岛论坛亚洲品质自拍视频网站| 国产尤物91| 全国精品久久少妇| 国产在线观看免费av| 亚洲欧美一区二区三区四区| 日韩专区视频网站| 国产主播自拍av| 亚洲国产精品精华液ab| www.久久成人| 日韩av片永久免费网站| 一区二区三区网站| 插吧插吧综合网| 在线播放/欧美激情| 精品丝袜在线| 欧美性视频在线播放| 91啪九色porn原创视频在线观看| 久久精品国产亚洲av麻豆蜜芽| 欧美黄色性视频| 欧美精品一区二区三区中文字幕| 中文字幕 欧美 日韩| 欧美主播一区二区三区| free性欧美| 亚洲AV无码成人精品一区| 久久蜜桃av一区二区天堂|