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

一條從未見過的報警,開啟曲折的MySQL死鎖排查

數據庫 MySQL
從日志的字面意思來看,顯然,是MySQL數據庫在執行事務時,發現了死鎖的情況,那么這種死鎖是如何產生的,背后又潛藏著怎樣的隱患,又該如何去解決呢,我們一起來排查一下。

 故障背景

國慶期間,收到一條從未見過的報警,后面間歇性地又報出類似的偶現報警,便忽然來了興致,摘了其中一條,探究一下其中的故事。 

  1. *** (1) TRANSACTION:  
  2. TRANSACTION 6286508066, ACTIVE 0 sec updating or deleting  
  3. mysql tables in use 1, locked 1  
  4. LOCK WAIT 9 lock struct(s), heap size 1136, 14 row lock(s), undo log entries 1  
  5. MySQL thread id 189619143, OS thread handle 140619931252480, query id 1148803196 10.200.18.103 ke_information updating  
  6. update `user_feed_26` set `notification` = 1, `mtime` = '2020-10-03 09:11:11' where `user_id` = 2000000126212250 and `action` in ('resblock_weekly', 'bizcircle_weekly', 'district_weekly') and `notification` = 0 
  7. *** (1) WAITING FOR THIS LOCK TO BE GRANTED:  
  8. RECORD LOCKS space id 2229 page no 263938 n bits 264 index idx_user_id of table `lianjia_user_feed`.`user_feed_26` trx id 6286508066 lock_mode X locks gap before rec insert intention waiting 
  9. Record lock, heap no 93 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  10.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  11.  1: len 14; hex 6f6e5f7368656c665f616761696e; asc on_shelf_again;;  
  12.  2: len 1; hex 81; asc  ;;  
  13.  3: len 12; hex 313034313033373433363737; asc 104103743677;;  
  14.  4: len 4; hex 95f12ab5; asc   * ;; 

從日志的字面意思來看,顯然,是MySQL數據庫在執行事務時,發現了死鎖的情況,那么這種死鎖是如何產生的,背后又潛藏著怎樣的隱患,又該如何去解決呢,我們一起來排查一下~

排查過程

霧里看花

剛開始收到這個報警,第一反應,是有不同事務互相鎖,結果產生了死鎖。那么壞了,十有八九是某個代碼片段里寫的邏輯出了問題。但是排查了一整圈,涉及到這個sql的代碼,既沒有開啟事務,更沒有多個事務,那么代碼的bug基本上就可以排除了。

那么這些個事務是怎么來的呢?眾所周知,MySQL的事務支持與存儲引擎有關,MyISAM不支持事務,INNODB支持事務,更新時采用的是行級鎖。由于我們的數據庫采用的是INNODB引擎,意味著,會將update語句當做一個事務來處理。那難道是更新同一條數據,出現的沖突嗎?于是找DBA同學要來了死鎖日志(數據庫版本:5.7.24 事務隔離級別為RR)。

事務一日志: 

  1. *** (1) TRANSACTION:  
  2. TRANSACTION 6286508066, ACTIVE 0 sec updating or deleting  
  3. mysql tables in use 1, locked 1  
  4. LOCK WAIT 9 lock struct(s), heap size 1136, 14 row lock(s), undo log entries 1  
  5. MySQL thread id 189619143, OS thread handle 140619931252480, query id 1148803196 10.200.18.103 ke_information updating  
  6. update `user_feed_26` set `notification` = 1, `mtime` = '2020-10-03 09:11:11' where `user_id` = 2000000126212250 and `action` in ('resblock_weekly', 'bizcircle_weekly', 'district_weekly') and `notification` = 0 
  7. *** (1) WAITING FOR THIS LOCK TO BE GRANTED:  
  8. RECORD LOCKS space id 2229 page no 263938 n bits 264 index idx_user_id of table `lianjia_user_feed`.`user_feed_26` trx id 6286508066 lock_mode X locks gap before rec insert intention waiting 
  9. Record lock, heap no 93 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  10.  0: len 8; hex 80071afd5112d89a; asc     Q   ;; 
  11.  1: len 14; hex 6f6e5f7368656c665f616761696e; asc on_shelf_again;; 
  12.  2: len 1; hex 81; asc  ;;  
  13.  3: len 12; hex 313034313033373433363737; asc 104103743677;;  
  14.  4: len 4; hex 95f12ab5; asc   * ;; 

由日志可以看出,事務一執行的sql語句是:

  1. update `user_feed_26` set `notification` = 1, `mtime` = '2020-10-03 09:11:11' where `user_id` = 2000000126212250 and `action` in ('resblock_weekly', 'bizcircle_weekly', 'district_weekly') and `notification` = 0 

在等待的鎖是: 

  1. *** (1) WAITING FOR THIS LOCK TO BE GRANTED:  
  2. ECORD LOCKS space id 2229 page no 263938 n bits 264 index idx_user_id of table `lianjia_user_feed`.`user_feed_26` trx id 6286508066 lock_mode X locks gap before rec insert intention waiting 

這里顯示的是事務在等待什么鎖。RECORD LOCKS 表示記錄鎖,并且可以看出要加鎖的索引為idx_user_id,space id為2229,page no為263938,lock_mode X 標識該記錄鎖為排它鎖,insert intention waiting 表示要加的鎖為插入意向鎖,并處于鎖等待狀態。 

  1. Record lock, heap no 93 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  2. 0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  3. 1: len 14; hex 6f6e5f7368656c665f616761696e; asc on_shelf_again;;  
  4. 2: len 1; hex 81; asc  ;;  
  5. 3: len 12; hex 313034313033373433363737; asc 104103743677;;  
  6. 4: len 4; hex 95f12ab5; asc   * ;; 

結合索引信息第二行 on_shelf_again 可以知道,這行鎖的 action 字段是 on_shelf_again ;

事務二日志: 

  1.  *** (2) TRANSACTION:  
  2. TRANSACTION 6286508067, ACTIVE 0 sec updating or deleting, thread declared inside InnoDB 4980  
  3. mysql tables in use 1, locked 1  
  4. 12 lock struct(s), heap size 1136, 22 row lock(s), undo log entries 3  
  5. MySQL thread id 189619144, OS thread handle 140620050204416, query id 1148803197 10.200.17.37 pt_user updating  
  6. UPDATE `user_feed_26` SET  `notification` = '1' , `mtime` = '2020-10-03 09:11:11'  WHERE `user_id` = '2000000126212250'  AND `action` in ( 'deal','price_changed','ting_shou','house_new_picture','house_new_vr','price_changed_rise','on_shelf_again')  AND `notification` = '0' 
  7. *** (2) HOLDS THE LOCK(S):  
  8. RECORD LOCKS space id 2229 page no 263938 n bits 264 index idx_user_id of table `lianjia_user_feed`.`user_feed_26` trx id 6286508067 lock_mode X locks gap before rec 
  9. Record lock, heap no 83 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  10.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  11.  1: len 4; hex 6465616c; asc deal;; 
  12.  2: len 1; hex 81; asc  ;;  
  13.  3: len 12; hex 313034313032363731333238; asc 104102671328;;  
  14.  4: len 4; hex 95e14632; asc   F2;;  
  15. Record lock, heap no 93 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  16.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  17.  1: len 14; hex 6f6e5f7368656c665f616761696e; asc on_shelf_again;;  
  18.  2: len 1; hex 81; asc  ;;  
  19.  3: len 12; hex 313034313033373433363737; asc 104103743677;;  
  20.  4: len 4; hex 95f12ab5; asc   * ;;  
  21. *** 省略……  
  22. *** (2) WAITING FOR THIS LOCK TO BE GRANTED:  
  23. RECORD LOCKS space id 2229 page no 263938 n bits 264 index idx_user_id of table `lianjia_user_feed`.`user_feed_26` trx id 6286508067 lock_mode X locks gap before rec insert intention waiting 
  24. Record lock, heap no 87 PHYSICAL RECORD: n_fields 5; compact format; info bits 32  
  25.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  26.  1: len 15; hex 64697374726963745f7765656b6c79; asc district_weekly;;  
  27.  2: len 1; hex 80; asc  ;;  
  28.  3: len 8; hex 3233303038373831; asc 23008781;;  
  29.  4: len 4; hex 95f63035; asc   05;; 

事務二的日志,相比于事務一多了持有鎖的信息: 

  1.  *** (2) HOLDS THE LOCK(S):  
  2. RECORD LOCKS space id 2229 page no 263938 n bits 264 index idx_user_id of table `lianjia_user_feed`.`user_feed_26` trx id 6286508067 lock_mode X locks gap before rec 
  3. Record lock, heap no 83 PHYSICAL RECORD: n_fields 5; compact format; info bits 0 
  4.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  5.  1: len 4; hex 6465616c; asc deal;;  
  6.  2: len 1; hex 81; asc  ;;  
  7.  3: len 12; hex 313034313032363731333238; asc 104102671328;;  
  8.  4: len 4; hex 95e14632; asc   F2;;  
  9. Record lock, heap no 93 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  10.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  11.  1: len 14; hex 6f6e5f7368656c665f616761696e; asc on_shelf_again;;  
  12.  2: len 1; hex 81; asc  ;;  
  13.  3: len 12; hex 313034313033373433363737; asc 104103743677;;  
  14.  4: len 4; hex 95f12ab5; asc   * ;;  
  15. *** 省略…… 

從日志看,事務二持有一個記錄鎖,RECORD LOCKS這是個記錄鎖,space id為2229,page no為263938 并且通過索引信息可以看出,事務二恰好持有事務一需要的那行記錄鎖,即: 

  1. Record lock, heap no 93 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  2.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  3.  1: len 14; hex 6f6e5f7368656c665f616761696e; asc on_shelf_again;;  
  4.  2: len 1; hex 81; asc  ;;  
  5.  3: len 12; hex 313034313033373433363737; asc 104103743677;;  
  6.  4: len 4; hex 95f12ab5; asc   * ;;  
  7. lock_mode X locks gap before rec 表示這是一個排他鎖,并且是一個間隙鎖  
  8. *** (2) WAITING FOR THIS LOCK TO BE GRANTED:  
  9. RECORD LOCKS space id 2229 page no 263938 n bits 264 index idx_user_id of table `lianjia_user_feed`.`user_feed_26` trx id 6286508067 lock_mode X locks gap before rec insert intention waiting 
  10. Record lock, heap no 87 PHYSICAL RECORD: n_fields 5; compact format; info bits 32  
  11.  0: len 8; hex 80071afd5112d89a; asc     Q   ;;  
  12.  1: len 15; hex 64697374726963745f7765656b6c79; asc district_weekly;;  
  13.  2: len 1; hex 80; asc  ;;  
  14.  3: len 8; hex 3233303038373831; asc 23008781;;  
  15.  4: len 4; hex 95f63035; asc   05;; 

同樣,這里顯示的是事務二在等待什么鎖。RECORD LOCKS 表示記錄鎖,并且可以看出要加鎖的索引為idx_user_id,space id為2229,page no為263938 lock_mode X 標識該記錄鎖為排它鎖,insert intention waiting 表示要加的鎖為插入意向鎖,并處于鎖等待狀態。雖然,事務一的日志中沒有標明它持有了哪些鎖,但是結合事務二等待的鎖結構中 district_weekly 字段來看,事務一是持有該鎖的,因此,兩個事務形成了互相等待鎖釋放的場景,從而形成了死鎖。

那么疑問來了,兩個sql: 

  1. # sql1:  
  2. update `user_feed_26` set `notification` = 1, `mtime` = '2020-10-03 09:11:11' where `user_id` = 2000000126212250 and `action` in ('resblock_weekly', 'bizcircle_weekly', 'district_weekly') and `notification` = 0 
  3. # sql2:  
  4. UPDATE `user_feed_26` SET  `notification` = '1' , `mtime` = '2020-10-03 09:11:11'  WHERE `user_id` = '2000000126212250'  AND `action` in ( 'deal','price_changed','ting_shou','house_new_picture','house_new_vr','price_changed_rise','on_shelf_again')  AND `notification` = '0' 

明明兩個語句的where條件不一樣,也不交叉,為什么會占用彼此的鎖呢?

山窮水復

為了驗證這種case,我們在線下嘗試進行復現。表結構如下: 

  1. #CREATE TABLE `user_feed_26` (  
  2.   `feed_id` int(10) NOT NULL AUTO_INCREMENT,  
  3.   `user_id` bigint(20) NOT NULL,  
  4. ……  
  5.   PRIMARY KEY (`feed_id`),  
  6.   KEY `idx_user_id` (`user_id`,`action`,`notification`,`feed_target`),  
  7. …… 
  8. ENGINE=InnoDB AUTO_INCREMENT=371826027 DEFAULT CHARSET=utf8 COMMENT='用戶推送表'

但是無論如何,都是鎖等待,而不會形成死鎖。這是怎么回事呢?

帶著懷疑的態度,我們查看了一下語句的執行計劃:

通過執行計劃我們發現,這里并沒有走死鎖日志里出現的那個idx_user_id索引,而是走的主鍵索引,因此并沒有產生死鎖。

大膽猜測:是因為模擬的數據量太小,導致并沒有走復合索引。

于是,我們往線下模擬庫里灌入了大概100w左右的隨機數據,再次查看執行計劃:

果然,當數據量變大之后,就會走對應的復合索引了。再經過一次嘗試,果然復現出了線上那種死鎖場景,但是問題來了,為什么會出現這種情況呢?

柳暗花明

為了了解背后真實的原理,我們再次研讀了MySQL鎖相關的資料,也得知了事情的真相。

首先,簡單說一下MySQL加鎖的基本原則:

  •  原則 1:加鎖的基本單位是 next-key lock。next-key lock 是前開后閉區間;
  •  原則 2:查找過程中訪問到的對象才會加鎖。

優化 1:唯一索引上的等值查詢加鎖時,next-key lock 退化為行鎖。

優化 2:非唯一索引上的等值查詢加鎖時,對where條件中的值所在區間向右(后)遍歷時,該區間的右邊界不滿足等值條件的時候,next-key lock 退化為間隙鎖。這個比較難理解,舉個例子:

若在表ta的列a上有非唯一索引:index_a,該索引中存在的值為:1,1,3,3,7,9:當你執行select a from ta where ta.a=5時,就會從3開始往右(后)遍歷,此時對應的 是(3,7]但是由于該區間的最后一個值7不滿足=5的條件,因此該next-key lock就退化為gap lock (3,7)。

由此可知,當我們執行的update語句,在查詢的時候,給對應的索引idx_user_id加上了間隙鎖,從而互相之間產生了死鎖。舉個簡單的例子說明一下:

  •  事務2執行了一個update, where 條件為3,因此獲得了(1,3)的Gap鎖;
  •  事務1也執行了一個update,where條件為5,因此獲得了一個(5,+∞),同時等待(1,7)插入意向鎖;
  •  事務2又執行了一個update,where條件為8,那么他將等待(5,+∞)。

于是乎,死鎖就產生了。

那么,如何避免這種死鎖再次發生呢?

通過唯一索引(一般主鍵都是)來更新,先通過select語句查出符合條件的記錄的唯一索引,再通過唯一索引來更新。 

  1. select id from table where a=? and b=?;  
  2. update table set column=xxx where idid= id; 

避免在同一時間點運行多個對同一表進行讀寫的腳本,特別注意加鎖且操作數據量比較大的語句;我們經常會有一些定時腳本,避免它們在同一時間點運行;如本次事件所示,Gap 鎖往往是程序中導致死鎖的真兇,由于默認情況下 MySQL 的隔離級別是 RR,所以如果能確定幻讀和不可重復讀對應用的影響不大,可以考慮將隔離級別改成 RC,可以避免 Gap 鎖導致的死鎖。 

 

責任編輯:龐桂玉 來源: DBAplus社群
相關推薦

2018-09-05 09:33:41

DevOps轉型指標

2019-05-13 09:25:07

大數據數據分析隱私

2025-03-27 00:04:33

AIChatGPT生成模型

2025-05-16 07:56:55

Vue Router架構前端

2020-06-17 09:52:16

數據庫Redis技術

2017-10-09 12:05:57

優秀的代碼代碼量糟糕的代碼

2024-11-18 09:10:00

2025-11-17 03:00:00

2021-07-05 16:26:19

數據中心

2020-07-10 06:10:14

Python開發代碼

2023-07-21 15:05:04

人工智能智能汽車數字技術

2020-07-26 18:34:46

Python開發工具

2021-05-19 05:45:19

漏洞服務器網絡安全

2019-03-15 16:20:45

MySQL死鎖排查命令

2021-07-02 09:44:03

安全網絡購物DDoS

2021-05-12 09:42:25

AI 數據人工智能

2012-11-07 09:41:30

2025-02-05 14:16:55

OpenAI人形機器人Figure

2024-07-29 09:49:00

SQLMySQL執行

2021-07-30 15:32:41

網絡攻擊黑客網絡安全
點贊
收藏

51CTO技術棧公眾號

久久av综合网| 7777精品视频| 亚洲在线观看网站| 污污的网站在线免费观看| 成人黄色在线网站| 欧美一区二区三区精品电影| 手机毛片在线观看| 九九九九九九精品任你躁| 亚洲国产精品精华液网站| 欧美精品成人一区二区在线观看 | 欧美日韩精品一区二区| 亚洲欧美综合区自拍另类| 亚洲 激情 在线| www在线视频| 91女神在线视频| 国产日韩中文字幕在线| 亚洲一区欧美在线| 欧美gvvideo网站| 亚洲精品二三区| 中日韩av在线播放| 蜜桃视频动漫在线播放| 亚洲人成小说网站色在线| 免费看成人av| 亚洲国产www| 欧美aa在线视频| 国模精品系列视频| 一区二区三区四区五区| 精品产国自在拍| 亚洲电影av在线| 永久免费黄色片| 电影亚洲一区| 一本大道久久a久久精品综合| 日韩国产小视频| 在线免费看黄网站| 国产亚洲自拍一区| 精品久久久三级| www.国产三级| 国产一区二区三区在线看麻豆| 国产精品第100页| 青青青国产在线 | 成a人片亚洲日本久久| 国产主播精品在线| 成人小视频在线播放| 国产欧美亚洲一区| 久久久亚洲国产| 欧美激情国产精品免费| 亚洲激情中文在线| 日韩中文字幕精品视频| 阿v天堂2014| 精品国产美女| 国产亚洲精品综合一区91| 51调教丨国产调教视频| 国产一区二区三区亚洲| 精品av综合导航| 中文字幕一区二区三区人妻在线视频| 香蕉成人在线| 欧美人与性动xxxx| 五月天婷婷亚洲| 四虎精品在线观看| 911国产精品| 青娱乐国产精品视频| 国产精品麻豆| 欧美一级夜夜爽| 国产精品一级无码| 粉嫩一区二区三区四区公司1| 亚洲精品一区在线观看| 亚洲天堂2024| 青青久久av| 亚洲深夜福利视频| 日韩不卡av在线| 欧美成人自拍| 超薄丝袜一区二区| 国产精品第二十页| 亚洲欧美不卡| 国产精品福利在线观看网址| 亚洲在线精品视频| 国产超碰在线一区| 久久久久久九九| 韩国三级在线观看久| 国产精品激情偷乱一区二区∴| 一区二区三区偷拍| 污污视频在线| 精品毛片网大全| 日韩精品一区二区三区不卡| 国产精品久久乐| 制服丝袜亚洲精品中文字幕| 日本人dh亚洲人ⅹxx| 日韩一级电影| 最近2019免费中文字幕视频三| 亚洲一级二级片| 激情视频一区| 国产成人精品在线视频| 97成人在线观看| 成人手机在线视频| 日韩免费一区二区三区| a视频在线免费看| 五月激情丁香一区二区三区| 在线视频日韩一区| 一区二区三区在线资源| 日韩毛片在线看| 麻豆精品国产免费| 99riav1国产精品视频| 国产精品网址在线| 污视频在线免费| 中文字幕中文字幕一区二区| www.射射射| 丰满少妇一区| 亚洲国产一区二区三区在线观看 | 九九亚洲精品| 欧美另类交人妖| 亚洲成熟少妇视频在线观看| 国产精品自在欧美一区| 日韩精品不卡| 2001个疯子在线观看| 欧美日韩国产一区二区三区地区| 美女扒开腿免费视频| 天天插综合网| 热久久99这里有精品| 性色av蜜臀av| 国产精品久久午夜夜伦鲁鲁| 国产精品无码av在线播放| 国产情侣一区在线| 无需播放器亚洲| 激情图区综合网| 国产精品国产三级国产专区53| 国产美女性感在线观看懂色av| 一区二区成人在线| 艹b视频在线观看| 亚洲va久久| 午夜精品国产精品大乳美女| 国产欧美日韩成人| 国产午夜精品久久久久久免费视| 性一交一乱一伧国产女士spa| 国产精品伦一区二区| 亚洲视频在线免费看| 一区二区三区视频免费看| 国产高清不卡一区| 一本二本三本亚洲码| 久久av日韩| 中文字幕日韩高清| 中文在线a天堂| 久久久久久久久蜜桃| 妞干网在线视频观看| 亚洲国产精品免费视频| 欧美成人免费在线观看| 国产毛片毛片毛片毛片毛片| 国产精品美女久久久久久2018| 亚洲人成无码www久久久| 希岛爱理av免费一区二区| 97超级碰碰人国产在线观看| 少妇人妻偷人精品一区二区| 午夜精品久久久久久| 伊人久久一区二区三区| 亚洲国产影院| 韩国成人av| 一本大道色婷婷在线| 日韩经典一区二区三区| 欧美日韩一二三四区| www久久久久| 国产淫片av片久久久久久| 亚洲精品一级二级三级| 欧洲亚洲女同hd| 黄网在线观看| 精品视频123区在线观看| 欧美xxxooo| 国产在线精品不卡| 日韩精品一区二区在线视频| 国产精品毛片久久久| 91禁外国网站| 国产在线资源| 欧美另类z0zxhd电影| 一区视频免费观看| 成人av综合一区| 欧洲av无码放荡人妇网站| 欧美精选一区二区三区| 91中文在线观看| 好看的中文字幕在线播放| 日韩精品免费在线视频| 伊人成年综合网| 亚洲天堂成人网| 亚洲图片欧美另类| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲欧美小说色综合小说一区| 亚洲社区在线观看| 国产视频aaa| 精品免费在线视频| 免费看裸体网站| 国产美女视频一区| 日韩精品视频一区二区在线观看| 精品国产一区二区三区久久久樱花| 国产在线观看一区二区三区 | 久久99影视| 成人www视频在线观看| 波多野结衣中文字幕久久| 亚洲欧美制服第一页| 99久久免费国产精精品| 色综合久久中文综合久久牛| 欧美肥妇bbwbbw| 99热99精品| 孩娇小videos精品| 影音先锋国产精品| 夜夜爽www精品| 欧美日韩看看2015永久免费 | 欧美成人高清视频| 国产一二三在线观看| 精品国产一区久久| 中文字幕久久久久| 粉嫩老牛aⅴ一区二区三区 | 久久亚洲专区| 精品日韩电影| 久久中文字幕一区二区| 国产精欧美一区二区三区| 超碰在线资源| 精品国内自产拍在线观看| 亚洲欧美色视频| 日韩一区二区三区电影在线观看| 在线免费观看国产精品| 性做久久久久久久免费看| 九九精品视频免费| 国产视频亚洲色图| 国产日韩一区二区| 成人动漫视频在线观看完整版| 好男人www在线视频| 欧美系列一区二区| 国产香蕉视频在线| 亚洲精品成a人| 99热6这里只有精品| 久久亚洲一级片| 无码任你躁久久久久久老妇| 狠狠色丁香久久婷婷综合丁香| 国产999精品久久久影片官网| 高清毛片aaaaaaaaa片| 欧美日韩美女一区二区| 天天做天天爱夜夜爽| 亚洲线精品一区二区三区| 欧美黄色aaa| 国产精品成人一区二区三区夜夜夜 | 国产jizz18女人高潮| 久久久久久99久久久精品网站| 大尺度做爰床戏呻吟舒畅| 高清成人免费视频| 69久久精品无码一区二区| 黑人精品欧美一区二区蜜桃| 制服丝袜激情欧洲亚洲| 成人性生交视频免费观看| 免费观看久久久4p| 九九热免费精品视频| 欧美一级一区| www一区二区www免费| 国产日韩亚洲欧美精品| 9久久9毛片又大又硬又粗| 伊人天天综合| 缅甸午夜性猛交xxxx| 一区在线免费| 欧美一级片免费播放| 亚洲成人中文| 久久久性生活视频| 在线综合亚洲| 欧美三级午夜理伦三级| 久久免费高清| 我看黄色一级片| 久久成人久久爱| 亚洲自拍第三页| 国产一区二区导航在线播放| 波多野结衣免费观看| 国产成人亚洲综合a∨婷婷| 亚洲精品久久久久久| 北条麻妃一区二区三区| 日韩少妇一区二区| 久久综合色综合88| 免费看的黄色网| 亚洲私人影院在线观看| 69av.com| 精品美女永久免费视频| 亚洲图片欧美日韩| 欧美日韩国产在线观看| 亚洲精品国产片| 日韩精品免费看| 在线视频二区| 欧美激情一区二区三区在线视频观看 | 婷婷久久综合九色综合99蜜桃| 91精品视频免费| 精品国产乱子伦一区二区| 欧美日韩国产高清视频| 天天av综合| 欧美不卡在线播放| 青草av.久久免费一区| 中文字幕avav| 久久人人97超碰com| 在线观看黄网址| 亚洲成人av一区二区| 黄色大全在线观看| 日韩欧美电影一区| 黄色大片在线看| 欧美人成在线视频| 日日橹狠狠爱欧美超碰| 四虎在线免费看| 欧美mv和日韩mv国产网站| 先锋av资源站| 日韩中文字幕国产| 欧美13videosex性极品| 国产专区精品视频| 性欧美lx╳lx╳| 中文字幕精品在线播放| 久久久国产精品一区二区中文| 亚洲成人av免费观看| 999国产精品视频| 国产欧美日韩综合精品二区| 欧美日韩一二三四| 和岳每晚弄的高潮嗷嗷叫视频| 蜜臀av一级做a爰片久久| 国产精品久久无码| 亚洲女人****多毛耸耸8| 自拍偷拍校园春色| 亚洲精品久久久久久下一站| 大片免费在线观看| 国产精品无码专区在线观看| 亚洲成人一品| 久艹在线免费观看| 精品一区二区三区在线播放| wwwwxxxx国产| 欧美日韩激情网| 性生活黄色大片| 久久香蕉频线观| 国产精品久久久久77777丨| 久久国产精品久久| 亚洲小说欧美另类婷婷| 91香蕉国产线在线观看| 国产精品日产欧美久久久久| 影音先锋在线国产| 日韩av一卡二卡| 里番在线播放| 亚洲在线视频福利| 午夜精品一区二区三区国产| 色悠悠久久综合网| 国产婷婷色一区二区三区| 你懂的国产在线| 亚洲激情中文字幕| 99爱在线观看| 国产伦精品一区二区三毛| 欧美日韩亚洲一区| 黄色片子免费看| 亚洲日本在线视频观看| 国产精品久久久久久在线| 深夜福利一区二区| 久久久加勒比| 伊人色综合影院| 精品一二线国产| 成人免费视频网站入口::| 日韩一区二区中文字幕| 97影院秋霞午夜在线观看| 96国产粉嫩美女| 一区二区在线| avtt中文字幕| 亚洲高清不卡在线观看| 搡老岳熟女国产熟妇| 午夜欧美不卡精品aaaaa| 日韩高清电影免费| 91看片就是不一样| 国产午夜亚洲精品理论片色戒 | 欧美特黄级在线| 看电影就来5566av视频在线播放| 国产精品成人免费电影| 日韩一区欧美| 91人妻一区二区三区| 亚洲一区二区精品视频| 午夜小视频免费| 国产精品第100页| 亚洲女同一区| 国产日韩视频一区| 日韩欧美亚洲成人| 日本中文字幕在线看| 91九色露脸| 亚洲欧美日韩一区在线观看| 少妇一级黄色片| 日韩欧美综合在线| 韩国精品一区| 天天好比中文综合网| 国产呦萝稀缺另类资源| 日韩免费一级片| 国产亚洲精品久久| av日韩久久| 免费无遮挡无码永久视频| 欧美高清在线精品一区| 天天影视色综合| 亚洲免费观看高清完整版在线观看| 成人午夜免费在线观看| 日韩av电影在线免费播放| 天天做天天爱天天综合网| 亚洲av成人片色在线观看高潮| 欧美综合一区二区| 日本伦理一区二区| 欧美一区1区三区3区公司| 国产乱码精品一区二区三| 亚洲婷婷综合网| 欧美美女操人视频| 精品中文一区| 亚洲欧美日韩网站| 欧美日韩亚洲精品内裤| 国产区在线观看|