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

MySQL的死鎖系列之鎖的類型以及加鎖原理

數據庫 MySQL
由于開發任務緊急,只是暫時規避了一下,但是對觸發死鎖的原因和相關原理不甚了解,于是這幾天一直在查閱相關資料,總結出一個系列文章供大家參考,本篇是上篇,主要介紹 MySQL 加鎖原理和鎖的不同模式或類型的基本知識。

本文轉載自微信公眾號「程序員歷小冰」,轉載本文請聯系程序員歷小冰公眾號。

[[328848]]

疫情期間在家工作時,同事使用了 insert into on duplicate key update 語句進行插入去重,但是在測試過程中發生了死鎖現象:

  1. ERROR 1213 (40001): Deadlock found when trying to get lock;  
  2.  
  3. try restarting transaction 

由于開發任務緊急,只是暫時規避了一下,但是對觸發死鎖的原因和相關原理不甚了解,于是這幾天一直在查閱相關資料,總結出一個系列文章供大家參考,本篇是上篇,主要介紹 MySQL 加鎖原理和鎖的不同模式或類型的基本知識。后續會講解常見語句的加鎖情況和通過 MySQL 死鎖日志分析死鎖原因。

由于本篇文章涉及很多 MySQL 的基礎知識,大家可以自行閱讀我之前的 MySQL系列文章《MySQL探秘》(公眾號菜單處可進入系列文章)中的對應章節。

表鎖和行鎖

我們首先來了解一下表鎖和行鎖:表鎖是指對一整張表加鎖,一般是 DDL 處理時使用;而行鎖則是鎖定某一行或者某幾行,或者行與行之間的間隙。

表鎖由 MySQL Server 實現,行鎖則是存儲引擎實現,不同的引擎實現的不同。在 MySQL 的常用引擎中 InnoDB 支持行鎖,而 MyISAM 則只能使用 MySQL Server 提供的表鎖。

 

表鎖

表鎖由 MySQL Server 實現,一般在執行 DDL 語句時會對整個表進行加鎖,比如說 ALTER TABLE 等操作。在執行 SQL 語句時,也可以明確指定對某個表進行加鎖。

  1. mysql> lock table user read(write); # 分為讀鎖和寫鎖 
  2.  
  3. Query OK, 0 rows affected (0.00 sec) 
  4.  
  5.  
  6.  
  7.  
  8. mysql> select * from user where id = 100; # 成功 
  9.  
  10. mysql> select * from role where id = 100; # 失敗,未提前獲取該 role的讀表鎖 
  11.  
  12. mysql> update user set name = 'Tom' where id = 100; # 失敗,未提前獲得user的寫表鎖 
  13.  
  14.  
  15.  
  16.  
  17. mysql> unlock tables; # 顯示釋放表鎖 
  18.  
  19. Query OK, 0 rows affected (0.00 sec) 

表鎖使用的是一次性鎖技術,也就是說,在會話開始的地方使用 lock 命令將后續需要用到的表都加上鎖,在表釋放前,只能訪問這些加鎖的表,不能訪問其他表,直到最后通過 unlock tables 釋放所有表鎖。

除了使用 unlock tables 顯示釋放鎖之外,會話持有其他表鎖時執行lock table 語句會釋放會話之前持有的鎖;會話持有其他表鎖時執行 start transaction 或者 begin 開啟事務時,也會釋放之前持有的鎖。

行鎖

不同存儲引擎的行鎖實現不同,后續沒有特別說明,則行鎖特指 InnoDB 實現的行鎖。

在了解 InnoDB 的加鎖原理前,需要對其存儲結構有一定的了解。InnoDB 是聚簇索引,也就是 B+樹的葉節點既存儲了主鍵索引也存儲了數據行。而 InnoDB 的二級索引的葉節點存儲的則是主鍵值,所以通過二級索引查詢數據時,還需要拿對應的主鍵去聚簇索引中再次進行查詢。關于 InnoDB 和 MyISAM 的索引的詳細知識可以閱讀《Mysql探索(一):B+Tree索引》一文。

 

下面以兩條 SQL 的執行為例,講解一下 InnoDB 對于單行數據的加鎖原理。

  1. update user set age = 10 where id = 49; 
  2.  
  3. update user set age = 10 where name = 'Tom'

第一條 SQL 使用主鍵索引來查詢,則只需要在 id = 49 這個主鍵索引上加上寫鎖;第二條 SQL 則使用二級索引來查詢,則首先在 name = Tom 這個索引上加寫鎖,然后由于使用 InnoDB 二級索引還需再次根據主鍵索引查詢,所以還需要在 id = 49 這個主鍵索引上加寫鎖,如上圖所示。

也就是說使用主鍵索引需要加一把鎖,使用二級索引需要在二級索引和主鍵索引上各加一把鎖。

根據索引對單行數據進行更新的加鎖原理了解了,那如果更新操作涉及多個行呢,比如下面 SQL 的執行場景。

  1. update user set age = 10 where id > 49; 

上述 SQL 的執行過程如下圖所示。MySQL Server 會根據 WHERE 條件讀取第一條滿足條件的記錄,然后 InnoDB 引擎會將第一條記錄返回并加鎖,接著 MySQL Server 發起更新改行記錄的 UPDATE 請求,更新這條記錄。一條記錄操作完成,再讀取下一條記錄,直至沒有匹配的記錄為止。

 

這種場景下的鎖的釋放較為復雜,有多種的優化方式,我對這塊暫時還沒有了解,還請知道的小伙伴在下方留言解釋。

下面主要依次介紹 InnoDB 中鎖的模式和類型,鎖的類型是指鎖的粒度或者鎖具體加在什么地方;而鎖模式描述的是鎖的兼容性,也就是加的是什么鎖,比如寫鎖或者讀鎖。

內容基本來自于 MySQL 的技術文檔 innodb-lock 一章,感興趣的同學可以直接去閱讀原文,原文地址為見文章末尾。

行鎖的模式

鎖的模式有:讀意向鎖,寫意向鎖,讀鎖,寫鎖和自增鎖(auto_inc),下面我們依次來看。

讀寫鎖

讀鎖,又稱共享鎖(Share locks,簡稱 S 鎖),加了讀鎖的記錄,所有的事務都可以讀取,但是不能修改,并且可同時有多個事務對記錄加讀鎖。

寫鎖,又稱排他鎖(Exclusive locks,簡稱 X 鎖),或獨占鎖,對記錄加了排他鎖之后,只有擁有該鎖的事務可以讀取和修改,其他事務都不可以讀取和修改,并且同一時間只能有一個事務加寫鎖。

讀寫意向鎖

由于表鎖和行鎖雖然鎖定范圍不同,但是會相互沖突。所以當你要加表鎖時,勢必要先遍歷該表的所有記錄,判斷是否加有排他鎖。這種遍歷檢查的方式顯然是一種低效的方式,MySQL 引入了意向鎖,來檢測表鎖和行鎖的沖突。

意向鎖也是表級鎖,也可分為讀意向鎖(IS 鎖)和寫意向鎖(IX 鎖)。當事務要在記錄上加上讀鎖或寫鎖時,要首先在表上加上意向鎖。這樣判斷表中是否有記錄加鎖就很簡單了,只要看下表上是否有意向鎖就行了。

意向鎖之間是不會產生沖突的,也不和 AUTO_INC 表鎖沖突,它只會阻塞表級讀鎖或表級寫鎖,另外,意向鎖也不會和行鎖沖突,行鎖只會和行鎖沖突。

自增鎖

AUTOINC 鎖又叫自增鎖(一般簡寫成 AI 鎖),是一種表鎖,當表中有自增列(AUTOINCREMENT)時出現。當插入表中有自增列時,數據庫需要自動生成自增值,它會先為該表加 AUTOINC 表鎖,阻塞其他事務的插入操作,這樣保證生成的自增值肯定是唯一的。AUTOINC 鎖具有如下特點:

  • AUTO_INC 鎖互不兼容,也就是說同一張表同時只允許有一個自增鎖;
  • 自增值一旦分配了就會 +1,如果事務回滾,自增值也不會減回去,所以自增值可能會出現中斷的情況。

顯然,AUTOINC 表鎖會導致并發插入的效率降低,為了提高插入的并發性,MySQL 從 5.1.22 版本開始,引入了一種可選的輕量級鎖(mutex)機制來代替 AUTOINC 鎖,可以通過參數 innodbautoinclockmode 來靈活控制分配自增值時的并發策略。具體可以參考 MySQL 的 AUTOINCREMENT Handling in InnoDB 一文,鏈接在文末。

不同模式鎖的兼容矩陣

下面是各個表鎖之間的兼容矩陣。

 

總結起來有下面幾點:

  • 意向鎖之間互不沖突;
  • S 鎖只和 S/IS 鎖兼容,和其他鎖都沖突;
  • X 鎖和其他所有鎖都沖突;
  • AI 鎖只和意向鎖兼容;

行鎖的類型

根據鎖的粒度可以把鎖細分為表鎖和行鎖,行鎖根據場景的不同又可以進一步細分,依次為 Next-Key Lock,Gap Lock 間隙鎖,Record Lock 記錄鎖和插入意向 GAP 鎖。

不同的鎖鎖定的位置是不同的,比如說記錄鎖只鎖住對應的記錄,而間隙鎖鎖住記錄和記錄之間的間隔,Next-Key Lock 則所屬記錄和記錄之前的間隙。不同類型鎖的鎖定范圍大致如下圖所示。

 

下面我們來依次了解一下不同的類型的鎖。

記錄鎖

記錄鎖是最簡單的行鎖,并沒有什么好說的。上邊描述 InnoDB 加鎖原理中的鎖就是記錄鎖,只鎖住 id = 49 或者 name = 'Tom' 這一條記錄。

當 SQL 語句無法使用索引時,會進行全表掃描,這個時候 MySQL 會給整張表的所有數據行加記錄鎖,再由 MySQL Server 層進行過濾。但是,在 MySQL Server 層進行過濾的時候,如果發現不滿足 WHERE 條件,會釋放對應記錄的鎖。這樣做,保證了最后只會持有滿足條件記錄上的鎖,但是每條記錄的加鎖操作還是不能省略的。

所以更新操作必須要根據索引進行操作,沒有索引時,不僅會消耗大量的鎖資源,增加數據庫的開銷,還會極大的降低了數據庫的并發性能。

間隙鎖

還是最開始更新用戶年齡的例子,如果 id = 49 這條記錄不存在,這個 SQL 語句還會加鎖嗎?答案是可能有,這取決于數據庫的隔離級別。這種情況下,在 RC 隔離級別不會加任何鎖,在 RR 隔離級別會在 id = 49 前后兩個索引之間加上間隙鎖。

間隙鎖是一種加在兩個索引之間的鎖,或者加在第一個索引之前,或最后一個索引之后的間隙。這個間隙可以跨一個索引記錄,多個索引記錄,甚至是空的。使用間隙鎖可以防止其他事務在這個范圍內插入或修改記錄,保證兩次讀取這個范圍內的記錄不會變,從而不會出現幻讀現象。

值得注意的是,間隙鎖和間隙鎖之間是互不沖突的,間隙鎖唯一的作用就是為了防止其他事務的插入,所以加間隙 S 鎖和加間隙 X 鎖沒有任何區別。

Next-Key 鎖

Next-key鎖是記錄鎖和間隙鎖的組合,它指的是加在某條記錄以及這條記錄前面間隙上的鎖。假設一個索引包含 15、18、20 ,30,49,50 這幾個值,可能的 Next-key 鎖如下:

  1. (-∞, 15],(15, 18],(18, 20],(20, 30],(30, 49],(49, 50],(50, +∞) 

通常我們都用這種左開右閉區間來表示 Next-key 鎖,其中,圓括號表示不包含該記錄,方括號表示包含該記錄。前面四個都是 Next-key 鎖,最后一個為間隙鎖。和間隙鎖一樣,在 RC 隔離級別下沒有 Next-key 鎖,只有 RR 隔離級別才有。還是之前的例子,如果 id 不是主鍵,而是二級索引,且不是唯一索引,那么這個 SQL 在 RR 隔離級別下就會加如下的 Next-key 鎖 (30, 49](49, 50)

此時如果插入一條 id = 31 的記錄將會阻塞住。之所以要把 id = 49 前后的間隙都鎖住,仍然是為了解決幻讀問題,因為 id 是非唯一索引,所以 id = 49 可能會有多條記錄,為了防止再插入一條 id = 49 的記錄。

插入意向鎖

插入意向鎖是一種特殊的間隙鎖(簡寫成 II GAP)表示插入的意向,只有在 INSERT 的時候才會有這個鎖。注意,這個鎖雖然也叫意向鎖,但是和上面介紹的表級意向鎖是兩個完全不同的概念,不要搞混了。

插入意向鎖和插入意向鎖之間互不沖突,所以可以在同一個間隙中有多個事務同時插入不同索引的記錄。譬如在上面的例子中,id = 30 和 id = 49 之間如果有兩個事務要同時分別插入 id = 32 和 id = 33 是沒問題的,雖然兩個事務都會在 id = 30 和 id = 50 之間加上插入意向鎖,但是不會沖突。

插入意向鎖只會和間隙鎖或 Next-key 鎖沖突,正如上面所說,間隙鎖唯一的作用就是防止其他事務插入記錄造成幻讀,正是由于在執行 INSERT 語句時需要加插入意向鎖,而插入意向鎖和間隙鎖沖突,從而阻止了插入操作的執行。

不同類型鎖的兼容矩陣

不同類型鎖的兼容下如下圖所示。

 

其中,第一行表示已有的鎖,第一列表示要加的鎖。插入意向鎖較為特殊,所以我們先對插入意向鎖做個總結,如下:

插入意向鎖不影響其他事務加其他任何鎖。也就是說,一個事務已經獲取了插入意向鎖,對其他事務是沒有任何影響的;

插入意向鎖與間隙鎖和 Next-key 鎖沖突。也就是說,一個事務想要獲取插入意向鎖,如果有其他事務已經加了間隙鎖或 Next-key 鎖,則會阻塞。

其他類型的鎖的規則較為簡單:

間隙鎖不和其他鎖(不包括插入意向鎖)沖突;

 

記錄鎖和記錄鎖沖突,Next-key 鎖和 Next-key 鎖沖突,記錄鎖和 Next-key 鎖沖突;

 

責任編輯:武曉燕 來源: 程序員歷小冰
相關推薦

2020-07-16 21:20:08

數據庫MySQL死鎖

2017-06-07 16:10:24

Mysql死鎖死鎖日志

2021-06-30 14:56:12

Redisson分布式公平鎖

2019-10-17 08:51:00

Java悲觀鎖Monitor

2018-07-31 10:10:06

MySQLInnoDB死鎖

2021-07-01 09:42:08

Redisson分布式

2021-03-26 10:40:16

MySQL鎖等待死鎖

2023-11-23 08:31:51

競爭鎖共享字段

2025-11-10 08:41:06

2021-07-03 17:45:57

分布式Redisson MultiLock

2021-11-26 09:53:55

MYSQL開發數據庫

2019-03-15 16:20:45

MySQL死鎖排查命令

2023-11-09 11:56:28

MySQL死鎖

2019-06-03 15:15:09

MySQL索引數據庫

2010-06-07 13:30:15

2023-06-09 07:59:37

多線程編程鎖機制

2024-12-30 14:58:37

2024-03-04 07:37:40

MySQL記錄鎖

2022-08-04 15:31:45

MySQL加鎖機制死鎖

2010-06-29 17:32:13

SQL Server鎖
點贊
收藏

51CTO技術棧公眾號

国产精品视频一区在线观看| ●精品国产综合乱码久久久久| 午夜私人影院久久久久| 亚洲美女av在线播放| 亚洲小视频在线播放| 在线免费观看av片| 欧美伦理在线视频| 大伊人狠狠躁夜夜躁av一区 | 91吃瓜在线观看| 国产亚洲一卡2卡3卡4卡新区 | 26uuu成人网一区二区三区| 欧美wwwxxxx| 日本在线播放一区二区| 高清国产福利在线观看| 亚洲女人av| 日韩精品一区二区三区第95| 欧美不卡在线播放| 韩国av免费在线观看| 欧美国产日本| 日韩一区二区三| 亚洲成年人专区| 国产视频一区二区三| 久久久久亚洲| 91精品国产一区二区三区蜜臀| 亚洲精品在线免费看| 伊人成人在线观看| 99久久久久国产精品| 欧美日韩精品二区第二页| 亚洲成色最大综合在线| 日本韩国免费观看| 亚洲在线黄色| 欧美大片在线看| 这里只有精品在线观看视频| 97超碰免费在线| 中文字幕日韩av资源站| 日韩欧美亚洲日产国产| 在线观看免费视频a| 99精品欧美| 国产亚洲欧洲黄色| 中文字幕视频三区| 日韩毛片免费观看| 最新国产の精品合集bt伙计| 久久久婷婷一区二区三区不卡| 97人妻一区二区精品视频| 欧美日韩中文字幕一区二区三区| 精品国产伦一区二区三区观看体验 | 亚洲欧美国产77777| 91丨九色丨国产| 男人的天堂一区| 成人激情诱惑| 日韩欧美自拍偷拍| 激情在线观看视频| 国产777精品精品热热热一区二区| 99国产欧美久久久精品| 国产精品 欧美在线| 日韩激情小视频| 高潮久久久久久久久久久久久久| 精品美女永久免费视频| 日韩av电影免费观看| 欧美午夜黄色| 国产精品亚洲专一区二区三区| 97精品在线视频| 美国美女黄色片| 成人18夜夜网深夜福利网| 欧美日韩国产黄| 春日野结衣av| 3d玉蒲团在线观看| 26uuu欧美| 欧美性天天影院| 亚洲精品国产一区二| 日韩国产欧美一区二区三区| 欧美成人免费在线观看| 欧美另类视频在线观看| 色狮一区二区三区四区视频| 亚洲国产天堂久久综合| 亚洲最大天堂网| 韩国一区二区三区视频| 一本一道久久a久久精品| a级网站在线观看| 免费在线黄色影片| 高清av一区二区| 国产精品免费看久久久香蕉| 国产一级片免费观看| 日韩精品免费一区二区三区| www.日韩视频| 极品人妻videosss人妻| 久久黄色影视| 精品欧美一区二区三区精品久久| 亚洲成人福利在线| 欧美一区 二区 三区| 欧美日韩一区二区在线观看视频 | 美女mm1313爽爽久久久蜜臀| 97不卡在线视频| 久久黄色免费视频| 久久在线91| 91精品国产91久久久| 一二三区免费视频| 国产精品一二三区在线| 农村寡妇一区二区三区| 亚洲av激情无码专区在线播放| 激情综合亚洲精品| 国产精品视频自在线| 午夜婷婷在线观看| 中文日韩欧美| 国内精品久久久久久中文字幕 | 亚洲综合久久久久| 欧洲金发美女大战黑人| 最近高清中文在线字幕在线观看1| 午夜欧美2019年伦理| 五月婷婷之综合激情| 成人黄色免费短视频| 日韩无一区二区| 国产高清一区二区三区四区| 国产精品嫩模av在线| 欧美精品亚州精品| 天天干天天插天天射| 免费人成在线不卡| 国产日韩欧美自拍| 国产aⅴ爽av久久久久成人| 午夜亚洲福利在线老司机| 国产在线视频2019最新视频| 清纯唯美亚洲色图| 亚洲成人午夜影院| 欧美激情国产精品日韩| 少女频道在线观看高清 | 波多野结衣三级在线| 不卡av影片| 在线欧美小视频| 男女男精品视频站| 色婷婷狠狠五月综合天色拍| 亚洲男女自偷自拍图片另类| 91porn在线视频| 国内精品福利| 欧美在线中文字幕| 91丨九色丨海角社区| 久久超级碰视频| 91免费版网站入口| 亚洲精品一区二区三区新线路| 日本一区二区动态图| 99精品一区二区三区的区别| 成人va天堂| 欧美猛男超大videosgay| 日本一区二区三区在线免费观看| heyzo欧美激情| 美女av一区二区| 国产美女永久免费| 亚洲女人的天堂| 欧美性猛交xx| 亚洲国产合集| 色噜噜狠狠狠综合曰曰曰88av| 懂色av懂色av粉嫩av| 亚洲巨乳在线| 国产精品视频久| 国产福利小视频在线观看| 色婷婷激情综合| 日本一级免费视频| 另类小说欧美激情| 熟女熟妇伦久久影院毛片一区二区| 欧美爱爱视频| 日韩精品免费一线在线观看| 国产成人免费观看网站| 美女性感视频久久| 精品国产一区二区三区在线| 日韩中文字幕在线一区| 国产一区二区三区18| 中日韩在线观看视频| 亚洲欧洲一区二区在线播放| 天堂av.com| 在线不卡欧美| 97夜夜澡人人双人人人喊| 里番在线播放| 91精品国产综合久久久久久| 亚洲国产美女视频| 成人小视频在线观看| 青少年xxxxx性开放hg| 视频二区欧美| 日本久久久久久久| 秋霞网一区二区| 精品免费在线观看| 自拍偷拍你懂的| 久久久999| 国产偷国产偷亚洲高清97cao| 黄色国产网站在线播放| 欧美视频日韩视频在线观看| www.超碰97| 激情婷婷欧美| 欧美资源一区| 一区一区三区| 精品国内亚洲在观看18黄| 制服丝袜在线一区| 一区二区三区免费看视频| www.久久国产| 99在线精品视频在线观看 | 色偷偷综合网| 高清不卡日本v二区在线| 男人天堂久久久| 欧美中文字幕一区| 久久免费视频播放| 成人亚洲一区二区一| 青青青国产在线视频| 美女久久久久| 日韩av日韩在线观看| 日韩中文字幕组| 国产高清视频在线观看| 久久久久亚洲| 国产精品网站大全| a级大胆欧美人体大胆666| 中文字幕综合在线| 精品人妻无码一区二区性色| 亚洲天堂精品在线观看| 手机版av在线| 翔田千里一区二区| 天堂а√在线中文在线| 精品久久久久久久久久岛国gif| 97在线看免费观看视频在线观看| 免费黄色电影在线观看| 亚洲美女av网站| 手机av免费在线观看| 亚洲一二三四区不卡| 久久免费精品国产| 国产农村妇女精品一二区 | 欧美久久九九| 97av影视网在线观看| 色豆豆成人网| 777午夜精品福利在线观看| 欧美卡一卡二| 久青草国产97香蕉在线视频| www.黄色小说.com| 亚洲成人av电影在线| 波多野结衣家庭教师| 国产精品视频一二三区| 日韩精品无码一区二区三区久久久| 国产精品一二三区| 日本一二三区在线| 国产一区二三区好的| 国产无限制自拍| 精品一区欧美| 久久av一区二区三区亚洲| 粉嫩的18在线观看极品精品| 成人欧美一区二区三区在线观看| 成人亚洲精品| 57pao精品| 暖暖日本在线观看| 色婷婷综合成人av| 欧美性天天影视| 久久精品男人天堂| 精品51国产黑色丝袜高跟鞋| 久久久精品久久久久| 国产福利视频在线| 国产丝袜一区视频在线观看| 色丁香婷婷综合久久| 亚洲精品97久久| 天天操天天插天天射| 日韩国产精品亚洲а∨天堂免| 天天操天天操天天| 亚洲欧美综合图区| 不卡的日韩av| 精品日韩成人av| 人妻精品一区二区三区| 日韩av在线网| 国产剧情在线观看| 久久天天躁狠狠躁老女人| 91香蕉在线观看| 国内精品400部情侣激情| 中文字幕人成乱码在线观看| 国产福利成人在线| 高清久久精品| 国产精选一区二区| 久久久久久久久久久久电影| 波多野结衣久草一区| 免费一区二区三区四区| 亚洲va电影大全| 韩日一区二区| 欧美壮男野外gaytube| 国产精品极品美女在线观看| 国产精品直播网红| 亚洲性视频在线| 91探花福利精品国产自产在线| av一级久久| 国产精品久久精品| 电影天堂国产精品| 成人字幕网zmw| 久久久久观看| 亚洲国产精品久久久久久女王| 一区二区三区在线| 在线视频一区观看| 不卡中文字幕| 777久久精品一区二区三区无码| 国产一区白浆| 182午夜视频| 久久99蜜桃精品| 大桥未久恸哭の女教师| 国产精品久线观看视频| 蜜桃av乱码一区二区三区| 亚洲欧美激情插| www.日韩一区| 精品国产成人在线影院 | 国产三级三级三级精品8ⅰ区| xxxxxx黄色| 中文字幕一区免费在线观看| 91香蕉国产视频| 亚洲国产三级在线| 伊人精品一区二区三区| 日韩成人性视频| av网址在线| 国产精品久久久久av免费| 国产精品对白| 日韩国产精品毛片| 天堂成人国产精品一区| 亚洲天堂av网站| 亚洲人成网站精品片在线观看| 国产一区二区视频网站| 精品国产sm最大网站| 超碰在线免费公开| 国产精品麻豆va在线播放| 久久1电影院| 国产成人永久免费视频| 欧美日韩视频| 91香蕉视频污版| 精品一区二区三区在线播放视频 | 一区二区三区欧美| 亚洲一级av毛片| 在线亚洲欧美视频| 免费看av不卡| 久精品国产欧美| 91久久亚洲| 欧洲成人午夜精品无码区久久| 国产高清精品网站| 日本一区二区在线免费观看| 亚洲老司机在线| 国产精品毛片一区视频播| 日韩精品一区二区三区老鸭窝| 人妻少妇精品无码专区| 欧美www在线| 日韩高清一区| 9191国产视频| 国产一区不卡视频| 九九热视频在线免费观看| 亚洲韩国一区二区三区| 99久久精品国产一区色| 精品国产一区二区三区久久久狼| 992tv国产精品成人影院| 999视频在线观看| 天天做天天爱天天爽综合网| 午夜免费看视频| 国产精品国产自产拍高清av王其 | 精品美女在线播放| 色图在线观看| 国产伦精品一区二区三| 国产欧美日韩综合一区在线播放| yy1111111| 国产精品久久久久久久裸模 | 美女网站在线看| 国产在线观看一区二区三区| 欧美亚洲在线日韩| 高清一区在线观看| 国产精品国产三级国产普通话蜜臀| 怡春院在线视频| 美女精品视频一区| 中文字幕一区二区三区日韩精品| www.一区二区.com| www.亚洲精品| 久久久久久久麻豆| 日韩久久久久久| 国产免费拔擦拔擦8x在线播放 | 亚欧美无遮挡hd高清在线视频 | 高清欧美性猛交xxxx| 日韩美脚连裤袜丝袜在线| 黄色片在线免费| 亚洲日本va在线观看| 亚洲a视频在线观看| 51精品国产黑色丝袜高跟鞋| 欧美裸体在线版观看完整版| 图片区乱熟图片区亚洲| 亚洲成av人片观看| 邻家有女韩剧在线观看国语| 91精品久久久久久久久青青| 蜜桃国内精品久久久久软件9| 特级丰满少妇一级| 亚洲精品美腿丝袜| 国产又粗又猛又爽| 国内偷自视频区视频综合| 国产欧美日韩在线观看视频| 91精品999| 精品欧美国产一区二区三区| 欧美激情黑人| 久久国产精品一区二区三区| 久久99久久精品| 日韩 欧美 综合| 91精品国产一区二区三区| av在线小说| 亚洲欧洲在线一区| 成人午夜精品一区二区三区| 欧美在线视频精品| 国产做受高潮69| 欧美gvvideo网站| 99re6在线观看| 日韩欧美一区视频| 精品成人一区二区三区免费视频| 91成人精品网站|