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

MySQL在并發場景下的問題及解決思路

數據庫 MySQL
對于數據庫系統來說在多用戶并發條件下提高并發性的同時又要保證數據的一致性一直是數據庫系統追求的目標,既要滿足大量并發訪問的需求又必須保證在此條件下數據的安全,為了滿足這一目標大多數數據庫通過鎖和事務機制來實現,MySQL數據庫也不例外。

[[228204]]

1、背景

對于數據庫系統來說在多用戶并發條件下提高并發性的同時又要保證數據的一致性一直是數據庫系統追求的目標,既要滿足大量并發訪問的需求又必須保證在此條件下數據的安全,為了滿足這一目標大多數數據庫通過鎖和事務機制來實現,MySQL數據庫也不例外。盡管如此我們仍然會在業務開發過程中遇到各種各樣的疑難問題,本文將以案例的方式演示常見的并發問題并分析解決思路。

2、表鎖導致的慢查詢的問題

首先我們看一個簡單案例,根據ID查詢一條用戶信息 

  1. mysql> select * from user where id=6; 

這個表的記錄總數為3條,但卻執行了13秒。

出現這種問題我們首先想到的是看看當前MySQL進程狀態:

從進程上可以看出select語句是在等待一個表鎖,那么這個表鎖又是什么查詢產生的呢?這個結果中并沒有顯示直接的關聯關系,但我們可以推測多半是那條update語句產生的(因為進程中沒有其他可疑的SQL),為了印證我們的猜測,先檢查一下user表結構:

果然user表使用了MyISAM存儲引擎,MyISAM在執行操作前會產生表鎖,操作完成再自動解鎖。如果操作是寫操作,則表鎖類型為寫鎖,如果操作是讀操作則表鎖類型為讀鎖。正如和你理解的一樣寫鎖將阻塞其他操作(包括讀和寫),這使得所有操作變為串行;而讀鎖情況下讀-讀操作可以并行,但讀-寫操作仍然是串行。以下示例演示了顯式指定了表鎖(讀鎖),讀-讀并行,讀-寫串行的情況。

顯式開啟/關閉表鎖,使用lock table user read/write; unlock tables;

session1:

session2:

可以看到會話1啟用表鎖(讀鎖)執行讀操作,這時會話2可以并行執行讀操作,但寫操作被阻塞。接著看:

session1:

session2:

當session1執行解鎖后,seesion2則立刻開始執行寫操作,即讀-寫串行。

總結:

到此我們把問題的原因基本分析清楚,總結一下——MyISAM存儲引擎執行操作時會產生表鎖,將影響其他用戶對該表的操作,如果表鎖是寫鎖,則會導致其他用戶操作串行,如果是讀鎖則其他用戶的讀操作可以并行。所以有時我們遇到某個簡單的查詢花了很長時間,看看是不是這種情況。

解決辦法:

1)盡量不用MyISAM存儲引擎,在MySQL8.0版本中已經去掉了所有的MyISAM存儲引擎的表,推薦使用InnoDB存儲引擎。

2)如果一定要用MyISAM存儲引擎,減少寫操作的時間;

3、線上修改表結構有哪些風險?

如果有一天業務系統需要增大一個字段長度,能否在線上直接修改呢?在回答這個問題前,我們先來看一個案例:

以上語句嘗試修改user表的name字段長度,語句被阻塞。按照慣例,我們檢查一下當前進程:

從進程可以看出alter語句在等待一個元數據鎖,而這個元數據鎖很可能是上面這條select語句引起的,事實正是如此。在執行DML(select、update、delete、insert)操作時,會對表增加一個元數據鎖,這個元數據鎖是為了保證在查詢期間表結構不會被修改,因此上面的alter語句會被阻塞。那么如果執行順序相反,先執行alter語句,再執行DML語句呢?DML語句會被阻塞嗎?例如我正在線上環境修改表結構,線上的DML語句會被阻塞嗎?答案是:不確定。

在MySQL5.6開始提供了online ddl功能,允許一些DDL語句和DML語句并發,在當前5.7版本對online ddl又有了增強,這使得大部分DDL操作可以在線進行。詳見:https://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.html

所以對于特定場景執行DDL過程中,DML是否會被阻塞需要視場景而定。

總結:通過這個例子我們對元數據鎖和online ddl有了一個基本的認識,如果我們在業務開發過程中有在線修改表結構的需求,可以參考以下方案:

1. 盡量在業務量小的時間段進行;

2. 查看官方文檔,確認要做的表修改可以和DML并發,不會阻塞線上業務;

3. 推薦使用percona公司的pt-online-schema-change工具,該工具被官方的online ddl更為強大,它的基本原理是:通過insert… select…語句進行一次全量拷貝,通過觸發器記錄表結構變更過程中產生的增量,從而達到表結構變更的目的。

例如要對A表進行變更,主要步驟為:

創建目的表結構的空表,A_new;

在A表上創建觸發器,包括增、刪、改觸發器;

通過insert…select…limit N 語句分片拷貝數據到目的表

Copy完成后,將A_new表rename到A表。

4、一個死鎖問題的分析

在線上環境下死鎖的問題偶有發生,死鎖是因為兩個或多個事務相互等待對方釋放鎖,導致事務永遠無法終止的情況。為了分析問題,我們下面將模擬一個簡單死鎖的情況,然后從中總結出一些分析思路。

演示環境:MySQL5.7.20 事務隔離級別:RR

表user: 

  1. CREATE TABLE `user` (  
  2. `id` int(11) NOT NULL AUTO_INCREMENT,  
  3. `namevarchar(300) DEFAULT NULL 
  4. `age` int(11) DEFAULT NULL 
  5. PRIMARY KEY (`id`)  
  6. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 

下面演示事務1、事務2工作的情況:  

 

事務1

事務2

事務監控

T1

begin;

Query OK, 0 rows affected (0.00 sec)

begin;

Query OK, 0 rows affected (0.00 sec)

 
T2

select * from user where id=3 for update;

+----+------+------+
| id | name | age |
+----+------+------+
| 3 | sun | 20 |
+----+------+------+
1 row in set (0.00 sec)

select * from user where id=4 for update;

+----+------+------+
| id | name | age |
+----+------+------+
| 4 | zhou | 21 |
+----+------+------+
1 row in set (0.00 sec)

select * from information_schema.INNODB_TRX;

通過查詢元數據庫innodb事務表,監控到當前運行事務數為2,即事務1、事務2。

T3

update user set name='haha' where id=4;

因為id=4的記錄已被事務2加上行鎖,該語句將阻塞

  監控到當前運行事務數為2。
T4 阻塞狀態

update user set name='hehe' where id=3;

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

id=3的記錄已被事務1加上行鎖,而本事務持有id=4的記錄行鎖,此時InnoDB存儲引擎檢查出死鎖,本事務被回滾。

事務2被回滾,事務1仍在運行中,監控當前運行事務數為1。
T5

Query OK, 1 row affected (20.91 sec)
Rows matched: 1 Changed: 1 Warnings: 0

由于事務2被回滾,原來阻塞的update語句被繼續執行。

  監控當前運行事務數為1。
T6

commit;

Query OK, 0 rows affected (0.00 sec)

  事務1已提交、事務2已回滾,監控當前運行事務數為0。

這是一個簡單的死鎖場景,事務1、事務2彼此等待對方釋放鎖,InnoDB存儲引擎檢測到死鎖發生,讓事務2回滾,這使得事務1不再等待事務B的鎖,從而能夠繼續執行。那么InnoDB存儲引擎是如何檢測到死鎖的呢?為了弄明白這個問題,我們先檢查此時InnoDB的狀態: 

  1. show engine innodb status\G   
  2. ------------------------  
  3. LATEST DETECTED DEADLOCK  
  4. ------------------------  
  5. 2018-01-14 12:17:13 0x70000f1cc000  
  6. *** (1) TRANSACTION 
  7. TRANSACTION 5120, ACTIVE 17 sec starting index read  
  8. mysql tables in use 1, locked 1  
  9. LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)  
  10. MySQL thread id 10, OS thread handle 123145556967424, query id 2764 localhost root updating  
  11. update user set name='haha' where id=4  
  12. *** (1) WAITING FOR THIS LOCK TO BE GRANTED:  
  13. RECORD LOCKS space id 94 page no 3 n bits 80 index PRIMARY of table `test`.`user` trx id 5120 lock_mode X locks rec but not gap waiting  
  14. Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  15. 0: len 4; hex 80000004; asc ;;  
  16. 1: len 6; hex 0000000013fa; asc ;;  
  17. 2: len 7; hex 520000060129a6; asc R ) ;;  
  18. 3: len 4; hex 68616861; asc haha;;  
  19. 4: len 4; hex 80000015; asc ;;  
  20. *** (2) TRANSACTION 
  21. TRANSACTION 5121, ACTIVE 12 sec starting index read  
  22. mysql tables in use 1, locked 1  
  23. 3 lock struct(s), heap size 1136, 2 row lock(s)  
  24. MySQL thread id 11, OS thread handle 123145555853312, query id 2765 localhost root updating  
  25. update user set name='hehe' where id=3  
  26. *** (2) HOLDS THE LOCK(S):  
  27. RECORD LOCKS space id 94 page no 3 n bits 80 index PRIMARY of table `test`.`user` trx id 5121 lock_mode X locks rec but not gap  
  28. Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  29. 0: len 4; hex 80000004; asc ;;  
  30. 1: len 6; hex 0000000013fa; asc ;;  
  31. 2: len 7; hex 520000060129a6; asc R ) ;;  
  32. 3: len 4; hex 68616861; asc haha;;  
  33. 4: len 4; hex 80000015; asc ;;  
  34. *** (2) WAITING FOR THIS LOCK TO BE GRANTED:  
  35. RECORD LOCKS space id 94 page no 3 n bits 80 index PRIMARY of table `test`.`user` trx id 5121 lock_mode X locks rec but not gap waiting  
  36. Record lock, heap no 7 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  37. 0: len 4; hex 80000003; asc ;;  
  38. 1: len 6; hex 0000000013fe; asc ;;  
  39. 2: len 7; hex 5500000156012f; asc U V /;;  
  40. 3: len 4; hex 68656865; asc hehe;;  
  41. 4: len 4; hex 80000014; asc ;;  
  42. *** WE ROLL BACK TRANSACTION (2)  

InnoDB狀態有很多指標,這里我們截取死鎖相關的信息,可以看出InnoDB可以輸出最近出現的死鎖信息,其實很多死鎖監控工具也是基于此功能開發的。

在死鎖信息中,顯示了兩個事務等待鎖的相關信息(藍色代表事務1、綠色代表事務2),重點關注:WAITING FOR THIS LOCK TO BE GRANTED和HOLDS THE LOCK(S)。

WAITING FOR THIS LOCK TO BE GRANTED表示當前事務正在等待的鎖信息,從輸出結果看出事務1正在等待heap no為5的行鎖,事務2正在等待 heap no為7的行鎖;

HOLDS THE LOCK(S):表示當前事務持有的鎖信息,從輸出結果看出事務2持有heap no為5行鎖。

從輸出結果看出,***InnoDB回滾了事務2。

那么InnoDB是如何檢查出死鎖的呢?

我們想到最簡單方法是假如一個事務正在等待一個鎖,如果等待時間超過了設定的閾值,那么該事務操作失敗,這就避免了多個事務彼此長等待的情況。參數innodb_lock_wait_timeout正是用來設置這個鎖等待時間的。

如果按照這個方法,解決死鎖是需要時間的(即等待超過innodb_lock_wait_timeout設定的閾值),這種方法稍顯被動而且影響系統性能,InnoDB存儲引擎提供一個更好的算法來解決死鎖問題,wait-for graph算法。簡單的說,當出現多個事務開始彼此等待時,啟用wait-for graph算法,該算法判定為死鎖后立即回滾其中一個事務,死鎖被解除。該方法的好處是:檢查更為主動,等待時間短。

下面是wait-for graph算法的基本原理:

為了便于理解,我們把死鎖看做4輛車彼此阻塞的場景:

  

4輛車看做4個事務,彼此等待對方的鎖,造成死鎖。wait-for graph算法原理是把事務作為節點,事務之間的鎖等待關系,用有向邊表示,例如事務A等待事務B的鎖,就從節點A畫一條有向邊到節點B,這樣如果A、B、C、D構成的有向圖,形成了環,則判斷為死鎖。這就是wait-for graph算法的基本原理。

總結:

1. 如果我們業務開發中出現死鎖如何檢查出?剛才已經介紹了通過監控InnoDB狀態可以得出,你可以做一個小工具把死鎖的記錄收集起來,便于事后查看。

2. 如果出現死鎖,業務系統應該如何應對?從上文我們可以看到當InnoDB檢查出死鎖后,對客戶端報出一個Deadlock found when trying to get lock; try restarting transaction信息,并且回滾該事務,應用端需要針對該信息,做事務重啟的工作,并保存現場日志事后做進一步分析,避免下次死鎖的產生。

5、鎖等待問題的分析

在業務開發中死鎖的出現概率較小,但鎖等待出現的概率較大,鎖等待是因為一個事務長時間占用鎖資源,而其他事務一直等待前個事務釋放鎖。

 

事務1

事務2

事務監控

T1

begin;

Query OK, 0 rows affected (0.00 sec)

begin;

Query OK, 0 rows affected (0.00 sec)

 
T2

select * from user where id=3 for update;

+----+------+------+
| id | name | age |
+----+------+------+
| 3 | sun | 20 |
+----+------+------+
1 row in set (0.00 sec)

其他查詢操作

select * from information_schema.INNODB_TRX;

通過查詢元數據庫innodb事務表,監控到當前運行事務數為2,即事務1、事務2。

T3  其他查詢操作

 update user set name='hehe' where id=3;

因為id=3的記錄被事務1加上行鎖,所以該語句將阻塞(即鎖等待)

 監控到當前運行事務數為2。
T4 其他查詢操作

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

鎖等待時間超過閾值,操作失敗。注意:此時事務2并沒有回滾。

監控到當前運行事務數為2。
T5 commit;   事務1已提交,事務2未提交,監控到當前運行事務數為1。

從上述可知事務1長時間持有id=3的行鎖,事務2產生鎖等待,等待時間超過innodb_lock_wait_timeout后操作中斷,但事務并沒有回滾。如果我們業務開發中遇到鎖等待,不僅會影響性能,還會給你的業務流程提出挑戰,因為你的業務端需要對鎖等待的情況做適應的邏輯處理,是重試操作還是回滾事務。

在MySQL元數據表中有對事務、鎖等待的信息進行收集,例如information_schema數據庫下的INNODB_LOCKS、INNODB_TRX、INNODB_LOCK_WAITS,你可以通過這些表觀察你的業務系統鎖等待的情況。你也可以用一下語句方便的查詢事務和鎖等待的關聯關系: 

  1. SELECT r.trx_id waiting_trx_id,r.trx_mysql_thread_id waiting_thread,r.trx_query wating_query, b.trx_id blocking_trx_id,b.trx_mysql_thread_id blocking_thread,b.trx_query blocking_query FROM information_schema.innodb_lock_waits w  INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id  INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id; 

結果: 

  1. waiting_trx_id: 5132 
  2. waiting_thread: 11 
  3. wating_query: update user set name='hehe' where id=3 
  4. blocking_trx_id: 5133 
  5. blocking_thread: 10 
  6. blocking_query: NULL 

總結:

1. 請對你的業務系統做鎖等待的監控,這有助于你了解當前數據庫鎖情況,以及為你優化業務程序提供幫助;

2. 業務系統中應該對鎖等待超時的情況做合適的邏輯判斷。

6、小結

本文通過幾個簡單的示例介紹了我們常用的幾種MySQL并發問題,并嘗試得出針對這些問題我們排查的思路。文中涉及事務、表鎖、元數據鎖、行鎖,但引起并發問題的遠遠不止這些,例如還有事務隔離級別、GAP鎖等。真實的并發問題可能多而復雜,但排查思路和方法卻是可以復用,在本文中我們使用了show processlist;show engine innodb status;以及查詢元數據表的方法來排查發現問題,如果問題涉及到了復制,還需要借助master/slave監控來協助。 

參考資料:

  • 姜承堯《InnoDB存儲引擎》
  • 李宏哲 楊挺 《MySQL排查指南》
  • 何登成 http://hedengcheng.com 

原文鏈接:https://www.cnblogs.com/leefreeman/p/8286550.html  

責任編輯:龐桂玉 來源: 民工哥Linux運維
相關推薦

2019-07-05 17:40:24

MySQL并發數據庫

2013-07-04 10:55:20

2022-02-02 21:50:25

底層偽共享CPU

2022-05-11 11:25:49

模型方案

2018-07-27 10:56:10

2010-08-19 09:29:26

hoverIE6

2025-08-05 06:05:00

2016-11-09 21:09:54

mysqlmysql優化

2021-12-01 10:13:48

場景分布式并發

2023-07-18 09:24:04

MySQL線程

2025-01-03 09:56:09

2022-05-27 09:25:49

數據并發

2025-06-12 02:15:00

Kafka消費者高并發

2023-06-25 08:05:09

MySQL事務并發

2024-01-15 08:57:13

MySQL高并發

2021-05-18 08:21:38

React HooksReact前端

2023-05-28 13:13:54

高并發場景JUC

2022-11-16 21:55:51

Redis數據庫

2025-02-28 00:03:22

高并發TPS系統

2025-02-26 03:00:00

點贊
收藏

51CTO技術棧公眾號

99国产精品一区| 亚洲欧美春色| 精品国产乱码久久久久久久久 | 欧美精品播放| 国产成人午夜视频| 97视频网站入口| 一级黄色片大全| 天堂久久一区| 黑人巨大精品欧美一区二区免费 | 蜜臀av粉嫩av懂色av| 欧美xxxxxx| 一区二区三区在线视频播放| 欧美日韩亚洲一区二区三区在线观看 | 中出一区二区| 亚洲区在线播放| 国偷自产av一区二区三区麻豆| 日韩影片中文字幕| 亚洲韩国精品一区| 中文字幕成人一区| 日韩大胆视频| 粉嫩一区二区三区性色av| 国产精品美乳在线观看| 日韩欧美亚洲国产| 欧美在线网站| 日韩视频―中文字幕| 香蕉视频黄色在线观看| 成人福利免费在线观看| 91精品国产综合久久久蜜臀粉嫩| 国产美女三级视频| 欧美xxxx做受欧美88bbw| 欧美激情一区二区三区全黄| 久久精品五月婷婷| 亚洲精品久久久狠狠狠爱| 久久精品国产亚洲一区二区三区| 日韩免费黄色av| 日本少妇毛茸茸高潮| 欧美在线观看天堂一区二区三区| 国产一区二区动漫| 瑟瑟视频在线观看| 日韩欧美在线精品| 亚洲福利小视频| 中国特级黄色片| 亚州欧美在线| 欧美色区777第一页| chinese少妇国语对白| 中文字幕在线高清| 欧美日韩在线免费观看| 奇米精品一区二区三区| 3344国产永久在线观看视频| 一区二区三区四区精品在线视频| 中文字幕制服丝袜在线| 欧美成人三区| 亚洲视频一区在线| 日韩激情久久| 午夜视频在线| 国产农村妇女精品| 亚洲人久久久| 高清全集视频免费在线| 亚洲色欲色欲www| 男同互操gay射视频在线看| 国产一二三区在线观看| 亚洲精品视频在线看| 日本一区二区三区四区五区六区| 国内外激情在线| 综合久久综合久久| 天堂а√在线中文在线| 午夜成年人在线免费视频| 亚洲影视资源网| 人妻av中文系列| 欧美二三四区| 欧美日韩三级在线| 国产亚洲精品美女久久久m| а√中文在线资源库| 丁香婷婷综合网| 久久久久久久久久久久久久一区| 欧美色18zzzzxxxxx| 欧美极品aⅴ影院| 日韩第一页在线观看| 男女在线观看视频| 欧美性黄网官网| 国产精品区在线| 日韩欧美久久| 亚洲欧美日韩中文在线| 日本美女黄色一级片| 伊人成人在线| 国产91网红主播在线观看| 一本色道久久综合无码人妻| 国产成人av一区二区三区在线观看| 国产免费高清一区| 成年人在线视频免费观看| 亚洲欧美一区二区久久| 久久久久久免费看| yy6080久久伦理一区二区| 日韩欧美国产精品| 一级性生活毛片| 亚洲五月综合| 日本中文字幕久久看| 99精品视频免费看| 久久这里都是精品| 经典三级在线视频| 成人av观看| 日韩欧美中文字幕精品| 国产人妻大战黑人20p| 国精品一区二区| 国产精品高清网站| 欧美视频久久久| 中文字幕一区二区三区四区不卡 | 日韩精品视频网| 97人人做人人人难人人做| 亚洲av毛片成人精品| 亚洲同性同志一二三专区| 无码精品a∨在线观看中文| 国产精品久久久久久久久久久久久久久 | 欧美偷拍视频| 一区二区三区中文字幕电影| 亚洲成色www.777999| 欧美日韩破处| 精品中文字幕在线观看| 在线视频 中文字幕| 91丨九色丨蝌蚪富婆spa| 玖玖精品在线视频| 日韩黄色三级| 国产亚洲人成网站在线观看| 可以免费在线观看的av| 高清成人在线观看| 男插女免费视频| 亚洲国产尤物| 亚洲色图激情小说| 国产成人在线免费视频 | 国产传媒欧美日韩| 麻豆视频网站在线观看| 欧美主播一区二区三区美女| 欧美 变态 另类 人妖| 亚洲激情二区| 国产成人免费观看| caoprom在线| 亚洲精品在线电影| 久久久久亚洲av片无码下载蜜桃| 紧缚奴在线一区二区三区| 日韩精品欧美专区| av激情成人网| 亚洲天堂免费观看| 日日夜夜狠狠操| 久久久国产精华| 黄色av免费在线播放| 国产中文字幕一区二区三区 | 亚洲在线资源| 精品国产一区二区三区在线观看 | 国产精品久久中文字幕| 99精品国产高清一区二区麻豆| 麻豆国产va免费精品高清在线| 91超薄丝袜肉丝一区二区| 中文字幕在线播放不卡一区| 日韩成人精品视频在线观看| 91精品国产91久久久久久密臀 | 亚洲91av视频| 亚洲色图狠狠干| 一本久久综合亚洲鲁鲁五月天 | 国产一区二区三区四区大秀| 国产精品国语对白| 日本中文字幕在线观看| 欧美精品三级日韩久久| 成年人av电影| 成人av在线电影| 成人在线免费在线观看| 国产精品美女久久久久久不卡| 国产成人在线亚洲欧美| 天堂中文а√在线| 日韩一二三四区| 久久久精品视频免费| 91看片淫黄大片一级在线观看| 777米奇影视第四色| 水蜜桃精品av一区二区| 99在线视频首页| 亚洲优女在线| 日韩在线免费视频| 成人午夜福利视频| 色综合久久天天| 欧美日韩黄色网| aa级大片欧美| 亚洲国产激情一区二区三区| 成人精品三级| 欧美激情奇米色| 亚欧在线观看视频| 欧美日韩大陆在线| 国产午夜精品无码一区二区| 久久久蜜桃精品| 亚洲第一区第二区第三区| 亚洲国产一区二区三区高清 | 四虎永久免费观看| 亚洲欧美日本伦理| 国产999精品视频| 9i精品一二三区| 精品欧美一区二区三区精品久久| 日产精品久久久| 亚洲欧美中日韩| 中文字幕一区二区人妻在线不卡 | 精品人妻一区二区免费| 首页综合国产亚洲丝袜| 成人免费在线视频播放| 精品国产aⅴ| 国产精品视频在线免费观看 | 另类av一区二区| 最新av网址在线观看| 蜜桃精品噜噜噜成人av| 97人人干人人| 亚洲综合视频| 日韩免费视频在线观看| 91九色美女在线视频| 久久精品亚洲94久久精品| 日本在线视频1区| 欧美大片日本大片免费观看| 亚洲国产无线乱码在线观看| 欧美日韩人人澡狠狠躁视频| 日本a级片视频| 国产精品毛片无遮挡高清| 亚洲调教欧美在线| 国产伦精品一区二区三区在线观看| 日本www高清视频| 亚洲国产电影| 国产在线观看欧美| 88国产精品视频一区二区三区| 精品一区二区日本| 丁香5月婷婷久久| 久久av资源网站| 精品美女视频在线观看免费软件| 精品国产麻豆免费人成网站| 国产欧美久久久精品免费| 欧美性受xxxx黑人xyx| 天天爽夜夜爽夜夜爽精品| 亚洲精品日产精品乱码不卡| 女同久久另类69精品国产| 久久久精品综合| 免费a在线观看播放| 成人污视频在线观看| 久久人人爽人人片| 精品亚洲成a人在线观看| 亚洲精品久久久中文字幕| 日韩不卡一二三区| 国产综合免费视频| 久久婷婷丁香| 青青青国产在线视频| 日韩国产精品久久久久久亚洲| 国产人妻777人伦精品hd| 欧美黄色一区二区| 国产性生活免费视频| 欧美二区视频| 免费一级淫片aaa片毛片a级| 欧美人成在线| 久久精品无码中文字幕| 亚洲视频狠狠| 青春草国产视频| 最新成人av网站| 日本精品一区在线观看| 亚洲一区观看| 免费在线观看毛片网站| 噜噜噜91成人网| 亚洲精品怡红院| 麻豆精品一区二区av白丝在线| youjizzxxxx18| 精久久久久久久久久久| 黄色片子免费看| 丁香六月久久综合狠狠色| a级片在线观看视频| 91色.com| 四季av中文字幕| 亚洲欧美日韩国产中文在线| 欧美日韩国产精品综合| 午夜影视日本亚洲欧洲精品| 精品欧美一区二区三区免费观看| 色综合中文字幕国产| 中文字幕欧美在线观看| 91精品国产黑色紧身裤美女| www久久久com| 亚洲精品网址在线观看| 在线观看免费高清完整| 欧美国产日产韩国视频| 欧美a级在线观看| 国产精品电影网| 麻豆精品在线| 欧美日韩精品免费观看| 成人免费看片39| 一区二区三区四区免费观看| 99精品视频免费全部在线| 噼里啪啦国语在线观看免费版高清版| 久久精品国产久精国产爱| 国产成人精品一区二区三区在线观看| 99久久久国产精品免费蜜臀| eeuss中文字幕| 亚洲韩国一区二区三区| 无码人妻aⅴ一区二区三区有奶水| 欧美美女喷水视频| 亚洲av成人精品毛片| 色婷婷av一区二区三区在线观看| 欧洲一区二区三区| 国产精品免费小视频| 91在线一区| 亚洲乱码一区二区三区三上悠亚| 狠狠色综合网| 在线观看免费视频高清游戏推荐| 成人午夜视频网站| 长河落日免费高清观看| 图片区小说区区亚洲影院| 影音先锋国产资源| 亚洲美女av网站| 欧美v亚洲v| 国产综合视频在线观看| 亚洲精品aaaaa| 成人av在线播放观看| 麻豆精品视频在线观看| 播金莲一级淫片aaaaaaa| 伊人色综合久久天天人手人婷| 成人免费视频国产免费| 亚洲精品av在线播放| 91高清在线观看视频| 国产成人一区二区三区| 色婷婷精品视频| 欧美久久久久久久久久久久久久| 日本一区中文字幕| 亚洲午夜福利在线观看| 亚洲mv大片欧洲mv大片精品| 国产男女猛烈无遮挡| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 91精品国产自产在线丝袜啪| 五月婷婷一区| 美女久久网站| jizz欧美性20| 精品人伦一区二区三区蜜桃网站 | 91麻豆国产福利在线观看| 久久精品这里有| 欧美电影免费提供在线观看| 18av在线播放| 91免费欧美精品| 亚洲成人tv| 国产人妻精品久久久久野外| 亚洲人成网站影音先锋播放| 国产三级在线观看视频| 日韩视频免费在线| 亚洲综合资源| 日韩不卡一二区| 国产激情视频一区二区三区欧美 | 欧美狂野另类xxxxoooo| 天堂在线中文字幕| 欧美国产日韩一区二区| 欧美三级一区| 日本男女交配视频| 不卡的av在线| 久草国产精品视频| 日韩成人在线播放| 性国裸体高清亚洲| 欧美成人一区二区在线| 久久一区国产| 韩国三级hd中文字幕| 欧美三级日韩三级| 天堂资源在线中文| 亚洲在线观看视频| 在线高清一区| 第四色在线视频| 欧美性猛交xxxx乱大交| 福利在线观看| 国产精品美女www爽爽爽视频| 青青草91久久久久久久久| 国产色视频在线播放| 亚洲欧美另类综合偷拍| 黄色av免费观看| 欧美在线亚洲在线| 欧美jizz| 亚洲精品久久一区二区三区777| 午夜欧美大尺度福利影院在线看| 丝袜视频国产在线播放| 亲爱的老师9免费观看全集电视剧| 国产成人短视频在线观看| 日本黄色福利视频| 亚洲一区二区在线播放相泽| 亚洲 欧美 激情 小说 另类| 国产精品狠色婷| 欧美成人一品| 国产男男chinese网站| 欧美群妇大交群中文字幕| 久久香蕉av| 久久精品国产精品国产精品污 | 国产在线一区二区三区四区| 午夜亚洲一区| 亚洲熟女毛茸茸| 亚洲国产日韩欧美在线图片| 日韩电影免费观看高清完整版| 久久免费视频2| 91小视频在线免费看| 一级二级三级视频| 69久久夜色精品国产69| 日韩精品久久久久久久电影99爱| 色欲无码人妻久久精品| 欧美性猛xxx| 黄色av免费在线| 久久综合一区二区三区| 国产剧情av麻豆香蕉精品| 亚洲 欧美 日韩 在线| 欧美高跟鞋交xxxxxhd| 色琪琪久久se色| 制服丝袜第二页|