精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

黄色美女网站在线观看| 波多野结衣不卡视频| 美女搞黄视频在线观看| 欧美国产综合一区二区| 91久久久在线| 日韩精品国产一区二区| av一区二区高清| 日韩女优制服丝袜电影| 波多野结衣家庭教师视频| 日本在线免费中文字幕| 99re热视频精品| 国产精品网红直播| 国产午夜精品无码| 久久国产成人精品| 亚洲精品美女在线| 色哟哟在线观看视频| 中文字幕不卡三区视频| 伊人色综合久久天天| 欧美一进一出视频| 亚洲乱熟女一区二区| 人人狠狠综合久久亚洲| 97视频在线观看视频免费视频 | 精品久久久国产精品999| 亚洲在线视频一区二区| 男人的天堂在线免费视频| 欧美国产视频| 午夜精品一区在线观看| 亚洲区成人777777精品| 国产视频福利在线| 91在线精品一区二区| 99re视频在线| 国产毛片一区二区三区va在线| 欧美亚洲在线| 国模吧一区二区三区| 男人的天堂久久久| 国产精品99久久精品| 亚洲偷熟乱区亚洲香蕉av| 69xxx免费视频| 日本亚洲视频| 欧美一区二区三区视频在线| jizz大全欧美jizzcom| 先锋欧美三级| 在线欧美日韩国产| 一本久道综合色婷婷五月| 日本蜜桃在线观看视频| 亚洲国产成人高清精品| 国产精品视频网站在线观看| а√天堂在线官网| 亚洲天堂av老司机| 艳母动漫在线免费观看| 精品麻豆一区二区三区| 日韩毛片高清在线播放| 亚洲欧美久久久久一区二区三区| 九九在线视频| 亚洲国产精品精华液2区45| 日本高清一区| h视频网站在线观看| 国产精品美女久久久久久久久 | 午夜一区不卡| 26uuu国产精品视频| 制服.丝袜.亚洲.中文.综合懂色| 日韩午夜精品| 欧洲精品在线视频| 久久久精品毛片| 蜜臀国产一区二区三区在线播放| 国产日韩欧美中文在线播放| 国产欧美熟妇另类久久久| 国产一区二区三区综合| 国产 高清 精品 在线 a| 蜜桃久久一区二区三区| 久久一区二区视频| 香蕉久久夜色| av中文字幕一区二区三区| 中文字幕日韩av资源站| 中国女人做爰视频| 免费毛片b在线观看| 欧美午夜宅男影院在线观看| 国产精品乱码久久久久| 色综合视频一区二区三区日韩| 欧美精品高清视频| 亚洲黄色小说在线观看| 亚洲三级网页| 欧美精品日韩www.p站| 国产精品第72页| 视频一区国产视频| 2014国产精品| 麻豆影视在线| 一区二区三区免费观看| 国产黄视频在线| 亚洲福利影视| 日韩av影片在线观看| 青青草自拍偷拍| 激情偷拍久久| 国产精品最新在线观看| 欧美一级特黄aaaaaa大片在线观看| 久久综合色播五月| 国产精品美女在线播放| 毛片在线网站| 欧美剧情片在线观看| 国产成人无码一区二区在线观看| 日韩av有码| 97免费中文视频在线观看| 在线观看不卡的av| 99久久夜色精品国产网站| 亚洲一区影院| 成人线上视频| 亚洲国产精品小视频| a级黄色免费视频| 国产视频久久| 欧美成人久久久| 欧美a∨亚洲欧美亚洲| 国产精品综合av一区二区国产馆| 欧美日本亚洲| www.九色在线| 日韩小视频在线观看专区| 国产熟女一区二区| 国产精品毛片在线| 成人在线观看网址| 国产在线激情| 欧美日韩国产乱码电影| 在线免费观看麻豆| 亚洲美女少妇无套啪啪呻吟| 亚洲影视中文字幕| 日韩毛片久久久| 一本到不卡精品视频在线观看| wwwxxxx在线观看| 亚洲91精品| 国产精品视频永久免费播放| 日本五码在线| 欧美日韩精品二区| 日韩av无码一区二区三区不卡| 亚洲精品一区二区在线看| 国产精品aaaa| 免费动漫网站在线观看| 欧美午夜精品久久久久久久| 野战少妇38p| 欧美另类综合| 97久久天天综合色天天综合色hd| 米奇精品一区二区三区| 欧美午夜精品理论片a级按摩| 全黄一级裸体片| 久久不射网站| 欧美日韩亚洲在线| 欧美一区 二区 三区| 亚洲精品一二区| 中文字幕黄色片| 91在线你懂得| 成年人免费在线播放| 亚洲日本三级| 国产精品久久久久久久一区探花 | 在线视频免费一区二区| 日本黄色中文字幕| 中文字幕不卡三区| 一区二区免费av| 亚洲精品国产首次亮相| 成人区精品一区二区| 天天干在线视频论坛| 精品少妇一区二区三区日产乱码| 美女视频黄免费| 成人av网站在线观看免费| 国产毛片视频网站| 综合国产视频| 成人激情黄色网| 污污视频在线看| 日韩av在线网| 少妇无套内谢久久久久| 国产精品高潮呻吟| 久久av一区二区三| 99精品免费| 亚洲国产精品视频一区| 亚洲黑人在线| 久久免费视频网站| 你懂的免费在线观看| 欧美性做爰猛烈叫床潮| 午夜国产福利一区二区| 成人毛片视频在线观看| 久久人妻精品白浆国产| 51精产品一区一区三区| 精品欧美一区二区久久久伦| 成人在线视频播放| 久久综合伊人77777| 日韩在线观看视频一区| 在线观看一区不卡| 国产又黄又爽又无遮挡| 久久午夜色播影院免费高清| 精品亚洲一区二区三区四区| 国内一区二区三区| 性欧美.com| 豆花视频一区二区| 国产精品亚洲一区二区三区| 欧美女同一区| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 妓院一钑片免看黄大片| 国产精品久久久久无码av| 亚洲va男人天堂| 国产不卡网站| 欧美激情女人20p| 成人高清网站| 亚洲成人av中文字幕| 97成人免费视频| 韩曰欧美视频免费观看| 日本青青草视频| 国产午夜精品在线观看| 制服.丝袜.亚洲.中文.综合懂| 久久夜色精品| 国产精品专区在线| 中文字幕一区二区三区乱码图片| 欧美精品一区在线| ccyy激情综合| 亚洲精品免费一区二区三区| 无人区在线高清完整免费版 一区二| 久久99久久99精品中文字幕| 大乳在线免费观看| 日韩久久免费电影| 人妻一区二区三区| 日韩欧美在线网站| 一级黄色片免费| 精品久久久久久电影| 久草免费在线观看视频| 中文字幕一区二区三区不卡| 手机免费看av| 91在线视频免费91| 黄色av网址在线观看| 国产激情视频一区二区在线观看| 欧美wwwwwww| 轻轻草成人在线| 亚洲国产精品毛片av不卡在线| 一区二区激情| av在线播放亚洲| 尤物在线精品| 国内精品视频一区二区三区| 色综合一区二区日本韩国亚洲| 日韩美女av在线免费观看| 国产伦理精品| 91精品国产高清久久久久久久久| 国精产品一区一区三区mba下载| 久久九九热免费视频| 午夜视频在线看| 日韩在线不卡视频| 伦xxxx在线| 欧美超级乱淫片喷水| 污视频网站在线免费| 免费av一区二区| www.在线视频| 欧美高清电影在线看| 在线中文字幕视频观看| 欧美成人国产va精品日本一级| 米奇777四色精品人人爽| 久久影院中文字幕| 手机在线免费观看av| 欧美激情伊人电影| 99爱在线观看| 日本高清不卡在线| 日本一道高清亚洲日美韩| 国产福利视频一区二区| 另类一区二区| 亚洲aⅴ男人的天堂在线观看 | 蜜臀av国内免费精品久久久夜夜| 久久99久久99精品免观看粉嫩| 国产精品一品| 日韩av手机在线| 在线视频成人| 国产91一区二区三区| 视频福利一区| 五月天亚洲综合| 亚洲国产精品久久久久蝴蝶传媒| 欧美在线观看黄| 亚洲欧美日本日韩| 91制片厂毛片| 国产成人av影院| 国产高清自拍视频| 国产精品麻豆久久久| 欧美色图亚洲视频| 大桥未久av一区二区三区| 姑娘第5集在线观看免费好剧| 欧美精品高清视频| 天堂v视频永久在线播放| 亚洲欧洲黄色网| 黄色在线视频网站| 97视频人免费观看| 亚洲午夜国产成人| 久久久久久久久久码影片| 久久亚洲精品中文字幕蜜潮电影| 黄色成人在线免费观看| 久久aⅴ国产紧身牛仔裤| 午夜免费福利网站| 久久一留热品黄| 欧美黄色免费看| 在线中文字幕不卡| 性欧美8khd高清极品| 国产亚洲成av人片在线观看桃| gogo在线高清视频| 日韩免费中文字幕| a级日韩大片| 在线国产99| 久久黄色网页| 亚洲成人福利视频| 中文无字幕一区二区三区| 国产精品第一页在线观看| 欧美男男青年gay1069videost| 少妇人妻一区二区| 久久国产精品久久久久久久久久| xxx欧美xxx| 国产精品免费在线播放| 久久中文亚洲字幕| 国产第一页视频| 成人精品鲁一区一区二区| 色哟哟一一国产精品| 一本色道久久综合亚洲91| 国精产品一品二品国精品69xx | 亚洲国产成人91精品| 国产三区视频在线观看| 国产成人小视频在线观看| 牛牛精品成人免费视频| 日本a级片在线观看| 麻豆91精品91久久久的内涵| 亚洲午夜久久久久久久久红桃| 亚洲最色的网站| 国产免费av观看| 色婷婷综合成人av| 亚洲成人av观看| 久久国产精品久久| 99热免费精品在线观看| 亚洲丝袜在线观看| 亚洲免费在线观看| 亚洲综合一区中| 中文字幕精品av| 欧美日韩免费观看视频| 欧美激情视频一区二区三区| 在线国产精品一区| 美女久久久久久久久| 一二三区精品视频| 国产黄色片免费| 欧美大片免费看| 午夜视频一区二区在线观看| 熟女视频一区二区三区| 精品午夜久久福利影院| 北条麻妃在线观看视频| 欧美乱熟臀69xxxxxx| 三区四区电影在线观看| 国产精品扒开腿做爽爽爽的视频| 国产videos久久| 男人的天堂日韩| 国产精品美女久久福利网站| 中文字幕日本人妻久久久免费 | 久久成人羞羞网站| 麻豆一区在线观看| 欧美一级生活片| 伦理在线一区| 精品国产一区二区三区麻豆免费观看完整版 | 欧美另类一区二区三区| 午夜在线视频| 91免费版网站在线观看| 狠狠色综合网| 搡老熟女老女人一区二区| 色婷婷久久一区二区三区麻豆| 色综合成人av| 国产精品激情自拍| 99久久夜色精品国产亚洲96| 四虎成人在线播放| 亚洲午夜三级在线| 色就是色亚洲色图| 国产精品男人爽免费视频1| 99久久精品国产亚洲精品| 中文字幕第三区| 激情久久av一区av二区av三区| 黄色片在线播放| 亚洲v日韩v综合v精品v| 99视频精品免费观看| www.99热| 日韩欧美国产午夜精品| 天堂网在线最新版www中文网| 日本亚洲导航| 国产精品亚洲一区二区三区在线| 日产电影一区二区三区| 国产性色av一区二区| 欧美国产中文高清| av网站在线观看不卡| 国产精品久久久久久久久图文区| www.天天干.com| 国产福利视频一区| 国产精品magnet| 30一40一50老女人毛片| 7799精品视频| 乡村艳史在线观看| 国产成人免费高清视频| 91视频在线看| 国产女人18毛片水18精| 日本午夜在线亚洲.国产| 亚洲精品网址| 婷婷色一区二区三区| 日韩午夜av电影| 日本国产欧美| 黄页免费在线观看视频| 国产精品久久久99| 你懂的视频在线播放| 超碰在线97av| 久久精品国产秦先生| 亚洲天堂av片| 欧美大片在线免费观看|