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

手把手教你分析MySQL死鎖問題

數據庫 MySQL
事務1在表1上加了S鎖后,事務2想要更改某行記錄,需要添加IX鎖,由于不兼容,所以需要等待S鎖釋放;如果事務1在表1上加了IS鎖,事務2添加的IX鎖與IS鎖兼容,就可以操作,這就實現了更細粒度的加鎖。

幫一位朋友分析了一個死鎖問題,所以有了這篇圖文詳細的博文,非常詳細,建議收藏起來慢慢研究:

圖片圖片

發生死鎖了,如何排查和解決呢?本文將跟你一起探討這個問題

  • 準備好數據環境
  • 模擬死鎖案發
  • 分析死鎖日志
  • 分析死鎖結果

環境準備

數據庫隔離級別:

mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.00 sec)

自動提交關閉:

mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)

表結構:

//id是自增主鍵,name是非唯一索引,balance普通字段
CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `balance` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

表中的數據:

圖片圖片

模擬并發

開啟兩個終端模擬事務并發情況,執行順序以及實驗現象如下:

圖片圖片

圖片

1)事務A執行更新操作,更新成功

mysql> update  account  set balance =1000 where name ='Wei';
Query OK, 1 row affected (0.01 sec)

2)事務B執行更新操作,更新成功

mysql> update  account  set balance =1000 where name ='Eason';
Query OK, 1 row affected (0.01 sec)

3)事務A執行插入操作,陷入阻塞~

mysql> insert into account values(null,'Jay',100);

圖片圖片

這時候可以用 select*frominformation_schema.innodb_locks;查看鎖情況:

圖片圖片

4)事務B執行插入操作,插入成功,同時事務A的插入由阻塞變為死鎖error。

mysql> insert into account values(null,'Yan',100);
Query OK, 1 row affected (0.01 sec)

圖片圖片

鎖介紹

在分析死鎖日志前,先做一下鎖介紹,哈哈~

圖片圖片

主要介紹一下兼容性以及鎖模式類型的鎖:

共享鎖與排他鎖

InnoDB 實現了標準的行級鎖,包括兩種:共享鎖(簡稱 s 鎖)、排它鎖(簡稱 x 鎖)。

  • 共享鎖(S鎖):允許持鎖事務讀取一行。
  • 排他鎖(X鎖):允許持鎖事務更新或者刪除一行。

如果事務 T1 持有行 r 的 s 鎖,那么另一個事務 T2 請求 r 的鎖時,會做如下處理:

  • T2 請求 s 鎖立即被允許,結果 T1 T2 都持有 r 行的 s 鎖
  • T2 請求 x 鎖不能被立即允許

如果 T1 持有 r 的 x 鎖,那么 T2 請求 r 的 x、s 鎖都不能被立即允許,T2 必須等待T1釋放 x 鎖才可以,因為X鎖與任何的鎖都不兼容。

圖片圖片

意向鎖

  • 意向共享鎖( IS 鎖):事務想要獲得一張表中某幾行的共享鎖
  • 意向排他鎖( IX 鎖):事務想要獲得一張表中某幾行的排他鎖

比如:事務1在表1上加了S鎖后,事務2想要更改某行記錄,需要添加IX鎖,由于不兼容,所以需要等待S鎖釋放;如果事務1在表1上加了IS鎖,事務2添加的IX鎖與IS鎖兼容,就可以操作,這就實現了更細粒度的加鎖。

InnoDB存儲引擎中鎖的兼容性如下表:

圖片圖片

記錄鎖(Record Locks)

  • 記錄鎖是最簡單的行鎖,僅僅鎖住一行。如: SELECT c1 FROM t WHERE c1=10FOR UPDATE
  • 記錄鎖永遠都是加在索引上的,即使一個表沒有索引,InnoDB也會隱式的創建一個索引,并使用這個索引實施記錄鎖。
  • 會阻塞其他事務對其插入、更新、刪除

記錄鎖的事務數據(關鍵詞:lock_mode X locks rec butnotgap),記錄如下:

RECORD LOCKS space id 58 page no 3 n bits 72 index `PRIMARY` of table `test`.`t` 
trx id 10078 lock_mode X locks rec but not gap
Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 8000000a; asc     ;;
 1: len 6; hex 00000000274f; asc     'O;;
 2: len 7; hex b60000019d0110; asc        ;;

間隙鎖(Gap Locks)

  • 間隙鎖是一種加在兩個索引之間的鎖,或者加在第一個索引之前,或最后一個索引之后的間隙。
  • 使用間隙鎖鎖住的是一個區間,而不僅僅是這個區間中的每一條數據。
  • 間隙鎖只阻止其他事務插入到間隙中,他們不阻止其他事務在同一個間隙上獲得間隙鎖,所以 gap x lock 和 gap s lock 有相同的作用。

間隙鎖的事務數據(關鍵詞:gap before rec),記錄如下:

RECORD LOCKS space id 177 page no 4 n bits 80 index idx_name of table `test2`.`account` 
trx id 38049 lock_mode X locks gap before rec
Record lock, heap no 6 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 3; hex 576569; asc Wei;;
 1: len 4; hex 80000002; asc     ;;

Next-Key Locks

  • Next-key鎖是記錄鎖和間隙鎖的組合,它指的是加在某條記錄以及這條記錄前面間隙上的鎖。

插入意向鎖(Insert Intention)

  • 插入意向鎖是在插入一行記錄操作之前設置的一種間隙鎖,這個鎖釋放了一種插入方式的信號,亦即多個事務在相同的索引間隙插入時如果不是插入間隙中相同的位置就不需要互相等待。
  • 假設有索引值4、7,幾個不同的事務準備插入5、6,每個鎖都在獲得插入行的獨占鎖之前用插入意向鎖各自鎖住了4、7之間的間隙,但是不阻塞對方因為插入行不沖突。

事務數據類似于下面:

RECORD LOCKS space id 31 page no 3 n bits 72 index `PRIMARY` of table `test`.`child`
trx id 8731 lock_mode X locks gap before rec insert intention waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 80000066; asc    f;;
 1: len 6; hex 000000002215; asc     " ;;
 2: len 7; hex 9000000172011c; asc     r  ;;...

鎖模式兼容矩陣(橫向是已持有鎖,縱向是正在請求的鎖):

圖片圖片

如何讀懂死鎖日志?

show engine innodb status

可以用 show engine innodb status,查看最近一次死鎖日志哈~,執行后,死鎖日志如下:

2020-04-11 00:35:55 0x243c
*** (1) TRANSACTION:
TRANSACTION 38048, ACTIVE 92 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 4 lock struct(s), heap size 1136, 4 row lock(s), undo log entries 2
MySQL thread id 53, OS thread handle 2300, query id 2362 localhost ::1 root update
insert into account values(null,'Jay',100)
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 177 page no 4 n bits 80 index idx_name of table `test2`.`account` 
trx id 38048 lock_mode X locks gap before rec insert intention waiting
Record lock, heap no 6 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 3; hex 576569; asc Wei;;
 1: len 4; hex 80000002; asc     ;;
*** (2) TRANSACTION:
TRANSACTION 38049, ACTIVE 72 sec inserting, thread declared inside InnoDB 5000
mysql tables in use 1, locked 1
5 lock struct(s), heap size 1136, 4 row lock(s), undo log entries 2
MySQL thread id 52, OS thread handle 9276, query id 2363 localhost ::1 root update
insert into account  values(null,'Yan',100)
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 177 page no 4 n bits 80 index idx_name of table `test2`.`account` 
trx id 38049 lock_mode X locks gap before rec
Record lock, heap no 6 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 3; hex 576569; asc Wei;;
 1: len 4; hex 80000002; asc     ;;
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 177 page no 4 n bits 80 index idx_name of table `test2`.`account` 
trx id 38049 lock_mode X insert intention waiting
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0
 0: len 8; hex 73757072656d756d; asc supremum;;
*** WE ROLL BACK TRANSACTION (1)

我們如何分析以上死鎖日志呢?

第一部分

1)找到關鍵詞TRANSACTION,事務38048

圖片圖片

2)查看正在執行的SQL

insert into account values(null,'Jay',100)

3)正在等待鎖釋放(WAITING FOR THIS LOCK TO BE GRANTED),插入意向排他鎖(lockmode X locks gap before rec insert intention waiting),普通索引(idxname),物理記錄(PHYSICAL RECORD),間隙區間(未知,Wei);

圖片圖片

第二部分

1)找到關鍵詞TRANSACTION,事務38049

圖片圖片

2)查看正在執行的SQL

insert into account  values(null,'Yan',100)

3)持有鎖(HOLDS THE LOCK),間隙鎖(lockmode X locks gap before rec),普通索引(index idxname),物理記錄(physical record),區間(未知,Wei);

圖片圖片

4)正在等待鎖釋放(waiting for this lock to be granted),插入意向鎖(lockmode X insert intention waiting),普通索引上(index idxname),物理記錄(physical record),間隙區間(未知,+∞);

圖片圖片

5)事務1回滾(we roll back transaction 1);

查看日志結果

圖片圖片

查看日志可得:

  • 事務A正在等待的插入意向排他鎖(事務A即日志的事務1,根據insert語句來對號入座的哈),正在事務B的懷里~
  • 事務B持有間隙鎖,正在等待插入意向排它鎖

這里面,有些朋友可能有疑惑,

  • 事務A持有什么鎖呢?日志根本看不出來。它又想拿什么樣的插入意向排他鎖呢?
  • 事務B拿了具體什么的間隙鎖呢?它為什么也要拿插入意向鎖?
  • 死鎖的死循環是怎么形成的?目前日志看不出死循環構成呢?

我們接下來一小節詳細分析一波,一個一個問題來~

死鎖分析

死鎖死循環四要素

圖片圖片

  • 互斥條件:指進程對所分配到的資源進行排它性使用,即在一段時間內某資源只由一個進程占用。如果此時還有其它進程請求資源,則請求者只能等待,直至占有資源的進程用畢釋放。
  • 請求和保持條件:指進程已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它進程占有,此時請求進程阻塞,但又對自己已獲得的其它資源保持不放。
  • 不剝奪條件:指進程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。
  • 環路等待條件:指在發生死鎖時,必然存在一個進程——資源的環形鏈,即進程集合{P0,P1,P2,···,Pn}中的P0正在等待一個P1占用的資源;P1正在等待P2占用的資源,……,Pn正在等待已被P0占用的資源。

事務A持有什么鎖呢?它又想拿什么樣的插入意向排他鎖呢?

為了方便記錄,例子用W表示Wei,J表示Jay,E表示Eason哈~

我們先來分析事務A中update語句的加鎖情況~

update  account  set balance =1000 where name ='Wei';

間隙鎖:

  • Update語句會在非唯一索引的name加上左區間的間隙鎖,右區間的間隙鎖(因為目前表中只有name='Wei'的一條記錄,所以沒有中間的間隙鎖~),即(E,W) 和(W,+∞)
  • 為什么存在間隙鎖?因為這是RR的數據庫隔離級別,用來解決幻讀問題用的~

記錄鎖

  • 因為name是索引,所以該update語句肯定會加上W的記錄鎖

Next-Key鎖

  • Next-Key鎖=記錄鎖+間隙鎖,所以該update語句就有了(E,W]的 Next-Key鎖

綜上所述,事務A執行完update更新語句,會持有鎖:

  • Next-key Lock:(E,W]
  • Gap Lock :(W,+∞)

我們再來分析一波事務A中insert語句的加鎖情況

insert into account values(null,'Jay',100);

間隙鎖:

  • 因為Jay(J在E和W之間),所以需要請求加(E,W)的間隙鎖

插入意向鎖(Insert Intention)

  • 插入意向鎖是在插入一行記錄操作之前設置的一種間隙鎖,這個鎖釋放了一種插入方式的信號,即事務A需要插入意向鎖(E,W)

因此,事務A的update語句和insert語句執行完,它是持有了 (E,W]的 Next-Key鎖,(W,+∞)的Gap鎖,想拿到 (E,W)的插入意向排它鎖,等待的鎖跟死鎖日志是對上的,哈哈~

圖片圖片

事務B擁有了什么間隙鎖?它為什么也要拿插入意向鎖?

同理,我們再來分析一波事務B,update語句的加鎖分析:

update  account  set balance =1000 where name ='Eason';

間隙鎖:

  • Update語句會在非唯一索引的name加上左區間的間隙鎖,右區間的間隙鎖(因為目前表中只有name='Eason'的一條記錄,所以沒有中間的間隙鎖~),即(-∞,E)和(E,W)

記錄鎖

  • 因為name是索引,所以該update語句肯定會加上E的記錄鎖

Next-Key鎖

  • Next-Key鎖=記錄鎖+間隙鎖,所以該Update語句就有了(-∞,E]的 Next-Key鎖

綜上所述,事務B執行完update更新語句,會持有鎖:

  • Next-key Lock:(-∞,E]
  • Gap Lock :(E,W)

我們再來分析一波B中insert語句的加鎖情況

insert into account  values(null,'Yan',100);

間隙鎖:

  • 因為Yan(Y在W之后),所以需要請求加(W,+∞)的間隙鎖

插入意向鎖(Insert Intention)

  • 插入意向鎖是在插入一行記錄操作之前設置的一種間隙鎖,這個鎖釋放了一種插入方式的信號,即事務A需要插入意向鎖(W,+∞)

所以,事務B的update語句和insert語句執行完,它是持有了 (-∞,E]的 Next-Key鎖,(E,W)的Gap鎖,想拿到 (W,+∞)的間隙鎖,即插入意向排它鎖,加鎖情況跟死鎖日志也是對上的~

圖片圖片

圖片

死鎖真相還原

接下來呢,讓我們一起還原死鎖真相吧~哈哈~

圖片圖片

  • 事務A執行完Update Wei的語句,持有(E,W]的Next-key Lock,(W,+∞)的Gap Lock ,插入成功~
  • 事務B執行完Update Eason語句,持有(-∞,E]的 Next-Key Lock,(E,W)的Gap Lock,插入成功~
  • 事務A執行Insert Jay的語句時,因為需要(E,W)的插入意向鎖,但是(E,W)在事務B懷里,所以它陷入心塞~
  • 事務B執行Insert Yan的語句時,因為需要(W,+∞) 的插入意向鎖,但是(W,+∞) 在事務A懷里,所以它也陷入心塞。
  • 事務A持有(W,+∞)的Gap Lock,在等待(E,W)的插入意向鎖,事務B持有(E,W)的Gap鎖,在等待(W,+∞) 的插入意向鎖,所以形成了死鎖的閉環~(Gap鎖與插入意向鎖會沖突的,可以看回鎖介紹的鎖模式兼容矩陣哈~)
  • 事務A,B形成了死鎖閉環后,因為Innodb的底層機制,它會讓其中一個事務讓出資源,另外的事務執行成功,這就是為什么你最后看到事務B插入成功了,但是事務A的插入顯示了Deadlock found ~

總結

最后,遇到死鎖問題,我們應該怎么分析呢?

  • 模擬死鎖場景
  • show engine innodb status;查看死鎖日志
  • 找出死鎖SQL
  • SQL加鎖分析,這個可以去官網看哈
  • 分析死鎖日志(持有什么鎖,等待什么鎖)
  • 熟悉鎖模式兼容矩陣,InnoDB存儲引擎中鎖的兼容性矩陣。
責任編輯:武曉燕 來源: 撿田螺的小男孩
相關推薦

2020-04-14 10:20:12

MySQL數據庫死鎖

2021-09-18 14:26:49

Linux Linux 啟動流程Linux 系統

2021-07-14 09:00:00

JavaFX開發應用

2021-07-01 09:31:50

MySQL SQL 語句數據庫

2011-05-03 15:59:00

黑盒打印機

2011-01-10 14:41:26

2025-05-07 00:31:30

2017-05-18 12:45:35

數據分析數據理解數據

2018-03-23 20:45:23

機器學習NLP文本數據

2011-04-21 10:32:44

MySQL雙機同步

2021-01-19 09:06:21

MysqlDjango數據庫

2023-04-26 12:46:43

DockerSpringKubernetes

2022-12-07 08:42:35

2022-03-14 14:47:21

HarmonyOS操作系統鴻蒙

2022-07-27 08:16:22

搜索引擎Lucene

2022-01-08 20:04:20

攔截系統調用

2021-09-22 08:51:34

Android

2022-11-06 14:46:28

腳本windows文件

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口
點贊
收藏

51CTO技術棧公眾號

久草视频精品在线| 又黄又色的网站| 高清性色生活片在线观看| 日韩和欧美一区二区三区| 亚洲美女在线观看| 午夜免费高清视频| 大地资源网3页在线观看| 国产寡妇亲子伦一区二区| 久久久久久97| av黄色在线免费观看| 国产亚洲欧美日韩精品一区二区三区 | 人人爽人人爽人人片av| 大片网站久久| 日韩国产欧美精品在线| 亚洲高清免费在线观看| 成年网站在线视频网站| 日本一区二区三区高清不卡| 91九色偷拍| 亚洲中文一区二区| 伊人影院久久| 精品国内自产拍在线观看| 国产chinese中国hdxxxx| 懂色aⅴ精品一区二区三区| 亚洲综合图片区| 亚洲欧洲日本国产| 偷拍自拍在线| 国产91精品一区二区| 国产精品久久久久久久电影| 久久久久国产精品夜夜夜夜夜| 国产精品一区二区av交换| 欧美momandson| 国产精品亚洲第一区在线暖暖韩国| 久久久噜噜噜久久| 欧美视频一区二区在线| 久久99免费视频| 亚洲高清久久久久久| 在线一区二区不卡| 日韩在线免费| 色综合咪咪久久| 97超碰在线人人| 91中文在线| 中文字幕一区三区| 亚洲国产成人不卡| 免费在线观看污视频| 成人免费电影视频| 99九九视频| 国产精品主播一区二区| 毛片av一区二区| 国产精品久久久久久影视| 4438国产精品一区二区| 亚洲在线播放| 69视频在线播放| 在线观看精品国产| 国产亚洲激情| 性欧美激情精品| 久久久久性色av无码一区二区| 性欧美69xoxoxoxo| 另类色图亚洲色图| 欧美一区免费观看| 91成人观看| 久久人人爽人人爽人人片亚洲| 婷婷综合在线视频| 99精品视频精品精品视频| 日韩中文综合网| 丁香六月激情综合| 国产高清久久| 久久国产精品影片| 国产一级久久久| 99pao成人国产永久免费视频| 欧美激情国产精品| 久草精品视频在线观看| 一本色道88久久加勒比精品| 97av视频在线| 亚洲精品中文字幕乱码三区91| 久久久综合网| 国产精品一区二区三区毛片淫片 | 国产激情一区二区三区在线观看| 亚洲成人av综合| kk眼镜猥琐国模调教系列一区二区 | 亚洲亚裔videos黑人hd| 老司机福利在线观看| 66视频精品| 8x拔播拔播x8国产精品| 日韩人妻精品中文字幕| 精品亚洲国产成人av制服丝袜| 成人免费直播live| 亚洲第一视频在线| 91视频国产资源| 伊人久久大香线蕉av一区| 黄网址在线观看| 精品动漫一区二区| 国产一区二区在线免费播放| 91精品福利观看| 欧美一区二区三区在线电影| 欧产日产国产精品98| 国产伦精品一区二区三区千人斩| 最近更新的2019中文字幕| 国内偷拍精品视频| 老鸭窝91久久精品色噜噜导演| 国产欧美日韩亚洲精品| 亚洲国产精品视频在线| 国产欧美一二三区| 丁香色欲久久久久久综合网| 一级毛片久久久| 欧美一区二区福利视频| 久久成人激情视频| 欧美视频不卡| 国产精品欧美日韩久久| 黄色一级大片在线免费看国产| 久久综合久久综合亚洲| 青青草免费在线视频观看| 成人欧美大片| 日韩女优av电影在线观看| 老熟妇一区二区| 亚洲福利久久| 成人激情视频网| 国产在线视频网| 亚洲国产日韩综合久久精品| www.亚洲高清| 亚洲人挤奶视频| 欧美国产视频一区二区| 在线观看av大片| 久久嫩草精品久久久久| 91精品一区二区三区四区| 韩国女主播一区二区| 日韩精品一区二区三区四区视频| 欧美 日韩 国产 成人 在线观看 | 性色av一区二区三区在线观看| 在线观看中文字幕av| 99久久国产综合精品色伊| 玖玖精品在线视频| 精品裸体bbb| 国产婷婷97碰碰久久人人蜜臀| 草视频在线观看| 久久99精品久久久| 日韩高清dvd| 在线成人av观看| 亚洲国产精品字幕| 国产亚洲自拍av| 国产成人午夜片在线观看高清观看| 午夜精品区一区二区三| 偷拍视频一区二区三区| 国产午夜精品麻豆| 麻豆久久久久久久久久| 不卡的av中国片| 精品久久久久久无码中文野结衣| 日韩欧国产精品一区综合无码| 亚洲一级片在线看| 欧美激情黑白配| 99re成人精品视频| www在线观看免费| 久久成人福利| 7m精品福利视频导航| 天天操天天干天天干| 亚洲一区二区三区四区的| 熟女人妻一区二区三区免费看| 午夜国产欧美理论在线播放| 亚洲一区二区少妇| 黄色网在线播放| 日韩一区二区影院| 久久久久久久久久91| 成人午夜又粗又硬又大| 免费国产黄色网址| 国产一区二区欧美| 国产美女精彩久久| www.久久久久.com| 精品国产91久久久久久久妲己 | 国产精品久久777777毛茸茸 | 国产精品久久久久久久久久久新郎| 蜜桃成人在线视频| 欧美体内she精视频| 国产传媒在线看| 国产剧情一区二区三区| 国产精品一色哟哟| 欧美猛男同性videos| 国产精品视频永久免费播放| 伦xxxx在线| 精品久久久久av影院| 伊人中文字幕在线观看| 国产精品免费免费| 男人添女人荫蒂国产| 99热这里只有精品8| 日本一区二区三区视频在线播放| 国产福利亚洲| 午夜精品美女自拍福到在线| 欧美日本网站| 91精品国产一区二区三区香蕉| 欧美成人三级视频| 93久久精品日日躁夜夜躁欧美| 日韩免费毛片视频| 午夜精品毛片| 精品日产一区2区三区黄免费 | 亚洲日韩视频| 日日骚一区二区网站| 五月亚洲婷婷| 国产成人福利网站| 国产后进白嫩翘臀在线观看视频| 亚洲精品美女在线观看| 曰批又黄又爽免费视频| 午夜国产精品一区| 国产日产精品一区二区三区的介绍| 成人白浆超碰人人人人| 在线观看免费黄网站| 亚洲国产99| 亚洲午夜精品久久| 欧美一区自拍| 亚洲综合在线播放| 日韩中文影院| 国语自产精品视频在线看| 91精彩视频在线观看| 亚洲二区在线播放视频| 这里只有精品999| 精品久久久久久亚洲精品| 天天操天天操天天操天天操天天操| 99re在线精品| 污污免费在线观看| 国产精品自拍av| 狠狠躁狠狠躁视频专区| 一本久道久久综合婷婷鲸鱼| 福利在线小视频| 日本久久综合| 日韩中文一区| 日韩深夜福利| 国产偷国产偷亚洲高清97cao| 深夜福利亚洲| 国产精品久久77777| 欧美aa一级| 久久久久久久国产精品视频| 黄色一级片在线观看| 中文字幕视频在线免费欧美日韩综合在线看 | 黑鬼狂亚洲人videos| 欧美高清在线精品一区| 蜜桃传媒一区二区亚洲av| 成年人国产精品| 国产免费无码一区二区| 国产一区二区三区久久悠悠色av | 国产盗摄一区二区三区| 日本三级黄色网址| 蜜臀av一区二区在线免费观看| 国产午夜福利视频在线观看| 国产亚洲一区在线| 女人和拘做爰正片视频| 亚洲东热激情| 精品少妇一区二区三区在线| 亚洲国产精品一区| 成人一区二区免费视频| 亚洲国产二区| 欧美 国产 日本| 久久久久久穴| 97视频在线免费播放| 久久国产精品久久w女人spa| 北条麻妃在线一区| 日本亚洲最大的色成网站www| 农村妇女精品一二区| 久久亚洲国产精品一区二区| 久久黄色免费看| 蜜桃久久久久久久| 天堂中文av在线| 国产伦精品一区二区三区免费迷 | 成人免费91| 亚洲自拍av在线| 国产精东传媒成人av电影| 精品一区二区三区免费毛片| 色婷婷狠狠五月综合天色拍| 欧美大陆一区二区| 欧美三级伦理在线| 欧美h视频在线观看| 欧美日韩亚洲一区在线观看| 999在线观看视频| 久久一区二区三区超碰国产精品| 男人透女人免费视频| 麻豆freexxxx性91精品| 在线观看免费看片| av网站免费线看精品| 免费看黄色的视频| 国产精品国产自产拍高清av王其| 破处女黄色一级片| 午夜精品久久久久久久久久| 五月婷婷激情视频| 欧美精品第一页| 蜜臀久久99精品久久久| 亚洲色图狂野欧美| 韩国中文字幕在线| 欧美在线视频网| 亚洲精品一区二区在线播放∴| 99中文字幕| 免费电影一区二区三区| 亚洲在线色站| 精品成人久久| 亚洲国产高清av| 国产成人午夜精品影院观看视频| 精品人妻无码一区二区三区| 亚洲人成影院在线观看| 在线能看的av| 日韩亚洲欧美一区| 国产黄色在线| 久久久免费观看视频| 精品三级在线| 久久久久综合一区二区三区| 91成人免费| 黄色三级视频片| 99精品国产视频| 秋霞欧美一区二区三区视频免费| 精品久久久久久中文字幕一区奶水 | 精品欧美久久久| 成人好色电影| 午夜精品一区二区三区在线视| 久久久久伊人| 欧美国产一二三区| 欧美91视频| 在线看的黄色网址| 久久久综合视频| 精品在线视频免费| 在线观看91av| 国产h在线观看| 欧美一级免费视频| 538任你躁精品视频网免费| 亚洲乱码国产乱码精品天美传媒| 在线日韩视频| 国产chinesehd精品露脸| 国产精品电影一区二区三区| 日韩在线 中文字幕| 亚洲精品wwwww| 国产乱码在线| 97久草视频| 亚洲一区 二区 三区| 极品粉嫩美女露脸啪啪| 国产人成一区二区三区影院| 亚洲黄色免费观看| 日韩高清欧美高清| 成人影院在线视频| 成人黄动漫网站免费| 中文精品电影| 国产5g成人5g天天爽| 中文字幕视频一区二区三区久| 潘金莲一级淫片aaaaaa播放| 日韩成人av网址| 在线成人av观看| 欧美成人综合一区| 久久久久国产一区二区| 国产麻豆天美果冻无码视频| 亚洲成av人片在www色猫咪| 国产成人自拍一区| 欧美极品在线播放| 亚洲一区二区免费在线观看| 好吊色视频988gao在线观看| 国产一区二三区| 一区二区三区四区五区| 在线不卡免费欧美| www久久日com| 国产精品成人一区二区三区| 国模吧视频一区| 日本精品一二三| 亚洲大型综合色站| 色哟哟中文字幕| 欧美中在线观看| 欧美精品第一区| 中文字幕国产免费| 亚洲视频 欧洲视频| 午夜精品久久久久久久96蜜桃| 欧美人在线视频| 欧洲亚洲成人| 手机在线看福利| 亚洲免费av在线| 黑人精品一区二区三区| 国产91精品高潮白浆喷水| 国产一区二区三区四区| 中文字幕av专区| 亚洲一区电影777| 邻居大乳一区二区三区| 国产精品亚洲片夜色在线| 91精品国产成人观看| 亚洲欧美综合视频| 91国产福利在线| av在线下载| 久久久久久久久久码影片| 日韩综合在线视频| 欧美 日韩 国产 一区二区三区| 精品久久免费看| 九九热线视频只有这里最精品| 亚洲欧洲中文| 成人美女视频在线观看18| 中文字幕免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品中文字幕制服诱惑| 青青青在线播放| 亚洲人成网站色在线观看| 亚洲av成人精品日韩在线播放| 国产精品福利无圣光在线一区| 久久精品一区二区不卡| 国产毛片毛片毛片毛片毛片毛片| 欧美日韩一本到| 1区2区在线| 成人免费看片视频在线观看| 91美女片黄在线观看| 国产极品久久久| 国产ts一区二区| 精品不卡视频| 糖心vlog免费在线观看| 精品五月天久久|