亭亭五月天在线观看,亭亭五月天在线观看,国产最新av一区二区,国产 高清 中文字幕,99re热久久亚洲综合精品成人,熟妇 一区二区三区,一级做a爰片性色毛片武则天,美女的骚穴视频播放,国产美女午夜免费视频

首頁>國(guó)內(nèi) > 正文

MySQL 加行級(jí)鎖的規(guī)則終于被我說清楚了!

2022-11-11 18:46:58來源:小林coding

大家好,我是小林。


(資料圖片僅供參考)

是不是很多人都對(duì) MySQL 加行級(jí)鎖的規(guī)則搞的迷迷糊糊,一會(huì)是 next-key 鎖,一會(huì)是間隙鎖,一會(huì)又是記錄鎖。

坦白說,確實(shí)還挺復(fù)雜的,但是好在我找點(diǎn)了點(diǎn)規(guī)律,也知道如何如何用命令分析加了什么類型的行級(jí)鎖。

之前我寫過一篇關(guān)于「MySQL 是怎么加行級(jí)鎖的?」的文章,隨著我寫 MySQL 鎖相關(guān)的文章越來越多時(shí),后來發(fā)現(xiàn)當(dāng)時(shí)的文章寫的不夠詳細(xì)。

為了讓大家很清楚的知道 MySQL 是怎么加行級(jí)鎖的,以及如何用命令分析加了什么行級(jí)鎖,所以我重寫了這篇文章。

文章內(nèi)容比較長(zhǎng),大家可以耐心看下去,一定會(huì)有新的發(fā)現(xiàn)!

目錄

什么 SQL 語句會(huì)加行級(jí)鎖?

InnoDB 引擎是支持行級(jí)鎖的,而 MyISAM 引擎并不支持行級(jí)鎖,所以后面的內(nèi)容都是基于 InnoDB 引擎 的。

普通的 select 語句是不會(huì)對(duì)記錄加鎖的,因?yàn)樗鼘儆诳煺兆x,是通過 MVCC(多版本并發(fā)控制)實(shí)現(xiàn)的。

如果要在查詢時(shí)對(duì)記錄加行級(jí)鎖,可以使用下面這兩個(gè)方式,這兩種查詢會(huì)加鎖的語句稱為鎖定讀。

//對(duì)讀取的記錄加共享鎖(S型鎖)select ... lock in share mode;//對(duì)讀取的記錄加獨(dú)占鎖(X型鎖)select ... for update;

上面這兩條語句必須在一個(gè)事務(wù)中,因?yàn)楫?dāng)事務(wù)提交了,鎖就會(huì)被釋放,所以在使用這兩條語句的時(shí)候,要加上 begin 或者 start transaction 開啟事務(wù)的語句。

除了上面這兩條鎖定讀語句會(huì)加行級(jí)鎖之外,update 和 delete 操作都會(huì)加行級(jí)鎖,且鎖的類型都是獨(dú)占鎖。

//對(duì)操作的記錄加獨(dú)占鎖(X型鎖)updaet table .... where id = 1;//對(duì)操作的記錄加獨(dú)占鎖(X型鎖)delete from table where id = 1;

共享鎖(S鎖)滿足讀讀共享,讀寫互斥。獨(dú)占鎖(X鎖)滿足寫寫互斥、讀寫互斥。

行級(jí)鎖有哪些種類?

不同隔離級(jí)別下,行級(jí)鎖的種類是不同的。

在讀已提交隔離級(jí)別下,行級(jí)鎖的種類只有記錄鎖,也就是僅僅把一條記錄鎖上。

在可重復(fù)讀隔離級(jí)別下,行級(jí)鎖的種類除了有記錄鎖,還有間隙鎖(目的是為了避免幻讀),所以行級(jí)鎖的種類主要有三類:

Record Lock,記錄鎖,也就是僅僅把一條記錄鎖上;Gap Lock,間隙鎖,鎖定一個(gè)范圍,但是不包含記錄本身;Next-Key Lock:Record Lock + Gap Lock 的組合,鎖定一個(gè)范圍,并且鎖定記錄本身。

接下來,分別介紹這三種行級(jí)鎖。

Record Lock

Record Lock 稱為記錄鎖,鎖住的是一條記錄。而且記錄鎖是有 S 鎖和 X 鎖之分的:

當(dāng)一個(gè)事務(wù)對(duì)一條記錄加了 S 型記錄鎖后,其他事務(wù)也可以繼續(xù)對(duì)該記錄加 S 型記錄鎖(S 型與 S 鎖兼容),但是不可以對(duì)該記錄加 X 型記錄鎖(S 型與 X 鎖不兼容);當(dāng)一個(gè)事務(wù)對(duì)一條記錄加了 X 型記錄鎖后,其他事務(wù)既不可以對(duì)該記錄加 S 型記錄鎖(S 型與 X 鎖不兼容),也不可以對(duì)該記錄加 X 型記錄鎖(X 型與 X 鎖不兼容)。

舉個(gè)例子,當(dāng)一個(gè)事務(wù)執(zhí)行了下面這條語句:

mysql > begin;mysql > select * from t_test where id = 1 for update;

事務(wù)會(huì)對(duì)表中主鍵 id = 1 的這條記錄加上 X 型的記錄鎖,這樣其他事務(wù)就無法對(duì)這條記錄進(jìn)行修改和刪除了。

當(dāng)事務(wù)執(zhí)行 commit 后,事務(wù)過程中生成的鎖都會(huì)被釋放。

Gap Lock

Gap Lock 稱為間隙鎖,只存在于可重復(fù)讀隔離級(jí)別,目的是為了解決可重復(fù)讀隔離級(jí)別下幻讀的現(xiàn)象。

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

間隙鎖雖然存在 X 型間隙鎖和 S 型間隙鎖,但是并沒有什么區(qū)別,間隙鎖之間是兼容的,即兩個(gè)事務(wù)可以同時(shí)持有包含共同間隙范圍的間隙鎖,并不存在互斥關(guān)系,因?yàn)殚g隙鎖的目的是防止插入幻影記錄而提出的。

Next-Key Lock

Next-Key Lock 稱為臨鍵鎖,是 Record Lock + Gap Lock 的組合,鎖定一個(gè)范圍,并且鎖定記錄本身。

假設(shè),表中有一個(gè)范圍 id 為(3,5] 的 next-key lock,那么其他事務(wù)即不能插入 id = 4 記錄,也不能修改 id = 5 這條記錄。

所以,next-key lock 即能保護(hù)該記錄,又能阻止其他事務(wù)將新記錄插入到被保護(hù)記錄前面的間隙中。

next-key lock 是包含間隙鎖+記錄鎖的,如果一個(gè)事務(wù)獲取了 X 型的 next-key lock,那么另外一個(gè)事務(wù)在獲取相同范圍的 X 型的 next-key lock 時(shí),是會(huì)被阻塞的。

比如,一個(gè)事務(wù)持有了范圍為 (1, 10] 的 X 型的 next-key lock,那么另外一個(gè)事務(wù)在獲取相同范圍的 X 型的 next-key lock 時(shí),就會(huì)被阻塞。

雖然相同范圍的間隙鎖是多個(gè)事務(wù)相互兼容的,但對(duì)于記錄鎖,我們是要考慮 X 型與 S 型關(guān)系,X 型的記錄鎖與 X 型的記錄鎖是沖突的。

MySQL 是怎么加行級(jí)鎖的?

行級(jí)鎖加鎖規(guī)則比較復(fù)雜,不同的場(chǎng)景,加鎖的形式是不同的。

加鎖的對(duì)象是索引,加鎖的基本單位是 next-key lock,它是由記錄鎖和間隙鎖組合而成的,next-key lock 是前開后閉區(qū)間,而間隙鎖是前開后開區(qū)間。

但是,next-key lock 在一些場(chǎng)景下會(huì)退化成記錄鎖或間隙鎖。

那到底是什么場(chǎng)景呢?

這次會(huì)以下面這個(gè)表結(jié)構(gòu)來進(jìn)行實(shí)驗(yàn)說明:

CREATE TABLE `user` (  `id` bigint NOT NULL AUTO_INCREMENT,  `name` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,  `age` int NOT NULL,  PRIMARY KEY (`id`),  KEY `index_age` (`age`) USING BTREE) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

其中,id 是主鍵索引(唯一索引),age 是普通索引(非唯一索引),name 是普通的列。

表中的有這些行記錄:

這次實(shí)驗(yàn)環(huán)境的MySQL 版本是 8.0.26,隔離級(jí)別是「可重復(fù)讀」。

不同版本的加鎖規(guī)則可能是不同的,但是大體上是相同的。

唯一索引等值查詢

當(dāng)我們用唯一索引進(jìn)行等值查詢的時(shí)候,查詢的記錄存不存在,加鎖的規(guī)則也會(huì)不同:

當(dāng)查詢的記錄是「存在」的,在索引樹上定位到這一條記錄后,將該記錄的索引中的 next-key lock 會(huì)退化成「記錄鎖」。當(dāng)查詢的記錄是「不存在」的,則會(huì)在索引樹找到第一條大于該查詢記錄的記錄,然后將該記錄的索引中的 next-key lock 會(huì)退化成「間隙鎖」。

接下里用兩個(gè)案例來說明。

1、記錄存在的情況

假設(shè)事務(wù) A 執(zhí)行了這條等值查詢語句,查詢的記錄是「存在」于表中的。

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where id = 1 for update;+----+--------+-----+| id | name   | age |+----+--------+-----+|  1 | 路飛   |  19 |+----+--------+-----+1 row in set (0.02 sec)

那么,事務(wù) A 會(huì)為 id 為 1 的這條記錄就會(huì)加上X 型的記錄鎖。

接下來,如果有其他事務(wù),對(duì) id 為 1 的記錄進(jìn)行更新或者刪除操作的話,這些操作都會(huì)被阻塞,因?yàn)楦禄蛘邉h除操作也會(huì)對(duì)記錄加 X 型的記錄鎖,而 X 鎖和 X 鎖之間是互斥關(guān)系。

比如,下面這個(gè)例子:

因?yàn)槭聞?wù) A 對(duì) id = 1的記錄加了X 型的記錄鎖,所以事務(wù) B 在修改 id=1 的記錄時(shí)會(huì)被阻塞,事務(wù) C 在刪除 id=1 的記錄時(shí)也會(huì)被阻塞。

有什么命令可以分析加了什么鎖?

我們可以通過select * from performance_schema.data_locks\G;這條語句,查看事務(wù)執(zhí)行 SQL 過程中加了什么鎖。

我們以前面的事務(wù) A 作為例子,分析下下它加了什么鎖。

從上圖可以看到,共加了兩個(gè)鎖,分別是:

表鎖:X 類型的意向鎖;行鎖:X 類型的記錄鎖;

這里我們重點(diǎn)關(guān)注行級(jí)鎖,圖中 LOCK_TYPE 中的 RECORD 表示行級(jí)鎖,而不是記錄鎖的意思。

通過 LOCK_MODE 可以確認(rèn)是 next-key 鎖,還是間隙鎖,還是記錄鎖:

如果 LOCK_MODE 為X,說明是 next-key 鎖;如果 LOCK_MODE 為X, REC_NOT_GAP,說明是記錄鎖;如果 LOCK_MODE 為X, GAP,說明是間隙鎖;

因此,此時(shí)事務(wù) A 在 id = 1 記錄的主鍵索引上加的是記錄鎖,鎖住的范圍是 id 為 1 的這條記錄。這樣其他事務(wù)就無法對(duì) id 為 1 的這條記錄進(jìn)行更新和刪除操作了。

從這里我們也可以得知,加鎖的對(duì)象是針對(duì)索引,因?yàn)檫@里查詢語句掃描的 B+ 樹是聚簇索引樹,即主鍵索引樹,所以是對(duì)主鍵索引加鎖。將對(duì)應(yīng)記錄的主鍵索引加 記錄鎖后,就意味著其他事務(wù)無法對(duì)該記錄進(jìn)行更新和刪除操作了。

2、記錄不存在的情況

假設(shè)事務(wù) A 執(zhí)行了這條等值查詢語句,查詢的記錄是「不存在」于表中的。

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where id = 2 for update;Empty set (0.03 sec)

接下來,通過select * from performance_schema.data_locks\G;這條語句,查看事務(wù)執(zhí)行 SQL 過程中加了什么鎖。

從上圖可以看到,共加了兩個(gè)鎖,分別是:

表鎖:X 類型的意向鎖;行鎖:X 類型的間隙鎖;

因此,此時(shí)事務(wù) A 在 id = 5 記錄的主鍵索引上加的是間隙鎖,鎖住的范圍是 (1, 5)。

接下來,如果有其他事務(wù)插入 id 值為 2、3、4 這一些記錄的話,這些插入語句都會(huì)發(fā)生阻塞。

注意,如果其他事務(wù)插入的 id = 1 或者 id = 5 的記錄話,并不會(huì)發(fā)生阻塞,而是報(bào)主鍵沖突的錯(cuò)誤,因?yàn)楸碇幸呀?jīng)存在 id = 1 和 id = 5 的記錄了。

比如,下面這個(gè)例子:

因?yàn)槭聞?wù) A 在 id = 5 記錄的主鍵索引上加了范圍為 (1, 5) 的 X 型間隙鎖,所以事務(wù) B 在插入一條 id 為 3 的記錄時(shí)會(huì)被阻塞住,即無法插入 id = 3 的記錄。

間隙鎖的范圍(1, 5),是怎么確定的?

根據(jù)我的經(jīng)驗(yàn),如果 LOCK_MODE 是 next-key 鎖或者間隙鎖,那么 LOCK_DATA 就表示鎖的范圍「右邊界」,此次的事務(wù) A 的 LOCK_DATA 是 5。

然后鎖范圍的「左邊界」是表中 id 為 5 的上一條記錄的 id 值,即 1。

因此,間隙鎖的范圍(1, 5)。

唯一索引范圍查詢

范圍查詢和等值查詢的加鎖規(guī)則是不同的。

當(dāng)唯一索引進(jìn)行范圍查詢時(shí),會(huì)對(duì)每一個(gè)掃描到的索引加 next-key 鎖,然后如果遇到下面這些情況,會(huì)退化成記錄鎖或者間隙鎖:

情況一:針對(duì)「大于等于」的范圍查詢,因?yàn)榇嬖诘戎挡樵兊臈l件,那么如果等值查詢的記錄是存在于表中,那么該記錄的索引中的 next-key 鎖會(huì)退化成記錄鎖。情況二:針對(duì)「小于或者小于等于」的范圍查詢,要看條件值的記錄是否存在于表中:

當(dāng)條件值的記錄不在表中,那么不管是「小于」還是「小于等于」條件的范圍查詢,掃描到終止范圍查詢的記錄時(shí),該記錄的索引的 next-key 鎖會(huì)退化成間隙鎖,其他掃描到的記錄,都是在這些記錄的索引上加 next-key 鎖。

當(dāng)條件值的記錄在表中,如果是「小于」條件的范圍查詢,掃描到終止范圍查詢的記錄時(shí),該記錄的索引的 next-key 鎖會(huì)退化成間隙鎖,其他掃描到的記錄,都是在這些記錄的索引上加 next-key 鎖;如果「小于等于」條件的范圍查詢,掃描到終止范圍查詢的記錄時(shí),該記錄的索引 next-key 鎖不會(huì)退化成間隙鎖。其他掃描到的記錄,都是在這些記錄的索引上加 next-key 鎖。

接下來,通過幾個(gè)實(shí)驗(yàn),才驗(yàn)證我上面說的結(jié)論。

1、針對(duì)「大于或者大于等于」的范圍查詢

實(shí)驗(yàn)一:針對(duì)「大于」的范圍查詢的情況。

假設(shè)事務(wù) A 執(zhí)行了這條范圍查詢語句:

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where id > 15 for update;+----+-----------+-----+| id | name      | age |+----+-----------+-----+| 20 | 香克斯    |  39 |+----+-----------+-----+1 row in set (0.01 sec)

事務(wù) A 加鎖變化過程如下:

最開始要找的第一行是 id = 20,由于查詢?cè)撚涗洸皇且粋€(gè)等值查詢(不是大于等于條件查詢),所以對(duì)該主鍵索引加的是范圍為 (15, 20] 的 next-key 鎖;由于是范圍查找,就會(huì)繼續(xù)往后找存在的記錄,雖然我們看見表中最后一條記錄是 id = 20 的記錄,但是實(shí)際在 Innodb 存儲(chǔ)引擎中,會(huì)用一個(gè)特殊的記錄來標(biāo)識(shí)最后一條記錄,該特殊的記錄的名字叫 supremum pseudo-record ,所以掃描第二行的時(shí)候,也就掃描到了這個(gè)特殊記錄的時(shí)候,會(huì)對(duì)該主鍵索引加的是范圍為 (20, +∞] 的 next-key 鎖。停止掃描。

可以得知,事務(wù) A 在主鍵索引上加了兩個(gè) X 型 的 next-key 鎖:

在 id = 20 這條記錄的主鍵索引上,加了范圍為 (15, 20] 的 next-key 鎖,意味著其他事務(wù)即無法更新或者刪除 id = 20 的記錄,同時(shí)無法插入 id 值為 16、17、18、19 的這一些新記錄。在特殊記錄( supremum pseudo-record)的主鍵索引上,加了范圍為 (20, +∞] 的 next-key 鎖,意味著其他事務(wù)無法插入 id 值大于 20 的這一些新記錄。

我們也可以通過select * from performance_schema.data_locks\G;這條語句來看看事務(wù) A 加了什么鎖。

輸出結(jié)果如下,我這里只截取了行級(jí)鎖的內(nèi)容。

從上圖中的分析中,也可以得到事務(wù) A 在主鍵索引上加了兩個(gè) X 型 的next-key 鎖:

在 id = 20 這條記錄的主鍵索引上,加了范圍為 (15, 20] 的 next-key 鎖,意味著其他事務(wù)即無法更新或者刪除 id = 20 的記錄,同時(shí)無法插入 id 值為 16、17、18、19 的這一些新記錄。在特殊記錄( supremum pseudo-record)的主鍵索引上,加了范圍為 (20, +∞] 的 next-key 鎖,意味著其他事務(wù)無法插入 id 值大于 20 的這一些新記錄。

實(shí)驗(yàn)二:針對(duì)「大于等于」的范圍查詢的情況。

假設(shè)事務(wù) A 執(zhí)行了這條范圍查詢語句:

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where id >= 15 for update;+----+-----------+-----+| id | name      | age |+----+-----------+-----+| 15 | 烏索普    |  20 || 20 | 香克斯    |  39 |+----+-----------+-----+2 rows in set (0.00 sec)

事務(wù) A 加鎖變化過程如下:

最開始要找的第一行是 id = 15,由于查詢?cè)撚涗浭且粋€(gè)等值查詢(等于 15),所以該主鍵索引的 next-key 鎖會(huì)退化成記錄鎖,也就是僅鎖住 id = 15 這一行記錄。

由于是范圍查找,就會(huì)繼續(xù)往后找存在的記錄,掃描到的第二行是 id = 20,于是對(duì)該主鍵索引加的是范圍為 (15, 20] 的 next-key 鎖;

接著掃描到第三行的時(shí)候,掃描到了特殊記錄( supremum pseudo-record),于是對(duì)該主鍵索引加的是范圍為 (20, +∞] 的 next-key 鎖。

停止掃描。

可以得知,事務(wù) A 在主鍵索引上加了三個(gè) X 型 的鎖,分別是:

在 id = 15 這條記錄的主鍵索引上,加了記錄鎖,范圍是 id = 15 這一行記錄;意味著其他事務(wù)無法更新或者刪除 id = 15 的這一條記錄;在 id = 20 這條記錄的主鍵索引上,加了 next-key 鎖,范圍是 (15, 20] 。意味著其他事務(wù)即無法更新或者刪除 id = 20 的記錄,同時(shí)無法插入 id 值為 16、17、18、19 的這一些新記錄。在特殊記錄( supremum pseudo-record)的主鍵索引上,加了 next-key 鎖,范圍是 (20, +∞] 。意味著其他事務(wù)無法插入 id 值大于 20 的這一些新記錄。

我們也可以通過select * from performance_schema.data_locks\G;這條語句來看看事務(wù) A 加了什么鎖。

輸出結(jié)果如下,我這里只截取了行級(jí)鎖的內(nèi)容。

通過前面這個(gè)實(shí)驗(yàn),我們證明了:

針對(duì)「大于等于」條件的唯一索引范圍查詢的情況下, 如果條件值的記錄存在于表中,那么由于查詢?cè)摋l件值的記錄是包含一個(gè)等值查詢的操作,所以該記錄的索引中的 next-key 鎖會(huì)退化成記錄鎖。

2、針對(duì)「小于或者小于等于」的范圍查詢

實(shí)驗(yàn)一:針對(duì)「小于」的范圍查詢時(shí),查詢條件值的記錄「不存在」表中的情況。

假設(shè)事務(wù) A 執(zhí)行了這條范圍查詢語句,注意查詢條件值的記錄(id 為 6)并不存在于表中。

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where id < 6 for update;+----+--------+-----+| id | name   | age |+----+--------+-----+|  1 | 路飛   |  19 ||  5 | 索隆   |  21 |+----+--------+-----+3 rows in set (0.00 sec)

事務(wù) A 加鎖變化過程如下:

最開始要找的第一行是 id = 1,于是對(duì)該主鍵索引加的是范圍為 (-∞, 1] 的 next-key 鎖;由于是范圍查找,就會(huì)繼續(xù)往后找存在的記錄,掃描到的第二行是 id = 5,所以對(duì)該主鍵索引加的是范圍為 (1, 5] 的 next-key 鎖;由于掃描到的第二行記錄(id = 5),滿足 id < 6 條件,而且也沒有達(dá)到終止掃描的條件,接著會(huì)繼續(xù)掃描。掃描到的第三行是 id = 10,該記錄不滿足 id < 6 條件的記錄,所以 id = 10 這一行記錄的鎖會(huì)退化成間隙鎖,于是對(duì)該主鍵索引加的是范圍為 (5, 10) 的間隙鎖。由于掃描到的第三行記錄(id = 10),不滿足 id < 6 條件,達(dá)到了終止掃描的條件,于是停止掃描。

從上面的分析中,可以得知事務(wù) A 在主鍵索引上加了三個(gè) X 型的鎖:

在 id = 1 這條記錄的主鍵索引上,加了范圍為 (-∞, 1] 的 next-key 鎖,意味著其他事務(wù)即無法更新或者刪除 id = 1 的這一條記錄,同時(shí)也無法插入 id 小于 1 的這一些新記錄。在 id = 5 這條記錄的主鍵索引上,加了范圍為 (1, 5] 的 next-key 鎖,意味著其他事務(wù)即無法更新或者刪除 id = 5 的這一條記錄,同時(shí)也無法插入 id 值為 2、3、4 的這一些新記錄。在 id = 10 這條記錄的主鍵索引上,加了范圍為 (5, 10) 的間隙鎖,意味著其他事務(wù)無法插入 id 值為 6、7、8、9 的這一些新記錄。

我們也可以通過select * from performance_schema.data_locks\G;這條語句來看看事務(wù) A 加了什么鎖。

輸出結(jié)果如下,我這里只截取了行級(jí)鎖的內(nèi)容。

從上圖中的分析中,也可以得知事務(wù) A 在主鍵索引加的三個(gè)鎖,就是我們前面分析出那三個(gè)鎖。

雖然這次范圍查詢的條件是「小于」,但是查詢條件值的記錄不存在于表中( id 為 6 的記錄不在表中),所以如果事務(wù) A 的范圍查詢的條件改成 <= 6 的話,加的鎖還是和范圍查詢條件為 < 6 是一樣的。 大家自己也驗(yàn)證下這個(gè)結(jié)論。

因此,針對(duì)「小于或者小于等于」的唯一索引范圍查詢,如果條件值的記錄不在表中,那么不管是「小于」還是「小于等于」的范圍查詢,掃描到終止范圍查詢的記錄時(shí),該記錄中索引的 next-key 鎖會(huì)退化成間隙鎖,其他掃描的記錄,則是在這些記錄的索引上加 next-key 鎖。

實(shí)驗(yàn)二:針對(duì)「小于等于」的范圍查詢時(shí),查詢條件值的記錄「存在」表中的情況。

假設(shè)事務(wù) A 執(zhí)行了這條范圍查詢語句,注意查詢條件值的記錄(id 為 5)存在于表中。

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where id <= 5 for update;+----+--------+-----+| id | name   | age |+----+--------+-----+|  1 | 路飛   |  19 ||  5 | 索隆   |  21 |+----+--------+-----+2 rows in set (0.00 sec)

事務(wù) A 加鎖變化過程如下:

最開始要找的第一行是 id = 1,于是對(duì)該記錄加的是范圍為 (-∞, 1] 的 next-key 鎖;

由于是范圍查找,就會(huì)繼續(xù)往后找存在的記錄,掃描到的第二行是 id = 5,于是對(duì)該記錄加的是范圍為 (1, 5] 的 next-key 鎖。

由于主鍵索引具有唯一性,不會(huì)存在兩個(gè) id = 5 的記錄,所以不會(huì)再繼續(xù)掃描,于是停止掃描。

從上面的分析中,可以得到事務(wù) A 在主鍵索引上加了 2 個(gè) X 型的鎖:

在 id = 1 這條記錄的主鍵索引上,加了范圍為 (-∞, 1] 的 next-key 鎖。意味著其他事務(wù)即無法更新或者刪除 id = 1 的這一條記錄,同時(shí)也無法插入 id 小于 1 的這一些新記錄。在 id = 5 這條記錄的主鍵索引上,加了范圍為 (1, 5] 的 next-key 鎖。意味著其他事務(wù)即無法更新或者刪除 id = 5 的這一條記錄,同時(shí)也無法插入 id 值為 2、3、4 的這一些新記錄。

我們也可以通過select * from performance_schema.data_locks\G;這條語句來看看事務(wù) A 加了什么鎖。

輸出結(jié)果如下,我這里只截取了行級(jí)鎖的內(nèi)容。

從上圖中的分析中,可以得到事務(wù) A 在主鍵索引上加了兩個(gè) X 型 next-key 鎖,分別是:

在 id = 1 這條記錄的主鍵索引上,加了范圍為 (-∞, 1] 的 next-key 鎖;

在 id = 5 這條記錄的主鍵索引上,加了范圍為(1, 5 ] 的 next-key 鎖。

實(shí)驗(yàn)三:再來看針對(duì)「小于」的范圍查詢時(shí),查詢條件值的記錄「存在」表中的情況。

如果事務(wù) A 的查詢語句是小于的范圍查詢,且查詢條件值的記錄(id 為 5)存在于表中。

select * from user where id < 5 for update;

事務(wù) A 加鎖變化過程如下:

最開始要找的第一行是 id = 1,于是對(duì)該記錄加的是范圍為 (-∞, 1] 的 next-key 鎖;

由于是范圍查找,就會(huì)繼續(xù)往后找存在的記錄,掃描到的第二行是 id = 5,該記錄是第一條不滿足 id < 5 條件的記錄,于是**該記錄的鎖會(huì)退化為間隙鎖,鎖范圍是 (1,5)**。

由于找到了第一條不滿足 id < 5 條件的記錄,于是停止掃描。

可以得知,此時(shí)事務(wù) A 在主鍵索引上加了兩種 X 型鎖:

![](https://cdn.xiaolincoding.com/gh/xiaolincoder/mysql/行級(jí)鎖/唯一索引范圍查詢小于.drawio (1).png)

在 id = 1 這條記錄的主鍵索引上,加了范圍為 (-∞, 1] 的 next-key 鎖,意味著其他事務(wù)即無法更新或者刪除 id = 1 的這一條記錄,同時(shí)也無法插入 id 小于 1 的這一些新記錄。在 id = 5 這條記錄的主鍵索引上,加了范圍為 (1,5) 的間隙鎖,意味著其他事務(wù)無法插入 id 值為 2、3、4 的這一些新記錄。

我們也可以通過select * from performance_schema.data_locks\G;這條語句來看看事務(wù) A 加了什么鎖。

輸出結(jié)果如下,我這里只截取了行級(jí)鎖的內(nèi)容。

從上圖中的分析中,可以得到事務(wù) A 在主鍵索引上加了X 型的范圍為 (-∞, 1] 的 next-key 鎖,和 X 型的范圍為 (1, 5) 的間隙鎖。

因此,通過前面這三個(gè)實(shí)驗(yàn),可以得知。

在針對(duì)「小于或者小于等于」的唯一索引(主鍵索引)范圍查詢時(shí),存在這兩種情況會(huì)將索引的 next-key 鎖會(huì)退化成間隙鎖的:

當(dāng)條件值的記錄「不在」表中時(shí),那么不管是「小于」還是「小于等于」條件的范圍查詢,掃描到終止范圍查詢的記錄時(shí),該記錄的主鍵索引中的 next-key 鎖會(huì)退化成間隙鎖,其他掃描到的記錄,都是在這些記錄的主鍵索引上加 next-key 鎖。當(dāng)條件值的記錄「在」表中時(shí):

如果是「小于」條件的范圍查詢,掃描到終止范圍查詢的記錄時(shí),該記錄的主鍵索引中的 next-key 鎖會(huì)退化成間隙鎖,其他掃描到的記錄,都是在這些記錄的主鍵索引上,加 next-key 鎖。

如果是「小于等于」條件的范圍查詢,掃描到終止范圍查詢的記錄時(shí),該記錄的主鍵索引中的 next-key 鎖「不會(huì)」退化成間隙鎖,其他掃描到的記錄,都是在這些記錄的主鍵索引上加 next-key 鎖。

非唯一索引等值查詢

當(dāng)我們用非唯一索引進(jìn)行等值查詢的時(shí)候,因?yàn)榇嬖趦蓚€(gè)索引,一個(gè)是主鍵索引,一個(gè)是非唯一索引(二級(jí)索引),所以在加鎖時(shí),同時(shí)會(huì)對(duì)這兩個(gè)索引都加鎖,但是對(duì)主鍵索引加鎖的時(shí)候,只有滿足查詢條件的記錄才會(huì)對(duì)它們的主鍵索引加鎖。

針對(duì)非唯一索引等值查詢時(shí),查詢的記錄存不存在,加鎖的規(guī)則也會(huì)不同:

當(dāng)查詢的記錄「存在」時(shí),由于不是唯一索引,所以肯定存在索引值相同的記錄,于是非唯一索引等值查詢的過程是一個(gè)掃描的過程,直到掃描到第一個(gè)不符合條件的二級(jí)索引記錄就停止掃描,然后在掃描的過程中,對(duì)掃描到的二級(jí)索引記錄加的是 next-key 鎖,而對(duì)于第一個(gè)不符合條件的二級(jí)索引記錄,該二級(jí)索引的 next-key 鎖會(huì)退化成間隙鎖。同時(shí),在符合查詢條件的記錄的主鍵索引上加記錄鎖。

當(dāng)查詢的記錄「不存在」時(shí),掃描到第一條不符合條件的二級(jí)索引記錄,該二級(jí)索引的 next-key 鎖會(huì)退化成間隙鎖。因?yàn)椴淮嬖跐M足查詢條件的記錄,所以不會(huì)對(duì)主鍵索引加鎖。

接下里用兩個(gè)實(shí)驗(yàn)來說明。

1、記錄存在的情況

實(shí)驗(yàn)一:針對(duì)非唯一索引等值查詢時(shí),查詢的值存在的情況。

假設(shè)事務(wù) A 對(duì)非唯一索引(age)進(jìn)行了等值查詢,且表中存在 age = 22 的記錄。

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where age = 22 for update;+----+--------+-----+| id | name   | age |+----+--------+-----+| 10 | 山治   |  22 |+----+--------+-----+1 row in set (0.00 sec)

事務(wù) A 加鎖變化過程如下:

由于不是唯一索引,所以肯定存在值相同的記錄,于是非唯一索引等值查詢的過程是一個(gè)掃描的過程,最開始要找的第一行是 age = 22,于是對(duì)該二級(jí)索引記錄加上范圍為 (21, 22] 的 next-key 鎖。同時(shí),因?yàn)?age = 22 符合查詢條件,于是對(duì) age = 22 的記錄的主鍵索引加上記錄鎖,即對(duì) id = 10 這一行加記錄鎖。接著繼續(xù)掃描,掃描到的第二行是 age = 39,該記錄是第一個(gè)不符合條件的二級(jí)索引記錄,所以該二級(jí)索引的 next-key 鎖會(huì)退化成間隙鎖,范圍是 (22, 39)。停止查詢。

可以看到,事務(wù) A 對(duì)主鍵索引和二級(jí)索引都加了 X 型的鎖:

主鍵索引:

在 id = 10 這條記錄的主鍵索引上,加了記錄鎖,意味著其他事務(wù)無法更新或者刪除 id = 10 的這一行記錄。

二級(jí)索引(非唯一索引):

在 age = 22 這條記錄的二級(jí)索引上,加了范圍為 (21, 22] 的 next-key 鎖,意味著其他事務(wù)無法更新或者刪除 age = 22 的這一些新記錄,不過對(duì)于插入 age = 22 記錄的語句,在一些情況是可以成功插入的,而一些情況則無法成功插入,具體哪些情況,會(huì)在后面說。在 age = 39 這條記錄的二級(jí)索引上,加了范圍 (22, 39) 的間隙鎖。意味著其他事務(wù)無法插入 age 值為 23、24、..... 、38 的這一些新記錄。不過對(duì)于插入 age = 39 記錄的語句,在一些情況是可以成功插入的,而一些情況則無法成功插入,具體哪些情況,會(huì)在后面說。我們也可以通過select * from performance_schema.data_locks\G;這條語句來看看事務(wù) A 加了什么鎖。

輸出結(jié)果如下,我這里只截取了行級(jí)鎖的內(nèi)容。

從上圖的分析,可以看到,事務(wù) A 不僅對(duì)二級(jí)索引(INDEX_NAME: index_age )加了范圍為 (21, 22] 的 X 型 next-key 鎖和范圍為 (22, 39) 的 X 型間隙鎖,而且還對(duì)主鍵索引(INDEX_NAME: PRIMARY )加了X 型的記錄鎖,范圍是 id = 10 這一行記錄。

2、記錄不存在的情況

實(shí)驗(yàn)二:針對(duì)非唯一索引等值查詢時(shí),查詢的值不存在的情況。

假設(shè)事務(wù) A 對(duì)非唯一索引(age)進(jìn)行了等值查詢,且表中不存在 age = 25 的記錄。

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where age = 25 for update;Empty set (0.00 sec)

事務(wù) A 加鎖變化過程如下:

定位到第一條不符合查詢條件的二級(jí)索引記錄,即掃描到 age = 39,于是該二級(jí)索引的 next-key 鎖會(huì)退化成間隙鎖,范圍是 (22, 39)。停止查詢

事務(wù) A 在 age = 39 記錄的二級(jí)索引上,加了 X 型的間隙鎖,范圍是 (22, 39)。意味著其他事務(wù)無法插入 age 值為 23、24、25、26、....、38 這些新記錄。不過對(duì)于插入 age = 39 記錄的語句,在一些情況是可以成功插入的,而一些情況則無法成功插入,具體哪些情況,會(huì)在后面說。

我們也可以通過select * from performance_schema.data_locks\G;這條語句來看看事務(wù) A 加了什么鎖。

輸出結(jié)果如下,我這里只截取了行級(jí)鎖的內(nèi)容。

從上圖的分析,可以看到,事務(wù) A 在 age = 39 記錄的二級(jí)索引上(INDEX_NAME: index_age ),加了范圍為 (22, 39) 的 X 型間隙鎖。

此時(shí),如果有其他事務(wù)插入了 age 值為 23、24、25、26、....、38 這些新記錄,那么這些插入語句都會(huì)發(fā)生阻塞。不過對(duì)于插入 age = 39 記錄的語句,在一些情況是可以成功插入的,而一些情況則無法成功插入,具體哪些情況,接下來我們就說!

當(dāng)有一個(gè)事務(wù)持有間隙鎖 (22, 39) 時(shí),到底是什么情況下,可以讓其他事務(wù)的插入 age = 39 記錄的語句成功?又是什么情況下,插入 age = 39 記錄時(shí)的語句會(huì)被阻塞?

我們先要清楚,什么情況下插入語句會(huì)發(fā)生阻塞。

插入語句在插入一條記錄之前,需要先定位到該記錄在 B+樹 的位置,如果插入的位置的下一條記錄的索引上有間隙鎖,才會(huì)發(fā)生阻塞。

在分析二級(jí)索引的間隙鎖是否可以成功插入記錄時(shí),我們要先要知道二級(jí)索引樹是如何存放記錄的?

二級(jí)索引樹是按照二級(jí)索引值(age列)按順序存放的,在相同的二級(jí)索引值情況下, 再按主鍵 id 的順序存放。知道了這個(gè)前提,我們才能知道執(zhí)行插入語句的時(shí)候,插入的位置的下一條記錄是誰。

事務(wù) A 是在 age = 39 記錄的二級(jí)索引上,加了 X 型的間隙鎖,范圍是 (22, 39)。插入 age = 39 記錄的成功和失敗的情況分別如下:

當(dāng)其他事務(wù)插入一條 age = 39,id = 3 的記錄的時(shí)候,在二級(jí)索引樹上定位到插入的位置,而該位置的下一條是 id = 20、age = 39 的記錄,正好該記錄的二級(jí)索引上有間隙鎖,所以這條插入語句會(huì)被阻塞,無法插入成功。當(dāng)其他事務(wù)插入一條 age = 39,id = 21 的記錄的時(shí)候,在二級(jí)索引樹上定位到插入的位置,而該位置的下一條記錄不存在,也就沒有間隙鎖了,所以這條插入語句可以插入成功。

所以,插入 age = 39 記錄的語句是否可以插入成功,關(guān)鍵是要看插入 age = 39 記錄的時(shí)候,插入的位置的下一條記錄是否有間隙鎖,如果有間隙鎖,就會(huì)發(fā)生阻塞,如果沒有間隙鎖,則可以插入成功。

非唯一索引范圍查詢

非唯一索引和主鍵索引的范圍查詢的加鎖也有所不同,不同之處在于非唯一索引范圍查詢,索引的 next-key lock 不會(huì)有退化為間隙鎖和記錄鎖的情況,也就是非唯一索引進(jìn)行范圍查詢時(shí),對(duì)二級(jí)索引記錄加鎖都是加 next-key 鎖。

就帶大家簡(jiǎn)單分析一下,事務(wù) A 的這條范圍查詢語句:

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from user where age >= 22  for update;+----+-----------+-----+| id | name      | age |+----+-----------+-----+| 10 | 山治      |  22 || 20 | 香克斯    |  39 |+----+-----------+-----+2 rows in set (0.01 sec)

事務(wù) A 的加鎖變化:

最開始要找的第一行是 age = 22,雖然范圍查詢語句包含等值查詢,但是這里不是唯一索引范圍查詢,所以是不會(huì)發(fā)生退化鎖的現(xiàn)象,因此對(duì)該二級(jí)索引記錄加 next-key 鎖,范圍是 (21, 22]。同時(shí),對(duì) age = 10 這條記錄的主鍵索引加記錄鎖,即對(duì) id = 10 這一行記錄的主鍵索引加記錄鎖。由于是范圍查詢,接著繼續(xù)掃描已經(jīng)存在的二級(jí)索引記錄。掃面的第二行是 age = 39 的二級(jí)索引記錄,于是對(duì)該二級(jí)索引記錄加 next-key 鎖,范圍是 (22, 39],同時(shí),對(duì) age = 39 這條記錄的主鍵索引加記錄鎖,即對(duì) id = 20 這一行記錄的主鍵索引加記錄鎖。雖然我們看見表中最后一條二級(jí)索引記錄是 age = 39 的記錄,但是實(shí)際在 Innodb 存儲(chǔ)引擎中,會(huì)用一個(gè)特殊的記錄來標(biāo)識(shí)最后一條記錄,該特殊的記錄的名字叫 supremum pseudo-record ,所以掃描第二行的時(shí)候,也就掃描到了這個(gè)特殊記錄的時(shí)候,會(huì)對(duì)該二級(jí)索引記錄加的是范圍為 (39, +∞] 的 next-key 鎖。停止查詢

可以看到,事務(wù) A 對(duì)主鍵索引和二級(jí)索引都加了 X 型的鎖:

主鍵索引(id 列):

在 id = 10 這條記錄的主鍵索引上,加了記錄鎖,意味著其他事務(wù)無法更新或者刪除 id = 10 的這一行記錄。

在 id = 20 這條記錄的主鍵索引上,加了記錄鎖,意味著其他事務(wù)無法更新或者刪除 id = 20 的這一行記錄。

二級(jí)索引(age 列):

在 age = 22 這條記錄的二級(jí)索引上,加了范圍為 (21, 22] 的 next-key 鎖,意味著其他事務(wù)無法更新或者刪除 age = 22 的這一些新記錄,不過對(duì)于插入 age = 22 記錄的語句,在一些情況是可以成功插入的,而一些情況則無法成功插入,具體哪些情況,我們前面也講了。

在 age = 39 這條記錄的二級(jí)索引上,加了范圍為 (22, 39] 的 next-key 鎖,意味著其他事務(wù)無法更新或者刪除 age = 39 的這一些記錄,也無法插入 age 值為 23、24、25、...、38 的這一些新記錄。不過對(duì)于插入 age = 22 記錄的語句是,在一些情況是可以成功插入的,而一些情況則無法成功插入,具體哪些情況,我們前面也講了。

在特殊的記錄(supremum pseudo-record)的二級(jí)索引上,加了范圍為 (39, +∞] 的 next-key 鎖,意味著其他事務(wù)無法插入 age 值大于 39 的這些新記錄。

沒有加索引的查詢

前面的案例,我們的查詢語句都有使用索引查詢,也就是查詢記錄的時(shí)候,是通過索引掃描的方式查詢的,然后對(duì)掃描出來的記錄進(jìn)行加鎖。

如果鎖定讀查詢語句,沒有使用索引列作為查詢條件,或者查詢語句沒有走索引查詢,導(dǎo)致掃描是全表掃描。那么,每一條記錄的索引上都會(huì)加 next-key 鎖,這樣就相當(dāng)于鎖住的全表,這時(shí)如果其他事務(wù)對(duì)該表進(jìn)行增、刪、改操作的時(shí)候,都會(huì)被阻塞。

不只是鎖定讀查詢語句不加索引才會(huì)導(dǎo)致這種情況,update 和 delete 語句如果查詢條件不加索引,那么由于掃描的方式是全表掃描,于是就會(huì)對(duì)每一條記錄的索引上都會(huì)加 next-key 鎖,這樣就相當(dāng)于鎖住的全表。

因此,在線上在執(zhí)行 update、delete、select ... for update 等具有加鎖性質(zhì)的語句,一定要檢查語句是否走了索引,如果是全表掃描的話,會(huì)對(duì)每一個(gè)索引加 next-key 鎖,相當(dāng)于把整個(gè)表鎖住了,這是挺嚴(yán)重的問題。

總結(jié)

這次我以MySQL 8.0.26版本,在可重復(fù)讀隔離級(jí)別之下,做了幾個(gè)實(shí)驗(yàn),讓大家了解了唯一索引和非唯一索引的行級(jí)鎖的加鎖規(guī)則。

我這里總結(jié)下, MySQL 行級(jí)鎖的加鎖規(guī)則。

唯一索引等值查詢:

當(dāng)查詢的記錄是「存在」的,在索引樹上定位到這一條記錄后,將該記錄的索引中的 next-key lock 會(huì)退化成「記錄鎖」。當(dāng)查詢的記錄是「不存在」的,則會(huì)在索引樹找到第一條大于該查詢記錄的記錄,然后將該記錄的索引中的 next-key lock 會(huì)退化成「間隙鎖」。

非唯一索引等值查詢:

當(dāng)查詢的記錄「存在」時(shí),由于不是唯一索引,所以肯定存在索引值相同的記錄,于是非唯一索引等值查詢的過程是一個(gè)掃描的過程,直到掃描到第一個(gè)不符合條件的二級(jí)索引記錄就停止掃描,然后在掃描的過程中,對(duì)掃描到的二級(jí)索引記錄加的是 next-key 鎖,而對(duì)于第一個(gè)不符合條件的二級(jí)索引記錄,該二級(jí)索引的 next-key 鎖會(huì)退化成間隙鎖。同時(shí),在符合查詢條件的記錄的主鍵索引上加記錄鎖。當(dāng)查詢的記錄「不存在」時(shí),掃描到第一條不符合條件的二級(jí)索引記錄,該二級(jí)索引的 next-key 鎖會(huì)退化成間隙鎖。因?yàn)椴淮嬖跐M足查詢條件的記錄,所以不會(huì)對(duì)主鍵索引加鎖。

非唯一索引和主鍵索引的范圍查詢的加鎖規(guī)則不同之處在于:

唯一索引在滿足一些條件的時(shí)候,索引的 next-key lock 退化為間隙鎖或者記錄鎖。非唯一索引范圍查詢,索引的 next-key lock 不會(huì)退化為間隙鎖和記錄鎖。

還有一件很重要的事情,在線上在執(zhí)行 update、delete、select ... for update 等具有加鎖性質(zhì)的語句,一定要檢查語句是否走了索引,如果是全表掃描的話,會(huì)對(duì)每一個(gè)索引加 next-key 鎖,相當(dāng)于把整個(gè)表鎖住了,這是挺嚴(yán)重的問題。

就說到這啦, 我們下次見啦!

關(guān)鍵詞: 查詢條件 查詢語句 小于等于 也可以通過

相關(guān)新聞

Copyright 2015-2020   三好網(wǎng)  版權(quán)所有 聯(lián)系郵箱:435 22 640@qq.com  備案號(hào): 京ICP備2022022245號(hào)-21
久久sm人妻中出精品一区二区| 精品国产久久久久午夜精品av| 老色鬼精品视频在线观看播放| 亚洲精品久久久人妻| 黄色av日韩在线观看| 亚洲欧洲一区二区三区在线| 成年人黄色日本视频| 亚洲AV无码一二三四区在线播放| 欧美一区二区三区爽爽| 97精品国产91久久久| 人人妻人人爽人人爽欧美一区| 夜夜骚av一二三区| 日韩欧美中文字幕老司机三分钟| 国产最新av在线免费观看| iga肾三级算严重吗| 国长拍拍视频免费孕妇| 2020国产激情视频在线观看| 亚洲欧洲无码一区2区无码| 在线视频国产精品欧美| 一看就是假奶的av| 99久久久久久亚洲精品免费| 亚洲成人自拍图片网站| 2019年中文字幕在线播放视频| 亚洲av 综合av| 在线免费观看a视频免费| 亚洲三级综合在线观看| 最新激情中文字幕视频| 亚洲免费午夜污福利| 国产免费久久精品99re丫丫| 午夜福利国产精品久久久久| 久久人人爽人人爽人人av东京热| 欧美日本国产一区二区| 西野翔人妻中文字幕中字在| 上床啪啪啪免费视频| 汤姆提醒30秒中转进站口| 激情久久在线免费观看视频| 人妻激情综合久久久久蜜桃| 在线看日韩av不卡| 91超碰国产在线观看| 中文人妻av一区二区三区| 91精品夜夜夜一区二区| 久久久久久久久久久久久国产| 国产原创一区二区三区在线播放| 亚洲国产精品久久久久久无码| 亚洲制服丝袜网站中文字幕| 亚洲国产日韩a在线欧美| 午夜夫妻性生活视频| 成人av在线视频免费| 91精品夜夜夜一区二区蜜桃| 久久久西西gogo日本美女人体| 成年人免费福利在线| 一区二区欧美 国产日韩| 操烂你的骚逼天天欧美| 天天透天天舔天天操| 正在播放麻豆精品一区二区| 五月天天堂视频在线| 川上优所有中文字幕在线| 亚洲人妻系列在线视频| yy4080黄色片| 网站在线观看蜜臀91| 国产av啊啊啊啊啊啊啊| 亚洲欧美另类丝袜另类自拍| v天堂国产精品久久| 一区二区三区四区影片| 精产国品一二三产品区别91| 亚洲中文字幕无线乱码人妻精品| 加勒比东京热绿帽人妻多人操| 中字幕人妻熟女人妻a62v网| 最新久久这里只有精品| 亚洲一区二区在线激情| 狠狠操深爱婷婷综合一区| 亚洲|久久久久久一二三区丝袜| 大尺度av毛片在线网址| 国长拍拍视频免费孕妇| 久久中文字幕av一区二区| 两个人在一起靠逼啊啊啊| 国产男女无套?免费网站下载| 顶级欧美色妇xxxx| 荣立三等功退休有什么待遇| 中文字字幕在线精品乱码| 亚洲欧美日韩电影一区| 五月婷婷伊人久久中文字幕| 好看的日本中文字幕在线观看二区 | 国产av在线免费视频| 日韩女同与成人用品电影免费看| 亚洲国产精品自拍偷拍视频在线 | 99久久人人爽亚洲精品美女| 中日韩又粗又硬又大精品| 男人av一区二区三区| 黄色av日韩在线观看| 欧美日韩黄片免费在线观看| 亚洲成年人精品国产| 在线人成视频免费观看尤物| 国产成人91色精品免费看片| 国产精品性感美女视频| 最新国产精品久久精品app| 99久久碰碰人妻国产| 东京热日韩av影片| 鸡巴在里面福利视频在线观看| jandara在线观看| 亚洲一区二区三区无码在线| 日韩成人免费观看电影| 丰满放荡熟妇在线播放| 熟妇人妻av无码中文字幕| 青青操天堂在线观看视频| 日本有码精品一区二区三区| 女人的天堂av在线网| 中文字幕熟女乱一区二区| 中文人妻av一区二区三区| 在线观看中文字幕少妇av| 超peng视频在线免费播放97| 老熟妇一区二区三区v∧88| 亚洲va999天堂va| 伊人精品久久一区二区| 91精品国产欧美在线| 九热精品视频在线观看| 人妻色综合aaaaaa网| 18禁男女啪啪啪无遮挡| 在线观看网站伊人网| 激情九月天在线视频| 三级欧美日韩一区二区三区| 成年男女免费视频网站无毒| 每日更新日韩欧美在线| 99福利一区二区视频| 松本菜奈实最新av在线| 可在线免费观看av| 欧美视频免费观看777| 涩涩黄片在线免费观看| av毛片在线观看网址| 亚洲黄色成人一级片| 黄色片黄色片黄色片黄色片黄色| 国产,亚洲,欧美综合| 99精品久久99久久久久一| 熟女阿高潮合集一区二区| 青青青国产精品视频| yellow在线亚洲精品一区| 性高潮视频在线观看日韩| 久久精品国产亚洲av清纯| 久久久西西gogo日本美女人体| 久久国产半精品99精品国产| 黄在线看片免费人成视频| 欧美大鸡吧男操女啊啊啊视频| 日本美女爱爱视频网站| 天堂一区二区三区在线等| 两个人在一起靠逼啊啊啊| 天天弄天天草天天日天天| 国产午夜在线播放视频| 999久久久人妻精品一区| 91人妻人人爽色啊啊啊| 精品高潮呻吟久久av| 亚洲欧洲无码一区2区无码| 午夜精品老牛av一区二区三区| 青青青青青爽视频在线| 欧美成人久久久桃色aa| 久久午夜免费鲁丝片| 青青草一个释放的网站| 色网站在线观看免费| 日韩欧美一区二区三区免费看| 人人人妻人人人妻精品少妇| 东京热日韩av在线| 顶级欧美色妇4khd| 亚洲自拍偷拍一区二区中文字幕| 韩日一级人添人人澡人人妻精品| 一二区二区不卡视频| 狠狠干狠狠操免费视频| 亚洲男人天堂最新网址大全| 美女把逼扒开让男人桶| 天天干夜夜操91视频网站| 男人的天堂aⅴ在线| 伦理在线观看未删减中文字幕| 免费看一级高潮喷水片| 国产精品内射婷婷一级| 丰满放荡熟妇在线播放| 国产成人在线观看hd| 2021国产剧情麻豆| 99精品久久精品一区二区| 亚洲制服丝袜资源网| 亚洲综合首页综合在线观看 | 鸡巴插进美女的嫩小穴视频| 福利视频免费在线播放| 成人av中文字幕在线看| 男人电影天堂在线观看| 老鸭窝在线毛片观看免费播放| 日韩久久不卡免费视频 | 美国伦理片午夜理论片| 久久99久久99久久97的人| 国产av剧变态维修工虐杀美女| 亚洲春色av中文字幕| 99久久精品视频16| 午夜在线成人免费电影 | 香港日本台湾经典三级| 99久9在线视频播放| 18在线观看免费观看| 亚洲 偷拍 自拍 欧美| 国产青青青青草免费在线视频| 成人做爰av在线观看网站| 男人电影天堂在线观看| 91精品资源在线观看| 中文字幕av人妻一区二区三区| 精产国品一二三产品区别97| 午夜精品久久秘?18免费观看| 亚洲一区二区精品在线播放| 日本a级2020在线观看| 国产成人深夜福利短视频99| 亚洲精品乱码久久久久app | 五月天男人的天堂中文字幕| 国际日韩日韩日韩日韩日韩| 日本一区二区三区的资源| 4日日夜夜精品视频免费| 中文字幕在线观看av观看| 国产91九色视频在线观看| 久久热在线免费观看| 熟女人妻少妇一区二区| 亚洲av在线免费播放| 在线观看黄页网站视频网站| 东北老女人熟女啪啪视频| 一区二区三区四区久久久久韩日| 亚洲午夜国产末满十八岁勿进网站| 成人精品影视一区二区| 国产在线观看av一区| 国产午夜在线播放视频| xxnxx国产美女| 青青免费观看视频| 欧美男男在线观看视频网站| 免费的啪啪视频软件| 99久久国产精品免费热| 美女露阴道让男人捅| 国产精品蝌蚪自拍视频| 69久久夜色精品国产69乱电影| 国产伦理二区三区在干嘛呢| 久久久久久免费观看av| 男人资源站中文字幕| 久久久久夜色国产精品电影| 第一福利视频在线观看| 天天插天天透天天爽| 熟女阿高潮合集一区二区| 亚洲欧美另类校园春色| 夜夜爽夜夜操夜夜爱| 五月的婷婷综合视频| 夫亡人妻被强干中文字幕| 亚洲熟妇在线视频观看| 免费看超污视频在线观看| 琪琪日本福利伦理视频| 亚洲精品国品乱码久久久久| 亚洲成人三级黄色片| 天天摸天天舔天天操天天日| 日本一道中文字幕99| 91精品夜夜夜一区二区| 国产乱码有码一区二区三区| 91性高湖久久久久久久久久| 七色福利视频在线观看| 日韩国产欧美一区二区三区粉嫩 | 亚洲永远av在线播放| 国产精品蝌蚪自拍视频| 一区二区三区四区视频精品免费| 18在线观看免费观看| 夜色福利视频免费观看| 日韩女同与成人用品电影免费看| 欧美性感美女热舞视频| 国产一区两区三区福利小视频| 日本清纯中文字幕版| 99亚偷拍自图区亚洲| 国产主播诱惑毛片av| 亚洲人妻系列在线视频| 青青免费观看视频| 亚洲国产精品 久久久| 中文字幕在线观看亚洲情色| 日本有码精品一区二区三区| 国产激情免费在线视频| 亚洲av日韩久久网站| 色老头一区二区三区四区五区| 久草视频在线看免费| 亚洲成人欧洲成人在线| 亚洲综合另类欧美久久| 精久久久久久久久久久久| 国产精品性感美女视频| 亚洲欧美韩国日本一区二区| 97精品国产91久久久| 婷婷六月天在线视频| jandara在线观看| 成人资源中文在线观看| 91大神在线免费观看视频| 瑟瑟干视频在线观看| 97精品视频,全部免费| 在线观看中文字幕精品av| 天天操天天干天天舔天天| 最新中文字幕久久久久| 91精品91久久久久| 凹凸视频一区二区在线观看| 天天操天天干加勒比久久| 日韩激情文学在线视频| 欧美黑人性猛交小矮人| 日本福利视频网站导航| 亚洲一区二区在线视频观看免费| 99 re国产精品| 二十四小时日本高清在线观看| 92麻豆一区二区三区| 97香蕉久久国产超碰| 在线观看免费啪啪啪| 天天摸天天干夜夜操| 国产人妻熟女ⅹxx丝袜| 黑人巨大精品一区二区在线| 亚洲国产精品 久久久| 午夜精品秘一区二区三区| 9999久久久久老熟妇二区| 人妻少妇的va视频| 91中文字幕视频网站| 亚av一二三在线观看| 91精品夜夜夜一区二区| 狠狠干狠狠操免费视频| 午夜精品小视频在线播放| 久久99精品热在线观看| 国产成人在线观看hd| 国产精品 亚洲欧美 自拍偷拍| 丰满放荡熟妇在线播放| 东京热日韩av在线| 天堂网免费在线电影| 亚洲日本欧美韩国另类综合| 伊人久久综合国产精品| 黄色av网址在线播放| 国产高清视频www夜色资源| 西野翔人妻中文字幕中字在| 欧美一区二区三区视频看| 91激情四射婷婷综合| 五月天色婷婷狠狠爱| 老司机免费视频福利0| 夜夜躁av麻豆男| 欧美黑人1区2区3区| 公侵犯人妻中文字幕巨| 久久国产精品久精国产爱 | 北野中文字幕一区二区| 一区二区三区国产在线成人av| 大乳丰满人妻中文字幕韩国hd| 午夜情色一区二区三区| 情趣视频在线观看91| 欧美激情视频第一页| av里面的动作是真进去吗| 青青青免费手机视频在线观看| 最新日韩中文字幕啪啪啪| 一区二区三区国产精华液区别大吗 | 98热视频精品在线观看| 99精品久久精品一区二区| 精久久久久久久久久久久 | aaaa级少妇高潮在线观看| 在线免费观看欧美小视频| 奇米网首页神马久久| 人人妻人人爽人人爽欧美一区| 午夜精品小视频在线播放| 97精品视频,全部免费| 男人av一区二区三区| 亚洲精品中文字幕手机在线免费看| 外国美女舔男人坤坤| 熟女阿高潮合集一区二区| 91国产精品乱码久久久久久| 最新免费在线观看污视频| 亚洲国产精品自拍偷拍视频在线 | 97成人老师在线视频| 成人av在线视频免费| 鸡巴插进美女的嫩小穴视频| 日韩一级欧美一级片| 自拍丝袜国产欧美日韩| 国产农村乱子伦精精品视频| 网友自拍第一页99热| 911美女片黄在线观看| alisontyler和黑人| 午夜精品一区二区三区不卡顿 | 日本少妇人妻中文在线| 成人18禁高潮片免费日本| 久久综合狠狠综合久久综| 亚洲成人偷拍自拍在线| 天天躁狠狠躁狠狠躁性色| 久久内射天天玩天天懂色| 欧美日本国产一区二区| 精品一区二区三区免费毛片W| 欧美男女一区二区三区| 中文在线字幕免费观看日韩视频| 国语对白性爱三级片免费看| 欧美丝袜亚洲国产日韩| 亚洲欧美国产人成在线| 成人十欧美亚洲综合在线| 国产做A爱免费视频在线观看| 天天干夜夜爽狠狠操| 天天在线播放日韩av| 色丁香久久激情综合网| av天堂hezyo| 偷拍欧美日韩另类图片| 亚洲熟女乱一区二区精品成人| 不卡一二三区别视频| 后入日韩翘臀蜜桃臀美女| 快使劲弄我视频在线播放 | 熟妇人妻丰满久久久久久久| 天天透天天舔天天操| 国产igao激情在线视频入口| 国产激情免费在线视频| 天天日天天干天天日天天干天天| 亚洲精品1卡2卡3卡| 18福利视频在线观看| 美国十次了亚洲天堂网国产| 公侵犯人妻中文字幕巨| 国产成人综合久久婷婷| 国产精品 亚洲欧美 自拍偷拍| 91福利高清在线播放| 68视频在线免费观看| 亚洲一区视频中文字幕在线播放| 有码一区二区三区四区五区| 日韩人妻中文字幕区| 久久99热精品免费观看视| 欧美在线观看一区二区不卡| 在线观看中文字幕精品av| 国产天堂av不卡网| 无码精品黑人一区二区老人| 免费观看在线中文字幕视频| 18禁男女啪啪啪无遮挡| 91精品久久久久久久久99蜜臀| 精品人妻在线激情视频| 55夜色66夜色亚洲精品| 婷婷色综合五月天视频| 啊不行啊操逼好爽大鸡吧视频| 全球高清中文字幕av| 91亚洲国产成人久久精品| 亚洲乱码av一区二区蜜桃av| 亚洲av手机免费在线| 亚洲成人五月婷婷久久综合| 天天干夜夜操夜夜骑| 久久精品四虎夜夜拍拍拍| 国产夫妻视频在线观看免费| 91美女在线观看视频| 在线观看2022av| 中文字幕 一区二区在线观看| 中文字幕综合网91| 夜夜操夜夜爱夜夜摸| 国产精品网站的黄色| 亚洲字幕一区二区夜色av| 国产三级自拍视频在线观看网站| 国产漂亮白嫩美女在线图片 | 久久免费视频ww一区| 日韩欧美中文字幕老司机三分钟| 丝袜美腿日韩av一区| 不用付费特黄特色亚洲特级黄色片| 女同大尺度视频网站在线观看| 偷拍熟女大胆免费视频| 日韩国产欧美一区二区三区粉嫩| 美国伦理片午夜理论片| 999国产精品视频免费看| 丰满人妻熟女aⅴ一区| 女同性恋av在线播放| 五月天男人的天堂中文字幕| 国产又粗又长又大视频| 亚洲一级熟妇丰满的女人| 亚洲综合一区二区三区四区| xxoo福利视频导航| 日韩人妻中文字幕区| aa福利影视在线观看| 青青青免费手机视频在线观看| 日本欧美视频在线免费| 18禁男女啪啪啪无遮挡| 国产成人91色精品免费看片| 操死你美女在线视频| 91人妻人人爽色啊啊啊| av资源中文字幕在线观看| 松本菜奈实最新av在线 | 少妇被粗大的猛进69视频| 国产激情免费在线视频| www,日韩av,com| 熟女一区二区三区综合| 亚洲欧美激情国产综合久久久| 中文字幕精品人妻久久久久| 欧美黑人性猛交小矮人| 亚洲午夜国产末满十八岁勿进网站| 国产精品内射婷婷一级| 熟妇精品午夜久久久久| 亚洲gay视频在线观看| 欧美猛少妇色ⅹⅹⅹⅹⅹ猛叫| 东京热日本一区二区三区| 91精品久久久久久久99蜜月| 午夜精品一区二区三区不卡顿| 91精产国品一二三产区区别网站 | 久草视频在线视频在线视频| 人妻系列中文字幕大乳丰满人妻 | 亚洲av激情综合网| av大尺度一区二区三区| 黄色片黄色片黄色片黄色片黄色| 一区二区九日韩美女| 黄色av 在线观看| 亚洲av三级电影在线观看| 青青国产95免看视频| 亚洲欧美小说中文字幕| 亚洲欧美另类校园春色| 操死你美女在线视频| 快色视频在线观看免费| 91精品国产91久久久久久密臀| 亚洲av 综合av| 精品国产久久久久午夜精品av| 2020精品视频在线| 天天插天天干天天狠| 国产精品福利久久久久| 5d蜜桃臀女无痕裸感| 国产不卡免费在线观看| 精品人妻 色中文熟女 oo| 爱搞视频在线观看视频91| 操操操操操操操操操网| 婷婷一区二区三区五月丁| 一区二区三区五区六区| 午夜精品秘一区二区三区| 欧美日韩成人高清中文网| 欧美黑人1区2区3区| 不卡高清一区二区三区| 精品精品精品精品精品污污污污| 亚洲成人五月婷婷久久综合| 制服丝袜 中文字幕 日韩| 2021国产剧情麻豆| 国产视频成人一区二区| 在线成人教育平台排名| 后入日韩翘臀蜜桃臀美女| 国产一级一国产一级毛片 | 懂色av之国产精品| 日本小视频一区二区| 亚洲一区二区在线激情| 凹凸视频一区二区在线观看| 黄色网络中文字幕日本| 午夜在线成人免费电影 | 亚洲国产精品老女人久久 | 国产精品 亚洲欧美 自拍偷拍| 亚洲中文字幕无线乱码人妻精品| 亚洲欧洲一区二区三区在线| av大尺度一区二区三区| 精产国品一二三产品区别91| 中文字幕熟女人妻一区| 特级aaaaa黄色片| 亚洲国产日韩a在线欧美| 亚洲精品乱码久久久久app | 精品国产污污污免费入口| 黑人大巨屌操美女逼| 国产中文亚洲熟女日韩| 男女真人做带声音视频图片| 日本东京热最新中文字幕| 久久久人妻免费视频| 国产资源在线观看二区| 国长拍拍视频免费孕妇| 亚洲a级视频在线播放| 国产做A爱免费视频在线观看| 自拍偷拍视频亚洲一区| 国产精品中文字幕丝袜| 日产国产欧美精品另类 | 欧美精品激情在线不卡| 成人大片男人的天堂| 欧美黄色性视频网站| 天天干夜夜爽狠狠操| 色丁香久久激情综合网| 美女妩媚午夜诱惑网站| 日韩人妻一区二区三区在线观看| av人摸人人人澡人人超碰小说| 小妹妹爱大棒棒免费观看视频| 亚洲欧洲无码一区2区无码| 99久久国产精品免费热| 亚洲国产精品自拍偷拍视频在线| 新亚洲天堂男子av| 91精品久久久久久久99蜜月| 美女网站视频久久精品| 91超碰国产在线观看| 四虎国产精品国产精品国产精品| 丰满少妇_区二区三区| 亚洲综合第一区二区| 亚洲免费在线不卡视频| 久久久亚洲熟女一区二区| 手机视频在线观看一区| 新香蕉视频香蕉视频2| 十八禁黄色免费污污污亚洲| 五月天色婷婷狠狠爱| 午夜福利午夜福利影院| 国产亚洲综合5388| 北野中文字幕一区二区| 国产白丝一区二区三区av| 亚洲人成大片在线观看| 日本高清 中文字幕| 美女激情久久久久久久| 丰满人妻被猛烈进入中文字幕| 新香蕉视频香蕉视频2| 欧美在线观看一区二区不卡 | 午夜久久久久欠久久久久| 亚洲成a人片777777张柏芝| 国产做A爱免费视频在线观看| 国产亚洲综合5388| 国产福利一区二区三区在线观看| jandara在线观看| 国内精品一区二区2021在线 | 高潮喷水一区二区三区| 加勒比东京热绿帽人妻多人操| 国产精品久久久久精品三级18| 快进来插我的逼嗯啊视频| av中文字幕国产精品| 免费看超污视频在线观看| 美女露阴道让男人捅| 中文字幕日本一二三区| 日本人妻熟妇丰满成熟HD系列| 欧美aaaa性bbbbaaaa| 大尺度久久久久久久| 国产大桥未久一区二区| 熟女阿高潮合集一区二区| 夏目彩春av在线看| 国产女人18毛片水真多精选| 黑人爆操女人免费视频| 婷婷一区二区三区五月丁| 久久久久国产精品二区| 久久亚洲国产成人精品麻豆 | 欧美老熟妇xxoo老妇| 九九九九九久久久国产| ysl蜜桃色7425| 午夜五十路久久福利| 亚洲 自拍 激情 另类| 亚洲一区二区三区四区入口| 68福利精品在线视频| 成人黄色录像在线观看| 一区二区在线观看视频观看| 亚洲av三级电影在线观看| 女人的天堂 av在线| 日韩激情文学在线视频| 四虎精品久久免费最新| 久久久视频在线播放| 91精产国品一二三产区区别网站| 91美女在线观看视频| 97人妻人人揉人人躁人人夜夜爽| 国产视频成人一区二区| 亚洲无人区乱码中文字幕一区| 伊人精品成人综合网| 亚洲欧美不卡专业视频| 91精品夜夜夜一区二区| 3344永久在线观看视频下载| v天堂国产精品久久| 国产女人18毛片水真多精选| 高潮喷水在线视频观看| 欧美一区二区三区爽爽| 午夜在线成人免费电影| 92在线播放观看视频| 国产伦理二区三区在干嘛呢| 1级黄色片在线观看| 日本熟妇乱妇熟色视频| 伊人综合在线视频免费观看| 欧美一区二区播放视频| 日韩激情文学在线视频| 日本午夜福利免费在线播放| 欧美日韩成人高清中文网| 中文字幕福利视频第四页| 91污污在线观看视频| 亚洲熟妇丰满多毛xxxx网站| 国产成人深夜福利短视频99| 中文字幕人妻一区色偷偷久久| 夜夜人人干人人爱人人操| 人人妻人人爽人人摸| 人妻视频网站快射视频网站| 亚洲第一中文字幕成人| 中文字字幕在线精品乱码| 国产,亚洲,欧美综合| 亚洲熟女少妇中文字幕系列| 日韩美精品成人一区二区三区四区 | 亚洲高清免费在线观看视频| 日韩人妻中文字幕区| 亚洲av日韩久久网站| 4438全国成人免费视频| 久久久久久高清一区| 日韩人妻精品久久久久| 狂操鸡巴小骚逼视频免费观看| 欧美日韩在线观看免费播放| www国产亚洲精品久久久| 亚洲午夜国产末满十八岁勿进网站 | 国产成人情侣激情视频| 熟妇高潮久久久久久久| 99国产精品久久99久久久| 日本高清激情乱一区二区三区 | 99国产精品久久99久久久| 蜜桃tv一区二区三区| 天堂网成人av电影| 全球高清中文字幕av| 欧美亚洲精品色图网站| 四虎国产精品国产精品国产精品| 在线免费观看a视频免费| 国产精品午夜无码AV体验区| 全彩漫画口工18禁| 一区二区三区四区视频精品免费| 乱子伦国产一区二区三区| 天天躁狠狠躁狠狠躁性色| 国产激情免费在线视频| 欧美日韩亚洲tv不卡久久| 中文字幕熟女人妻一区| 国产亚洲精品啪啪视频| 亚洲天堂男人的天堂| 91福利高清在线播放| 亚洲欧美韩国日本一区二区| 国产资源网站在线播放| 夜夜躁av麻豆男| 亚洲av网站一区二区三区| 午夜8050免费小说| 人妻系列中文字幕大乳丰满人妻| 九九热视频1这里只有精品| 国际日韩日韩日韩日韩日韩| av资源中文字幕在线观看| 久久久久高潮白浆久久| 人妻女侠被擒受辱记| 99亚偷拍自图区亚洲| 69国产精品成人aaaaa片| 日韩国产欧美一区二区三区粉嫩 | 久久99热精品免费观看视| 久久免费视频ww一区| 精品久久久久久久久久久久久| 天天透天天舔天天操| 国际精品熟女一区二区| 欧洲精品在线免费观看| 日本福利视频网站导航| 亚洲在线免费观看18| 亚洲欧美一级特黄大片| 91性高湖久久久久久久久久| av天堂hezyo| 97人妻人人揉人人躁人人夜夜爽 | 男人的天堂aⅴ在线| 松本菜奈实最新av在线| 综合久久伊人久久88| 午夜精品秘一区二区三区| 亚洲制服丝袜在线看| 亚洲成人五月婷婷久久综合| 日韩男女视频网站在线观看| 中文字幕av人妻一区二区三区| 午夜精品秘一区二区三区| 亚洲一级熟妇丰满的女人| 亚欧洲乱码视频一二三区| 美女把逼扒开让男人桶| 男女啪啪啪网站在线观看免费| 亚洲欧美另类校园春色| 91九色国产在线视频| tobu8日本高清| 岛国av成人午夜高清| 亚洲国产美女主播在线观看| 精品国产无乱码一区二区三区 | 68视频在线免费观看| 538欧美在线观看一区二区三区| 久久99精品热在线观看| 91精品麻豆91夜夜骚| 女生抠逼自慰啊啊啊啊啊啊啊下载| 黄色片免费网站在线| 91亚洲国产成人久久精品| 插鸡视频免费网站在线播放| 老司机免费视频福利0| 女人高潮潮呻吟喷水网站| 午夜福利片无码10000| 一区二区三区四区影片| 福利美女视频在线观看| 亚洲第一中文字幕成人| 国产成人情侣激情视频| 久久精品久久久久观看99水蜜桃| 内地精品毛片在线观看| 日韩av熟妇在线观看| 亚洲a区在线免费观看| 天天做天天日天天搞| 女人扒开逼让男人操| 亭亭五月天在线观看| 白白色在线免费视频发布视频 | 青青草成人免费自拍视频| 9久re热视频在线精品| 日本欧美高清在线观看视频| 亚洲成a人77777| 国产精品黄色片大全| 亚洲熟妇在线视频观看| 新亚洲天堂男子av| 猫咪亚洲中文在线中文字幕| 久久99热精品免费观看视| 黑人侵犯人妻森泽佳奈| 国产青青青青草免费在线视频| 911美女片黄在线观看| 中文字幕亚洲无线乱码| 亚洲理论在线a中文字幕97| 精品精品精品精品精品污污污污 | —区二区三区女厕偷拍| 一区二区三区四区视频精品免费 | 亚洲国产精品自拍偷拍视频在线| 东京热男人的天堂视频| 亚洲精品国产99999| 日韩人妻精品久久久久| 91麻豆精品国产在线| 亚洲av毛片在在线播放| 免费啪啪啪网站在线观看| 91精品一区一区三区| 黑人大吊大战亚洲女人。| 亚洲av毛片一区二区三区网| 玖玖资源站在线观看亚洲| 国产极品气质外围av| 亚洲国产日韩a在线欧美| 亚洲av毛片在在线播放| 黑鸡巴肏少妇逼视频| 亚洲av日韩久久网站| 国产女主播在线观看一区| 美利坚合众国av天堂| 日本香港韩国三级黄色| 精产国品一二三产品区别91| 日本男女免费福利视频| 亚洲天堂av最新在线| 国产白丝一区二区三区av| 国产免费久久精品99re丫丫| 69精品互换人妻4p| 四虎国产精品国产精品国产精品 | 天天色 天天操 天天好逼| 国产男人的天堂一区| 日韩A级毛片免费视频| 欧美成人少妇人妻精品| 日日躁夜夜躁狠狠操| 亚洲宅男噜噜噜66在线观看| 一级毛片特级毛片免费的| 国产视频1区2区3区| 2020国产成人精品视频| 亚洲精品乱码久久久久app| 国产成人深夜福利短视频99| 黄色av网址在线播放| 日韩免费黄色片在线观看| 中文字幕 首页 人妻| 大成色亚洲一二三区| 天天爱天天日天天爽| 国产三级自拍视频在线观看网站| 国产欧美福利在线观看| 青娱乐免费最新视频| 久久久亚洲综合国产精品| 川上优所有中文字幕在线| 天天色天天射天天日天天干| 色欲AV蜜桃一区二区三| 亚洲精品综合欧美精品综合| 97精品人妻免费视频| 不卡一区二区视频在线| 中文字幕欧美人妻在线.| 99热这里只有精品免费播放| 欧美精品乱码99久久蜜桃免费| 欧美日韩亚洲国产视频二区| 亚洲一区二区在线视频观看免费| 少妇被粗大的猛进69视频| 九九九九九久久久国产| 内地精品毛片在线观看| 99精品久久一区二区| 99精品久久99久久久久一| 97人妻av人人澡人人爽| yy4080黄色片| 国产成人情侣激情视频| 成人18禁高潮片免费日本| 河北全程露脸对白自拍| 九九视频在线观看全部| 91精品综合久久久久久五月天| 久久精品国产亚洲av热软件| av天堂新资源在线| 中文字幕中文字幕在线中…一区 | 大成色亚洲一二三区| 77亚洲视频在线观看| 顶级欧美色妇4khd| 久久久久久免费观看av| 一区二区在线观看视频网站| 青青青在线视频免费播放| 日韩av熟妇在线观看| 都市激情校园春色 亚洲| 国产激情在线观看一区二区三区| 在线观看中文字幕少妇av| 91国产精品乱码久久久久久| 男人的天堂在线2025| 日本东京热视频欧美视频| 高潮喷水一区二区三区| 中出小骚货在线观看| 亚洲综合在线视频在线播放| 欧美成人性生活视频播放| 成人午夜av电影网| 青青草一个释放的网站| 蜜桃tv一区二区三区| 亚洲午夜高清在线观看| 蜜臀久久精品久久久久久av| 国产青青青青草免费在线视频| 9420高清视频在线观看国语版| 欧美黑人性猛交小矮人| 天天操天天日天天碰| 伊人网在线观看 视频一区| 男人的天堂在线2025| 91美女在线观看视频| 天天操天天日天天插天天舔| 亚洲第一中文字幕成人| 大香蕉伊人97在线| 看女人大BB群伦交| 琪琪日本福利伦理视频| 亚洲成人av在线一区二区| 久久久久久免费观看av| 久久久久久免费观看av| 中日韩又粗又硬又大精品| 一区二区三区不卡免费视频网站 | 快色视频在线观看免费| 鸡巴插进美女的嫩小穴视频| 偷拍熟女大胆免费视频| 亚洲无人区乱码中文字幕一区| 视频免费在线观看网站| ysl蜜桃色7425| 天天摸天天干夜夜操| 亚洲国产日韩精品在线| 天天插天天透天天爽| 日本人妻少妇xxxxxxx| 黑吊操欧美极品美女| 日本电影一级人妻在线播放四区 | 亚洲午夜精品视频节目| 看女人大BB群伦交| 亚洲欧美一级特黄大片| 91超精品碰国产在线观看| 伊人精品成人综合网| 日本福利片在线播放| 亚洲最大的自拍偷拍网| 精品日本少妇久久久| 在线中文字幕人妻av| 亚洲av激情综合网| 久久久人妻免费视频| 亚洲精品色图1234| 亚洲同性同志一二三专区| 女同性恋av在线播放| 久久久久久久久久久久久国产| av在线中文字幕在线| 亚洲第一页欧美第一页| 美女黄色啊啊啊啊视频| 亚洲自拍偷拍一区二区中文字幕 | 自拍偷拍色图亚洲天堂| 日韩A级毛片免费视频| 中文字幕观看中文字幕免费| 九十九步都是爱最后一步是尊严| 亚洲av网站一区二区三区| 99久久人人爽亚洲精品美女| 欧美色视频网址大全| 免费24小时人妻视频| 国语精品视频自产自拍| 国产精美视频精品视频精品| 97超碰人人爽人人做| 91色乱一区二区三区| 人人妻人人爽人人爽欧美一区| 99色在线观看免费观看| 国产漂亮白嫩美女在线图片| 久久人妻人人草人人爽| 偷拍熟女大胆免费视频| 欧美日韩国产在线中文字幕| 白白色在线免费视频发布视频| 高清av在线婷一区二区色日韩| 青娱乐免费最新视频| 桃色成人开心激情网| 亚洲自拍偷拍av在线| 国产极品气质外围av| 伊人网在线欧美日韩在线| 日本成人福利电影网| 夜夜骚av一二三区| 一区二区三区内射美女| ysl蜜桃色7425| 99免费观看在线视频| 欧美日韩成人高清中文网| 日韩一级视频一区二区三区| 性高潮视频在线观看日韩| 日本高清激情乱一区二区三区| 黄版视频在线免费观看| 五月天天堂视频在线| 交换的一天中文字幕在线视频 | 午夜3p福利视频合集| 午夜精品视频免费观看| 日本少妇精品免费视频| 中文字幕亚洲乱码精品无限| 日本欧美高清在线观看视频| 欧美一区二区三区视频看| 亚洲一区二区三区四区入口| 午夜福利午夜福利影院| 国产剧情av在线免费观看| 大奶熟妇激情操逼逼| 91香蕉国产亚洲一二三区| 欧美插插插插插插| 5566熟女人妻人妻| 亚洲一区视频中文字幕在线播放 | 女人的天堂av在线网| 天天爽天天操天天插| 久久午夜免费鲁丝片| 9662av在线视频| 国产一区二区手机在线观看| 99精品久久一区二区| 亚洲人成大片在线观看| 福利小视频免费在线| 97cao在线视频| 国产青青青青草免费在线视频| 色屁屁一区二区三区在线观看| 性感美女人妻久久久| 一区二区三区四区 在线播放| 一区二区三区免费版在线| 大陆中文字幕视频在线| 午夜精品视频免费观看| 日韩三级精品电影久久久久| 久久99嫩草99久久精品| 亚洲制服丝袜美腿在线| 精品高潮呻吟久久av| 日本少妇精品免费视频| 农村大炕有肉大屁股熟妇| 色狠狠色综合久久久绯色| 亚洲熟女人妻自拍在线视频| 国产最新av在线免费观看| 国产男女无套?免费网站下载 | 天天爱天天日天天爽| 国产福利三级在线观看| 91系列视频在线播放| 久久视频 在线播放| av男人站在线观看| 黑人大巨屌操美女逼| 欧美视频亚洲视频在线| 97精品久久久久久无码人妻| 黑人巨大精品一区二区在线| 欧美日本亚欧在线观看| 自拍偷拍 国产激情| 欧美情色av在线观看| 超碰在线观看97资源| 美女网站视频久久精品| 亚洲天堂男人的天堂| 成人人妻h在线观看| 亚洲av毛片在在线播放| 九一精品人妻一区二区三区| 欧美亚洲精品色图网站| 男人和女人的逼视频| 久久精品国产亚洲av清纯| 黄片操操操操操操c| 黑人大吊大战亚洲女人。| 欧美丝袜亚洲国产日韩| 黑人大巨屌操美女逼| 中文字幕亚洲乱码精品无限| 97人妻av人人澡人人爽| 东北老女人熟女啪啪视频| 黑吊操欧美极品美女| 人妻系列中文字幕大乳丰满人妻| 91精品夜夜夜一区二区| 国产精品久久久99| 日韩精品欧美一区二区| 欧美猛少妇色ⅹⅹⅹⅹⅹ猛叫| 在线观看中文字幕视频成人| 伊人网国产在线播放| 91精品国产成人久久久久久| 福利视频免费在线播放| 日产国产欧美精品另类| 92麻豆一区二区三区| 日韩人妻中文字幕二区| 啪啪啪网站免费在线看| 夏目彩春av在线看| 久久人人爽人人爽人人av东京热| 亚洲欧美日韩中文在线观看| 182tv精品免费在线观看| 欧美日韩亚洲tv不卡久久| 亚洲欧美不卡专业视频| 在线观看2022av| 日本a级2020在线观看| 日韩三级精品电影久久久久| 69久久夜色精品国产69乱电影| 色网站在线观看免费| 99福利一区二区视频| 欧美日韩在线观看免费播放| 熟女人妻精品视频一区| 熟妇高潮久久久久久久| 中文字幕日韩人妻在线三区| 人人妻人人爽人人摸| 日本成年视频在线免费观看| 夜夜爽夜夜操夜夜爱| 日韩精品欧美一区二区| 亚洲va999天堂va| 福利小视频免费在线| 91激情四射婷婷综合| 91中文字幕视频网站| 人妻超清中文字幕在线乱码| 亚洲av中文无码网站| 日本a级2020在线观看| 日韩一级欧美一级片| 快使劲弄我视频在线播放| 偷拍欧美日韩另类图片| av里面的动作是真进去吗| 国产白丝一区二区三区av| 成年人免费福利在线| 99久久人人爽亚洲精品美女| 亚洲精品1卡2卡3卡| 国产资源网站在线播放| 亚洲国内精品久久久久久久| 国产又粗又长又大视频| 自拍偷拍 亚洲性图 欧美另类| 看女人大BB群伦交| 高潮喷水一区二区三区| 伊人情人成综合视频| 久久国产精品久精国产爱| 日韩欧美一区二区三区免费看| 免费看一级高潮喷水片 | 91精品麻豆91夜夜骚| 成年人免费福利在线| 东京热日本一区二区三区| 91大神在线免费观看视频| 高清av在线婷一区二区色日韩| 久久国产精品久精国产爱| 自拍偷自拍亚洲精品10p| 亚洲成年人精品国产| 青青操天堂在线观看视频| 亚洲av中文无码网站| 综合久久伊人久久88| 亚洲成人 国产精品| 日本一区二区高清av中文| 天天操天天干加勒比久久| 亚洲中文字幕在线av| 亚洲精品激情视频在线观看| 亚洲情色777中文字幕| 大成色亚洲一二三区| 国产清纯一区二区在线观看 | 亚洲精品色图1234| 黑鸡巴肏少妇逼视频| 美女av色播在线播放| 92午夜免费福利视频www| 欧美一级特黄大片在线| 大秀成年人国产精品视频 | 成人十欧美亚洲综合在线| 狂操鸡巴小骚逼视频免费观看| 久久久久久高清一区| 亚洲 自拍 激情 另类| avjpm亚洲伊人久久| 99久久碰碰人妻国产| 69精品人妻久久久久久久久久久 | 青娱乐不卡视频在线| 91九色尤物无套内射| 免费绝清毛片a在线播放| 一区二区三区资源视频| 青青操91美女国产| 伊人综合在线视频免费观看| 中文人妻av一区二区三区| 亚洲黄色成人一级片| 黄色av网址在线播放| 天天曰天天摸天天爽| 亚洲av 综合av| 白白色在线免费视频发布视频| 伊人免费观看视频一| 天天干夜夜操91视频网站| 国产成人在线观看hd| 国产精品无码无卡免费观| 亚洲综合首页综合在线观看| av在线播放观看h| 日韩成人在线电影首页| 亚洲少妇色小说综合| 999国产精品视频免费看| av大尺度一区二区三区| 日本不卡 中文字幕| 男人av一区二区三区| 日本成人福利电影网| 丰满放荡熟妇在线播放| 99免费观看在线视频| 亚洲欧美精品日韩偷拍| 十八禁黄色免费污污污亚洲| 午夜五十路久久福利| 伊人网在线观看 视频一区| avgo成人短视频| 交换的一天中文字幕在线视频| 天天搞天天操天天干| aa福利影视在线观看| 亚洲免费午夜污福利| 亚洲一区二区三区国产精品电影| 最新福利二区三区视频| 汤姆提醒30秒中转进站口| 91九色国产在线视频| 日本电影一级人妻在线播放四区| 青青青国产精品视频| 亚洲一区二区三区四区入口| 日韩激情亚洲国产欧美另类激情| 黑人大巨屌操美女逼| 在线看的免费网站黄| 国产精品网站的黄色| 中文字幕av特黄毛片| 狠狠干狠狠操免费视频| 91国产精品乱码久久久久久| 男人和女人的逼视频| 天天操天天射天天操天天日| 亚洲一区在线视频观看地址| 9662av在线视频| 日本黄色一级电影网址| 午夜免费福利老司机| 国产精品 亚洲欧美 自拍偷拍| 99在线视频精品观看高| 超碰在线pro中文字幕| av在线免费在线观看| 在线人成视频免费观看尤物| 不卡高清一区二区三区| 日本高清有码在线视频| 青青在线视频看看| 在线视频自拍第三页| 户外露出视频在线观看| 亚洲制服丝袜在线看| 天天日夜夜操人人爽| 天天操天天射天天操天天日 | 亚洲全国精品女人久久久| 国产91免费在线观看| 不卡在线一区二区三区| ysl蜜桃色7425| 夜夜爽夜夜操夜夜爱| 黑吊操欧美极品美女| 国产91精品福利系列| 最新日韩中文字幕啪啪啪| 不卡高清一区二区三区| 久久一级片三上悠亚| 成人资源中文在线观看| 99女福利女女视频在线播放| 91精品国产91久久久久久密臀| 欧美视频免费观看777| 天天爽天天操天天插| 精品国产污污污免费入口| 人妻超清中文字幕在线乱码| av网页免费在线观看| 欧美一级特黄大片在线| av福利免费体验观看| 黑人爆操女人免费视频| 中文字幕在线观看亚洲情色| 熟女人妻少妇一区二区| 国产精品午夜无码AV体验区| 538欧美在线观看一区二区三区 | 免费啪啪啪网站在线观看| 亚洲成人 国产精品| 欧美亚洲精品色图网站| 最近最新欧美日韩精品| 五月在线视频免费播放91| 91精品综合久久久久久五月天| 五月激情婷婷四射基地| 亚洲免费在线不卡视频| 91福利高清在线播放| 国产自拍偷拍视频在线免费观看| 中文字幕精品人妻久久久久 | 男女真人做带声音视频图片| 亚洲美女黄色福利视频网站大全| 红桃视频国产av在线| 全球高清中文字幕av| 91精品久久久久久久99蜜月| 亚洲熟女少妇中文字幕系列| 天天搞天天操天天干| 午夜国产免费视频亚洲| 国语精品视频自产自拍| 亚洲欧美精品海量播放 | 一区二区在线观看视频网站| 夜夜骚av一二三区| 天天操,天天射,天天爽| 亚洲综合熟女乱中文| 亚洲自拍偷拍av在线| 天天干天天操天天日天天日| 国产精美视频精品视频精品 | 69视频在线精品国自产拍| 亚洲欧美激情久久久| 青青青在线视频观看97| 在线人成视频免费观看尤物| 大尺度av毛片在线网址| 中文字幕欧美一区二区视频| 国产视频成人自拍蝌蚪视频| 国产黑色丝袜 在线日韩欧美| 日韩激情文学在线视频| 欧美在线视频不卡一区| 亚洲av手机免费在线| 天天日天天玩天天摸| 久久视频 在线播放| av资源中文字幕在线观看| 三级欧美日韩一区二区三区| 免费看一级高潮喷水片| lutu玩弄人妻短视频| 久久久久夜色国产精品电影| 360偷拍蜜桃臀69式| 97成人老师在线视频| 亚洲另类激情视频在线看| 国产漂亮白嫩美女在线图片 | 国产最新av在线免费观看| 亚洲午夜精品一级毛片app| 欧美日韩久久丝袜在线| 午夜精品久久秘?18免费观看| 久久亚洲国产成人精品麻豆| 日本成年视频在线免费观看| xxnxx国产美女| 色屁屁一区二区三区在线观看| 91在线九色porny| 国产一级一国产一级毛片| 福利在线国产小视频| 正在播放麻豆精品一区二区| 性感人妻 中文字幕| 中文字幕熟女人妻一区| 夜夜操天天干夜夜操| 精品欧美黑人一区二区三区| 九九热在线精品播放| 亚洲国内精品久久久久久久| 色就色综合偷拍区欧美在线| 亚洲在线免费观看18| 好看的日本中文字幕在线观看二区 | 欧美强奸视频在线观看| 999久久久人妻精品一区| 中文字幕在线免费观看成人| 黄片操操操操操操c| 丰满少妇人妻一区二区三区蜜桃| 放荡人妻极品少妇全集| 一区二区三区av免费天天看| 中文字幕欧美人妻在线.| 日本黄页在线观看视频| 精品国产污污污污免费观看| 国语对白性爱三级片免费看| 亚洲永远av在线播放| 强乱人妻中文字幕日本| 97人妻在线视频自拍| 一区二区三区资源视频| 杜达雄啪啪毛片视频| 国产农村乱子伦精精品视频| 国产剧情av在线免费观看| 中文字字幕在线精品乱码| 亚洲综合首页综合在线观看| 人人妻人人爽人人摸| 成人做爰av在线观看网站| 日本不卡视频一二三区| 97精品视频,全部免费| 亚洲 自拍 激情 另类| 呻吟求饶的人妻中文字幕| 68福利精品在线视频| 国产福利一区二区三区在线观看| 色欲AV蜜桃一区二区三| 可以直接看av网站| 国产亚洲精品啪啪视频| 亚洲精品1卡2卡3卡| 东京热日本一区二区三区| 国产精品 亚洲欧美 自拍偷拍| 午夜精品视频免费观看| 大香蕉在线欧美在线视频| 欧美在线观看一区二区不卡| 国产探花自拍亚洲av| yy4080黄色片| 最新日韩中文字幕啪啪啪| 人妻少妇精品二三区| 日韩成人精品久久久免费看| 国产最新av在线免费观看| caopeng97在线观看视频| 午夜精品小视频在线播放| 抽插小穴啊啊啊视频| 天天碰天天摸天天搞| 奇米网首页神马久久| 亚洲色大WWW永久网站| 操人妻人妻天天爽天天偷| 蜜乳av中文字幕一区二区| 日本午夜福利免费在线播放| 九九六视频,这里只有精品| 天天干天天操天天日天天日| 夜夜爽夜夜操夜夜爱| 亚洲欧美国产人成在线| 婷婷综合缴情亚洲五月伊人| 99热在线只有的精品| 黄色av日韩在线观看| 午夜国产免费视频亚洲| 日本一区二区三区区别| 亚洲少妇色小说综合| 亚洲成人自拍图片网站| 成人午夜高清福利视频| 一区二区三区不卡免费视频网站| av在线播放观看h| 欧美强奸视频在线观看| 加勒比东京热绿帽人妻多人操| 日本黄色一级电影网址| 亚洲男人天堂最新网址大全| 日本一本午夜在线播放| 婷婷六月天在线视频| 亚洲中文字幕在线视频观看二区| 亚洲无人区乱码中文字幕一区| 日本美女爱爱视频网站| 九十九步都是爱最后一步是尊严| 一区二区在线观看视频观看| 亚洲国产精品自产拍在线观看| 1级黄色片在线观看| 国产做A爱免费视频在线观看| 日韩一级欧美一级片| 熟妇高潮久久久久久久| 色网站在线观看免费| 中文字幕日本一二三区| 天堂av在线最新地址| 久久久久久免费观看av| 久久久久久高清一区| 国产黄色主播网址大全在线播放| 天天看片天天摸天天操| 高清国产美女a一级毛片| 91麻豆精品国产在线| 一区二区三区av免费天天看| 不卡一二三区别视频| 情趣视频在线观看91| 天堂网成人av电影| 久久99精品热在线观看| 欧美三区四区在线视频| 3344永久在线观看视频下载| 国产资源在线观看二区| 欧美黑人性猛交小矮人| 久久一级片三上悠亚| 熟女阿高潮合集一区二区| 色网站在线观看免费| 五月天色婷婷狠狠爱| 极品内射老女人操逼视频| 9420高清视频在线观看国语版| 亚洲国内精品久久久久久久 | 国产激情免费在线视频 | 超级黄肉动漫在线观看| 美女扒开逼逼给你看| lutu玩弄人妻短视频| 成人十欧美亚洲综合在线| 西野翔人妻中文字幕中字在| 国产自拍偷拍在线精品| 五月的婷婷综合视频| 亚洲熟女一区二区六区| 可在线免费观看av| 东京热日韩av在线| 99免费观看在线视频| 中出小骚货在线观看| 亚洲黄色成人一级片| 鸡巴插进美女的嫩小穴视频| 国产激情一区二区视频| 国产精品剧情av在线播放| —区二区三区女厕偷拍| 欧洲亚洲一区二区三区四区| 68视频在线免费观看| 精品欧美黑人一区二区三区| 天天操天天日天天碰| 亚洲三级综合在线观看| 人妻系列中文字幕大乳丰满人妻 | 69久久夜色精品国产69乱电影| 99色在线观看免费观看| 男人用大鸡巴狂操女人肉穴| 亚洲熟妇在线视频观看| 狠狠操狠狠操狠狠插| 一区二区三区资源视频| 亚洲成人 国产精品| 日本高清有码在线视频| av人摸人人人澡人人超碰小说| 女人的天堂av在线网| 青青草一个释放的网站| 最新免费在线观看污视频| 中文字幕在线免费观看人妻 | 日日夜夜免费视频精品| 97视频人人爱麻豆| 欧美国产精品久久久免费| 人妻少妇视频系列视频在线| 人妻视频网站快射视频网站| 蜜臀久久精品久久久久久av| 老色鬼精品视频在线观看播放| 99热99这里免费的精品| 天天干天天弄天天日| 狠狠操深爱婷婷综合一区| 天天爽天天操天天插| 情趣视频在线观看91| 91九色人妻在线播放| 快色视频在线观看免费| 欧美亚洲国产一区二区| 日本男女免费福利视频| 亚洲欧美日韩电影一区| 4438全国成人免费视频| 自拍偷拍 亚洲性图 欧美另类| 999国产精品视频免费看| 丝袜美腿日韩av一区| 日本一区二区高清av中文| 最新激情中文字幕视频| 最新中文字幕久久久久| 国产白丝一区二区三区av| 99re这里是国产精品首页| 国产熟妇色xxⅹ交白浆视频| 视频在线 一区二区| 人妻少妇视频系列视频在线| 宅男噜噜噜66国产在线观看| 在宿舍强奷两个清纯校花| 在线观看黄页网站视频网站| 亚洲午夜高清在线观看| 无码人妻丰满熟妇区五路| 国产毛片特级Av片| 男人的天堂av中文字幕| 久草视频在线看免费| 神马午夜久久电影网| 国产人妻熟女ⅹxx丝袜| 操操操操操操操操操网| 亚洲理论在线a中文字幕97| 视频自拍偷拍视频自拍 | 久久精品国产亚洲av清纯| 亚洲另类激情视频在线看| 亚洲成a人77777| 亚洲国产精品自拍偷拍视频在线| 狠狠操深爱婷婷综合一区| 亚洲第一成年偷拍视频| 骚穴被阴茎插免费视频| 亚洲理论在线a中文字幕97| 男女爱爱好爽视频免费看| 欧美黑人性猛交小矮人| 女人的天堂 av在线| 92午夜免费福利视频www| 国产激情免费在线视频| 青青青青青爽视频在线| 18禁网站在线点击观看| 一看就是假奶的av| 看女人大BB群伦交| 亚洲AV无码久久精品国产一区老| jiee日本美女视频网站| 亚洲精品色图1234|