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

記一次MySQL死鎖排查過程

數(shù)據(jù)庫 MySQL
以前接觸到的數(shù)據(jù)庫死鎖,都是批量更新時(shí)加鎖順序不一致而導(dǎo)致的死鎖,但是上周卻遇到了一個(gè)很難理解的死鎖。借著這個(gè)機(jī)會(huì)又重新學(xué)習(xí)了一下 mysql 的死鎖知識(shí)以及常見的死鎖場景。在多方調(diào)研以及和同事們的討論下終于發(fā)現(xiàn)了這個(gè)死鎖問題的成因,收獲頗多。

 

[[213834]]

背景

以前接觸到的數(shù)據(jù)庫死鎖,都是批量更新時(shí)加鎖順序不一致而導(dǎo)致的死鎖,但是上周卻遇到了一個(gè)很難理解的死鎖。借著這個(gè)機(jī)會(huì)又重新學(xué)習(xí)了一下 mysql 的死鎖知識(shí)以及常見的死鎖場景。在多方調(diào)研以及和同事們的討論下終于發(fā)現(xiàn)了這個(gè)死鎖問題的成因,收獲頗多。雖然是后端程序員,我們不需要像 DBA 一樣深入地去分析與鎖相關(guān)的源碼,但是如果我們能夠掌握基本的死鎖排查方法,對(duì)我們的日常開發(fā)還是大有裨益的。

PS:本文不會(huì)介紹死鎖的基本知識(shí),mysql 的加鎖原理可以參考本文的參考資料提供的鏈接。

死鎖起因

先介紹一下數(shù)據(jù)庫和表情況,因?yàn)樯婕暗焦緝?nèi)部真是的數(shù)據(jù),所以以下都做了模擬,不會(huì)影響具體的分析。

我們采用的是 5.5 版本的 mysql 數(shù)據(jù)庫,事務(wù)隔離級(jí)別是默認(rèn)的 RR(Repeatable-Read),采用 innodb 引擎。假設(shè)存在 test 表:

  1. CREATE TABLE `test` ( 
  2.  `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
  3.  `a` int(11) unsigned DEFAULT NULL
  4.  PRIMARY KEY (`id`), 
  5.  UNIQUE KEY `a` (`a`) 
  6. ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;    

表的結(jié)構(gòu)很簡單,一個(gè)主鍵 id,另一個(gè)***索引 a。表里的數(shù)據(jù)如下:

  1. mysql> select * from test; 
  2.  
  3. +----+------+ 
  4.  
  5. | id | a    | 
  6.  
  7. +----+------+ 
  8.  
  9. |  1 |    1 | 
  10.  
  11. |  2 |    2 | 
  12.  
  13. |  4 |    4 | 
  14.  
  15. +----+------+ 
  16.  
  17. rows in set (0.00 sec)    

出現(xiàn)死鎖的操作如下:

步驟 事務(wù) 1 事務(wù) 2
1   begin
2   delete from test where a = 2;
3 begin  
4 delete from test where a = 2; (事務(wù) 1 卡住)  
5 提示出現(xiàn)死鎖:ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction insert into test (id, a) values (10, 2);


然后我們可以通過 SHOW ENGINE INNODB STATUS; 來查看死鎖日志:

  1. ------------------------ 
  2.  
  3. LATEST DETECTED DEADLOCK 
  4.  
  5. ------------------------ 
  6.  
  7. 170219 13:31:31 
  8.  
  9. *** (1) TRANSACTION
  10.  
  11. TRANSACTION 2A8BD, ACTIVE 11 sec starting index read 
  12.  
  13. mysql tables in use 1, locked 1 
  14.  
  15. LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s) 
  16.  
  17. MySQL thread id 448218, OS thread handle 0x2abe5fb5d700, query id 18923238 renjun.fangcloud.net 121.41.41.92 root updating 
  18.  
  19. delete from test where a = 2 
  20.  
  21. *** (1) WAITING FOR THIS LOCK TO BE GRANTED: 
  22.  
  23. RECORD LOCKS space id 0 page no 923 n bits 80 index `a` of table `oauthdemo`.`test` trx id 2A8BD lock_mode X waiting 
  24.  
  25. Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
  26.  
  27. 0: len 4; hex 00000002; asc     ;; 
  28.  
  29. 1: len 4; hex 00000002; asc     ;; 
  30.  
  31. *** (2) TRANSACTION
  32.  
  33. TRANSACTION 2A8BC, ACTIVE 18 sec inserting 
  34.  
  35. mysql tables in use 1, locked 1 
  36.  
  37. 4 lock struct(s), heap size 1248, 3 row lock(s), undo log entries 2 
  38.  
  39. MySQL thread id 448217, OS thread handle 0x2abe5fd65700, query id 18923239 renjun.fangcloud.net 121.41.41.92 root update 
  40.  
  41. insert into test (id,a) values (10,2) 
  42.  
  43. *** (2) HOLDS THE LOCK(S): 
  44.  
  45. RECORD LOCKS space id 0 page no 923 n bits 80 index `a` of table `oauthdemo`.`test` trx id 2A8BC lock_mode X locks rec but not gap 
  46.  
  47. Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
  48.  
  49. 0: len 4; hex 00000002; asc     ;; 
  50.  
  51. 1: len 4; hex 00000002; asc     ;; 
  52.  
  53. *** (2) WAITING FOR THIS LOCK TO BE GRANTED: 
  54.  
  55. RECORD LOCKS space id 0 page no 923 n bits 80 index `a` of table `oauthdemo`.`test` trx id 2A8BC lock mode S waiting 
  56.  
  57. Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
  58.  
  59. 0: len 4; hex 00000002; asc     ;; 
  60.  
  61. 1: len 4; hex 00000002; asc     ;; 
  62.  
  63. *** WE ROLL BACK TRANSACTION (1)  

分析

閱讀死鎖日志

遇到死鎖,***步就是閱讀死鎖日志。死鎖日志通常分為兩部分,上半部分說明了事務(wù) 1 在等待什么鎖:

  1. 170219 13:31:31 
  2.  
  3. *** (1) TRANSACTION
  4.  
  5. TRANSACTION 2A8BD, ACTIVE 11 sec starting index read 
  6.  
  7. mysql tables in use 1, locked 1 
  8.  
  9. LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s) 
  10.  
  11. MySQL thread id 448218, OS thread handle 0x2abe5fb5d700, query id 18923238 renjun.fangcloud.net 121.41.41.92 root updating 
  12.  
  13. delete from test where a = 2 
  14.  
  15. *** (1) WAITING FOR THIS LOCK TO BE GRANTED: 
  16.  
  17. RECORD LOCKS space id 0 page no 923 n bits 80 index `a` of table `oauthdemo`.`test` trx id 2A8BD lock_mode X waiting 
  18.  
  19. Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
  20.  
  21. 0: len 4; hex 00000002; asc     ;; 
  22.  
  23. 1: len 4; hex 00000002; asc     ;;    

從日志里我們可以看到事務(wù) 1 當(dāng)前正在執(zhí)行 delete from test where a = 2,該條語句正在申請(qǐng)索引 a 的 X 鎖,所以提示 lock_mode X waiting。

然后日志的下半部分說明了事務(wù) 2 當(dāng)前持有的鎖以及等待的鎖:   

  1. *** (2) TRANSACTION
  2.  
  3. TRANSACTION 2A8BC, ACTIVE 18 sec inserting 
  4.  
  5. mysql tables in use 1, locked 1 
  6.  
  7. 4 lock struct(s), heap size 1248, 3 row lock(s), undo log entries 2 
  8.  
  9. MySQL thread id 448217, OS thread handle 0x2abe5fd65700, query id 18923239 renjun.fangcloud.net 121.41.41.92 root update 
  10.  
  11. insert into test (id,a) values (10,2) 
  12.  
  13. *** (2) HOLDS THE LOCK(S): 
  14.  
  15. RECORD LOCKS space id 0 page no 923 n bits 80 index `a` of table `oauthdemo`.`test` trx id 2A8BC lock_mode X locks rec but not gap 
  16.  
  17. Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
  18.  
  19. 0: len 4; hex 00000002; asc     ;; 
  20.  
  21. 1: len 4; hex 00000002; asc     ;; 
  22.  
  23. *** (2) WAITING FOR THIS LOCK TO BE GRANTED: 
  24.  
  25. RECORD LOCKS space id 0 page no 923 n bits 80 index `a` of table `oauthdemo`.`test` trx id 2A8BC lock mode S waiting 
  26.  
  27. Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 
  28.  
  29. 0: len 4; hex 00000002; asc     ;; 
  30.  
  31. 1: len 4; hex 00000002; asc     ;;    

從日志的 HOLDS THE LOCKS(S) 塊中我們可以看到事務(wù) 2 持有索引 a 的 X 鎖,并且是記錄鎖(Record Lock)。該鎖是通過事務(wù) 2 在步驟 2 執(zhí)行的 delete 語句申請(qǐng)的。由于是 RR 隔離模式下的基于***索引的等值查詢(Where a = 2),所以會(huì)申請(qǐng)一個(gè)記錄鎖,而非 next-key 鎖。

從日志的 WAITING FOR THIS LOCK TO BE GRANTED 塊中我們可以看到事務(wù) 2 正在申請(qǐng) S 鎖,也就是共享鎖。該鎖是 insert into test (id,a) values (10,2) 語句申請(qǐng)的。insert 語句在普通情況下是會(huì)申請(qǐng)排他鎖,也就是 X 鎖,但是這里出現(xiàn)了 S 鎖。這是因?yàn)?a 字段是一個(gè)***索引,所以 insert 語句會(huì)在插入前進(jìn)行一次 duplicate key 的檢查,為了使這次檢查成功,需要申請(qǐng) S 鎖防止其他事務(wù)對(duì) a 字段進(jìn)行修改。

那么為什么該 S 鎖會(huì)失敗呢?這是對(duì)同一個(gè)字段的鎖的申請(qǐng)是需要排隊(duì)的。S 鎖前面還有一個(gè)未申請(qǐng)成功的 X 鎖,所以 S 鎖必須等待,所以形成了循環(huán)等待,死鎖出現(xiàn)了。

通過閱讀死鎖日志,我們可以清楚地知道兩個(gè)事務(wù)形成了怎樣的循環(huán)等待,再加以分析,就可以逆向推斷出循環(huán)等待的成因,也就是死鎖形成的原因。

死鎖形成流程圖

為了讓大家更好地理解死鎖形成的原因,我們?cè)偻ㄟ^表格的形式闡述死鎖形成的流程:

步驟
事務(wù) 1 事務(wù) 2
1   begin
2   delete from test where a = 2; 執(zhí)行成功,事務(wù) 2 占有 a=2 下的 X 鎖,類型為記錄鎖。
3 begin  
4 delete from test where a = 2; 事務(wù) 1 希望申請(qǐng) a=2 下的 X 鎖,但是由于事務(wù) 2 已經(jīng)申請(qǐng)了一把 X 鎖,兩把 X 鎖互斥,所以 X 鎖申請(qǐng)進(jìn)入鎖請(qǐng)求隊(duì)列。  
5 出現(xiàn)死鎖,事務(wù) 1 權(quán)重較小,所以被選擇回滾(成為犧牲品)。 insert into test (id, a) values (10, 2); 由于 a 字段建立了***索引,所以需要申請(qǐng) S 鎖以便檢查 duplicate key,由于插入的 a 的值還是 2,所以排在 X 鎖后面。但是前面的 X 鎖的申請(qǐng)只有在事務(wù) 2commit 或者 rollback 之后才能成功,此時(shí)形成了循環(huán)等待,死鎖產(chǎn)生。


拓展

在排查死鎖的過程中,有個(gè)同事還發(fā)現(xiàn)了上述場景會(huì)產(chǎn)生另一種死鎖,該場景無法通過手工復(fù)現(xiàn),只有高并發(fā)場景下才有可能復(fù)現(xiàn)。

該死鎖對(duì)應(yīng)的日志這里就不貼出了,與上一個(gè)死鎖的核心差別是事務(wù) 2 等待的鎖從 S 鎖換成了 X 鎖,也就是 lock_mode X locks gap before rec insert intention waiting。我們還是通過表格來詳細(xì)說明該死鎖產(chǎn)生的流程:

步驟
事務(wù) 1 事務(wù) 2
1   begin
2   delete from test where a = 2; 執(zhí)行成功,事務(wù) 2 占有 a=2 下的 X 鎖,類型為記錄鎖。
3 begin  
4   【insert 第 1 階段】insert into test (id, a) values (10, 2); 事務(wù) 2 申請(qǐng) S 鎖進(jìn)行 duplicate key 進(jìn)行檢查。檢查成功。
5 delete from test where a = 2; 事務(wù) 1 希望申請(qǐng) a=2 下的 X 鎖,但是由于事務(wù) 2 已經(jīng)申請(qǐng)了一把 X 鎖,兩把 X 鎖互斥,所以 X 鎖申請(qǐng)進(jìn)入鎖請(qǐng)求隊(duì)列。  
6 出現(xiàn)死鎖,事務(wù) 1 權(quán)重較小,所以被選擇回滾(成為犧牲品)。 【insert 第 2 階段】insert into test (id, a) values (10, 2); 事務(wù) 2 開始插入數(shù)據(jù),S 鎖升級(jí)為 X 鎖,類型為 insert intention。同理,X 鎖進(jìn)入隊(duì)列排隊(duì),形成循環(huán)等待,死鎖產(chǎn)生。


總結(jié)

排查死鎖時(shí),首先需要根據(jù)死鎖日志分析循環(huán)等待的場景,然后根據(jù)當(dāng)前各個(gè)事務(wù)執(zhí)行的 SQL 分析出加鎖類型以及順序,逆向推斷出如何形成循環(huán)等待,這樣就能找到死鎖產(chǎn)生的原因了。

 

PS:上述分析都是基于經(jīng)驗(yàn)的推斷,希望其他小伙伴們能夠指出當(dāng)中的錯(cuò)誤以及不足指出,謝謝! 

責(zé)任編輯:龐桂玉 來源: ITPUB
相關(guān)推薦

2021-11-23 21:21:07

線上排查服務(wù)

2019-03-15 16:20:45

MySQL死鎖排查命令

2019-04-15 13:15:12

數(shù)據(jù)庫MySQL死鎖

2018-07-20 08:44:21

Redis內(nèi)存排查

2023-04-06 07:53:56

Redis連接問題K8s

2019-06-10 15:20:18

2018-11-13 10:44:23

Linux服務(wù)器雙網(wǎng)卡網(wǎng)絡(luò)

2021-05-13 08:51:20

GC問題排查

2021-03-29 12:35:04

Kubernetes環(huán)境TCP

2023-01-04 18:32:31

線上服務(wù)代碼

2023-10-10 12:05:45

2023-10-11 22:24:00

DubboRedis服務(wù)器

2019-08-26 09:50:09

2023-04-06 10:52:18

2024-06-24 09:29:15

2017-09-22 10:16:16

MySQL數(shù)據(jù)庫用戶數(shù)據(jù)

2021-04-13 08:54:28

dubbo線程池事故排查

2024-04-10 08:48:31

MySQLSQL語句

2021-02-01 09:00:34

Ceph octopu集群運(yùn)維

2022-02-08 17:17:27

內(nèi)存泄漏排查
點(diǎn)贊
收藏

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

www.午夜色| 欧美一级国产精品| 国产在线一区二区三区播放| 日本在线播放视频| 欧美精选一区二区三区| 欧美视频中文字幕| 日本女人高潮视频| 天堂在线资源网| 日本欧美在线看| 免费不卡欧美自拍视频| chinese麻豆新拍video| 国产成人亚洲一区二区三区 | 激情综合丁香五月| 日韩一级二级| 亚洲一区二区三区视频在线播放 | 欧美激情电影| 亚洲国产高潮在线观看| 一道本视频在线观看| 天堂av资源在线观看| 久久色.com| 91免费在线观看网站| 国产三级精品三级在线观看| 一区二区电影| 正在播放亚洲1区| 天天躁日日躁狠狠躁av麻豆男男| 蜜桃精品在线| 精品久久久视频| 亚洲欧洲成人自拍| 久久网福利资源网站| 成熟妇人a片免费看网站| 韩国成人在线| 欧美日韩国产丝袜美女| 日韩人妻精品一区二区三区| 九色在线观看视频| 成人黄色一级视频| 亚洲xxx自由成熟| 国产在线观看第一页| 99av国产精品欲麻豆| 久久99久久99精品中文字幕| 一级在线观看视频| 免费电影一区二区三区| 亚洲国产一区二区三区在线观看| 在线免费黄色网| 亚洲日本网址| 色婷婷精品大在线视频| 国产69精品久久久久久久| fc2ppv国产精品久久| 国产精品女同一区二区三区| 欧美中文娱乐网| 欧美婷婷久久五月精品三区| 成人av网在线| 国产精品二区在线观看| a天堂在线视频| 精品一区二区三区免费毛片爱| 国产精品99久久久久久白浆小说 | 99999精品| 日本一区二区中文字幕| 欧美影视一区在线| 日本成人在线免费视频| 久久久人成影片一区二区三区在哪下载 | 色偷偷久久一区二区三区| 精品久久一二三| 久久久男人天堂| 天天爽夜夜爽夜夜爽精品视频| 久青草视频在线播放| 乱插在线www| 五月激情丁香一区二区三区| 欧美激情视频免费看| 国产99在线| 欧美日韩在线观看视频| 老头吃奶性行交视频| 免费高清视频在线一区| 欧美日韩免费视频| 午夜一区二区视频| 日韩一区二区三区色| 日韩精品一区二区三区在线观看 | 中文字幕亚洲激情| 欧美做爰啪啪xxxⅹ性| 91超碰成人| 久久久久久91| 三级视频在线观看| 麻豆免费看一区二区三区| 91精品久久久久久久久久| 一级α片免费看刺激高潮视频| 麻豆精品久久精品色综合| 91热精品视频| 四虎永久在线精品免费网址| 91玉足脚交白嫩脚丫在线播放| 欧美黑人3p| 久久综合网导航| 亚洲高清三级视频| 别急慢慢来1978如如2| 成人网av.com/| 日韩av影院在线观看| 91视频免费看片| 欧美色图麻豆| 国产成人+综合亚洲+天堂| 亚洲综合五月天婷婷丁香| 国产精品456| 欧美亚洲免费高清在线观看| 黄色的网站在线观看| 精品久久久久久久久久| 第四色婷婷基地| 电影一区二区在线观看| 尤物九九久久国产精品的分类| www.色小姐com| 久久亚洲欧美| 97人人干人人| av在线三区| 午夜伊人狠狠久久| 天堂av手机在线| 色橹橹欧美在线观看视频高清| 爽爽爽爽爽爽爽成人免费观看| 黄网站免费在线| 久久99日本精品| 久久久久久久久久久久久9999| 国产激情在线| 91成人在线观看喷潮| 免费看91视频| 日韩精品一区二区三区免费观影 | 美女被久久久| 欧美激情18p| 做爰视频毛片视频| av成人免费在线观看| 在线观看国产一区| 三上悠亚激情av一区二区三区| 日韩精品自拍偷拍| 一本在线免费视频| 久久久久国产精品一区二区| 国产精品美女xx| 4438x成人网全国最大| 欧洲在线/亚洲| 亚洲精品成人无码熟妇在线| 亚洲国产第一| 999久久久| 成视频免费观看在线看| 欧美亚洲国产一区在线观看网站 | 性色av一区二区三区四区| 99精品视频一区| 男人的天堂avav| 国产精品xnxxcom| 久久精品国产亚洲7777| 怡红院男人天堂| 国产女同性恋一区二区| 国产一区亚洲二区三区| 亚洲精品亚洲人成在线| 国模私拍视频一区| 国产成人手机在线| 一区二区三区高清在线| 国内精品国产三级国产aⅴ久| 欧美h版在线| 成人精品视频久久久久| 色欧美激情视频在线| 欧美日韩dvd在线观看| 天天摸日日摸狠狠添| 奇米精品一区二区三区在线观看| 欧美一区二区在线| 国产在线|日韩| 中文字幕免费国产精品| 曰批又黄又爽免费视频| 亚洲天堂2016| 1314成人网| 你懂的一区二区| 俄罗斯精品一区二区三区| 蜜桃传媒在线观看免费进入| 亚洲国产精品热久久| 国产精品男女视频| 欧美经典三级视频一区二区三区| 九九视频精品在线观看| 日本黄色精品| 成人a免费视频| 中中文字幕av在线| 亚洲精品美女在线观看| 性色av免费观看| 国产精品视频免费看| 在线视频观看一区二区| 精品成人在线| 欧美一区中文字幕| 欧美日韩国产在线播放| 女同性一区二区三区人了人一| 久久不射影院| 极品av在线| 麻豆一区二区麻豆免费观看| 日韩精品一区二区三区swag | 欧美成人免费在线观看| 成人1区2区3区| 午夜精品免费在线| 亚洲国产日韩一区无码精品久久久| 免费看欧美女人艹b| 色乱码一区二区三区熟女| 1204国产成人精品视频| 欧美最猛性xxxx| 国产黄色在线网站| 亚洲精品国偷自产在线99热| 最新黄色网址在线观看| 亚洲综合一区二区三区| 成都免费高清电影| 韩国av一区二区三区四区 | 国产精品偷拍| 亚洲欧美另类在线观看| 国产免费叼嘿网站免费| 精品福利一区二区| 色哟哟一一国产精品| av一二三不卡影片| 人人爽人人爽av| 久久国产精品久久久久久电车| 不卡中文字幕在线| 猛男gaygay欧美视频| 成人激情在线播放| 韩国美女久久| 欧美黑人巨大xxx极品| www.黄在线观看| 亚洲精品电影久久久| 91成年人视频| 色成人在线视频| 国产在线观看免费av| 国产精品欧美一区喷水| 手机在线看片日韩| 国产精品69久久久久水密桃| 少妇黄色一级片| 日韩视频一区| 中文字幕视频一区二区三区久| 免费黄频在线观看| 久久九九免费| 毛片在线播放视频| 女人天堂亚洲aⅴ在线观看| 日韩区国产区| 日本亚洲不卡| 成人18视频| 国产一区二区三区免费在线| 国产不卡av在线| yellow字幕网在线| 欧美高清在线视频观看不卡| 麻豆最新免费在线视频| 在线看欧美日韩| 黄色在线免费观看大全| 亚洲激情视频网站| 成人毛片在线精品国产| 日韩一级免费观看| 国产精品视频一区二区三区,| 欧美在线短视频| 亚洲黄网在线观看| 欧美性感美女h网站在线观看免费| 欧美黄色免费看| 亚洲欧美激情在线| 小泽玛利亚一区二区免费| 国产精品乱人伦| 在线免费看视频| 欧美高清在线视频| 91成人精品一区二区| 欧美精彩视频一区二区三区| 夫妇交换中文字幕| 欧美激情资源网| 一级二级黄色片| 国产精品乱码久久久久久| 日本猛少妇色xxxxx免费网站| 国产欧美1区2区3区| 成人性生交大片免费看无遮挡aⅴ| 国产欧美一区二区精品婷婷| 国产高清一区二区三区四区| 欧美激情在线免费观看| 91免费在线看片| 18涩涩午夜精品.www| 欧美在线视频第一页| 一区二区三区日韩精品| 国产一级黄色av| 午夜精品一区二区三区电影天堂| 日本五十熟hd丰满| 日韩欧美大尺度| 亚洲av无码乱码国产精品fc2| 欧美这里有精品| 国产又粗又猛又爽又黄的视频一| 欧美一二三区在线观看| 亚洲国产www| 亚洲精品在线观看www| 成年午夜在线| 欧美猛交免费看| 国产夫妻在线播放| 国产精品www| 国产一区二区三区免费观看在线| 国产精品视频免费一区二区三区 | 全部av―极品视觉盛宴亚洲| 狠狠干狠狠操视频| 成人综合在线视频| 中文字幕高清视频| 国产精品不卡在线| 国产午夜福利片| 色综合久久中文综合久久牛| 91在线观看喷潮| 亚洲国产成人精品久久| 邻家有女韩剧在线观看国语| 日韩一中文字幕| 国产乱码在线| 国产精品狠色婷| 亚洲超碰在线观看| 蜜桃麻豆91| 综合一区av| 久久久久久香蕉| 国产成人在线视频播放| 亚洲精品一区二三区不卡| 国产三级在线免费| 欧美日韩国产成人在线观看| www.com.cn成人| 91亚洲精华国产精华| 天堂成人娱乐在线视频免费播放网站 | 无码人妻丰满熟妇区毛片18| 麻豆精品一区二区av白丝在线| xfplay5566色资源网站| 国产精品久久免费看| 日韩成人免费观看| 在线91免费看| 嫩草在线播放| 久久免费精品日本久久中文字幕| 国产亚洲欧美日韩精品一区二区三区| 国产精品一区二区免费| 四虎国产精品免费观看| 黑森林福利视频导航| 国产凹凸在线观看一区二区| 99国产精品免费| 日本丶国产丶欧美色综合| 亚洲国产精品suv| 伦理中文字幕亚洲| 成人国产激情在线| 欧美日韩精品免费观看| 激情综合自拍| 日韩av福利在线观看| 欧美极品xxx| 亚洲精品男人的天堂| 精品国产伦一区二区三区观看方式| 韩国中文字幕在线| 国产精品久久久久免费a∨大胸| 日韩电影不卡一区| 国产日韩亚洲欧美在线| 国产曰批免费观看久久久| 我不卡一区二区| 色综合咪咪久久| 深夜福利免费在线观看| 国模精品视频一区二区三区| 日本一区二区三区电影免费观看| 亚洲一区尤物| 免费成人你懂的| 能直接看的av| 精品视频1区2区| 都市激情在线视频| 国产经典一区二区| 国产一区二区观看| 欧美视频免费播放| 久久亚洲综合色一区二区三区 | 欧美写真视频网站| 成人全视频高清免费观看| 色妞久久福利网| 爽爽爽在线观看| 黄av在线免费观看| 国产女同互慰高潮91漫画| 欧美成人免费在线观看| 色综合天天色综合| 哥也色在线视频| 国产成人免费视频精品含羞草妖精 | 99久久精品费精品国产风间由美 | 一区二区三区网站| 中文字幕亚洲影院| 亚洲色图欧美偷拍| 国产99对白在线播放| 久久6精品影院| 日韩欧美一级| 国产欧美日韩网站| 26uuu精品一区二区在线观看| 少妇太紧太爽又黄又硬又爽 | 日本天堂在线观看| 91性高湖久久久久久久久_久久99| 伊人久久大香线| 中文字幕99页| 日韩欧美在线第一页| av资源网站在线观看| 亚洲尤物视频网| 在线视频免费在线观看一区二区| 中文字幕在线免费看线人| 在线视频亚洲一区| 大地资源网3页在线观看| 国产精品一区二区在线观看| 久久九九电影| 五月天色婷婷丁香| 亚洲精品久久久久| 国精品产品一区| av一区二区三区免费观看| 91香蕉视频黄| 国产又粗又猛又色又| 午夜精品一区二区三区在线视| 久久99蜜桃| 奇米777在线| 色系网站成人免费| 欧美14一18处毛片| 人禽交欧美网站免费| 国产成人自拍在线| 精人妻无码一区二区三区| 久久国产加勒比精品无码| 亚洲第一论坛sis| 一级片黄色免费| 色诱视频网站一区| 国产精品久久7|