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

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

數據庫 MySQL
為了滿足這一目標大多數數據庫通過鎖和事務機制來實現,MySQL數據庫也不例外。盡管如此我們仍然會在業務開發過程中遇到各種各樣的疑難問題,本文將以案例的方式演示常見的并發問題并分析解決思路。

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表進行變更,主要步驟為: 

  1. 創建目的表結構的空表,A_new;  
  2. 在A表上創建觸發器,包括增、刪、改觸發器;  
  3. 通過insert…select…limit N 語句分片拷貝數據到目的表  
  4. Copy完成后,將A_new表rename到A表。 

4、一個死鎖問題的分析

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

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

表user: 

  1. CREATE TABLE `USER` (  
  2. `ID` INT(11) NOT NULL AUTO_INCREMENT,  
  3. `NAME` VARCHAR(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彼此等待對方釋放鎖,InnoDB存儲引擎檢測到死鎖發生,讓事務2回滾,這使得事務1不再等待事務B的鎖,從而能夠繼續執行。那么InnoDB存儲引擎是如何檢測到死鎖的呢?為了弄明白這個問題,我們先檢查此時InnoDB的狀態: 

  1. show engine innodb statusG 

------------------------

LATEST DETECTED DEADLOCK

------------------------ 

  1. 2018-01-14 12:17:13 0x70000f1cc000  
  2. *** (1) TRANSACTION:  
  3. TRANSACTION 5120, ACTIVE 17 sec starting index read  
  4. mysql tables in use 1, locked 1  
  5. LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)  
  6. MySQL thread id 10, OS thread handle 123145556967424, query id 2764 localhost root updating  
  7. update user set name='haha' where id=4 

*** (1) WAITING FOR THIS LOCK TO BE GRANTED: 

  1. 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  
  2. Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  3. 0: len 4; hex 80000004; asc ;;  
  4. 1: len 6; hex 0000000013fa; asc ;;  
  5. 2: len 7; hex 520000060129a6; asc R ) ;;  
  6. 3: len 4; hex 68616861; asc haha;;  
  7. 4: len 4; hex 80000015; asc ;; 

*** (2) TRANSACTION: 

  1. TRANSACTION 5121, ACTIVE 12 sec starting index read  
  2. mysql tables in use 1, locked 1  
  3. 3 lock struct(s), heap size 1136, 2 row lock(s)  
  4. MySQL thread id 11, OS thread handle 123145555853312, query id 2765 localhost root updating  
  5. update user set name='hehe' where id=3 

*** (2) HOLDS THE LOCK(S): 

  1. 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  
  2. Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  3. 0: len 4; hex 80000004; asc ;;  
  4. 1: len 6; hex 0000000013fa; asc ;;  
  5. 2: len 7; hex 520000060129a6; asc R ) ;;  
  6. 3: len 4; hex 68616861; asc haha;;  
  7. 4: len 4; hex 80000015; asc ;; 

*** (2) WAITING FOR THIS LOCK TO BE GRANTED: 

  1. 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  
  2. Record lock, heap no 7 PHYSICAL RECORD: n_fields 5; compact format; info bits 0  
  3. 0: len 4; hex 80000003; asc ;;  
  4. 1: len 6; hex 0000000013fe; asc ;;  
  5. 2: len 7; hex 5500000156012f; asc U V /;;  
  6. 3: len 4; hex 68656865; asc hehe;;  
  7. 4: len 4; hex 80000014; asc ;; 

*** 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長時間持有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,  
  2.  R.TRX_MYSQL_THREAD_ID WAITING_THREAD,  
  3.  R.TRX_QUERY WATING_QUERY,  
  4.  B.TRX_ID BLOCKING_TRX_ID,  
  5.  B.TRX_MYSQL_THREAD_ID BLOCKING_THREAD,  
  6.  B.TRX_QUERY BLOCKING_QUERY  
  7. FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS W  
  8. INNER JOIN INFORMATION_SCHEMA.INNODB_TRX B ON B.TRX_ID = W.BLOCKING_TRX_ID  
  9. 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監控來協助。 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2018-05-04 15:15:37

數據庫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數據庫

2018-05-29 11:44:22

數據庫MySQL死鎖

2025-02-26 03:00:00

點贊
收藏

51CTO技術棧公眾號

国产精品久久网| 国产婷婷97碰碰久久人人蜜臀| 麻豆中文字幕在线观看| www.色播.com| 久久激情视频| 美女久久久久久久久久久| 人妻少妇精品视频一区二区三区| 成人免费一区| 精品久久久中文| 免费在线观看污污视频| 亚洲区小说区图片区| 久国产精品韩国三级视频| 欧美国产日本在线| www.黄色com| 免费看久久久| 欧美一级电影网站| 欧美伦理片在线看| av老司机免费在线| 亚洲天堂av一区| 奇米888一区二区三区| 国产91久久久| 狠狠色丁香久久婷婷综合丁香| 9.1国产丝袜在线观看| 国产黄色小视频网站| 神马日本精品| 亚洲成avwww人| 91热视频在线观看| av高清一区| 欧美日韩国产精品| 久久香蕉视频网站| 永久免费av片在线观看全网站| 91色porny在线视频| 成人在线视频网址| 国产成人三级在线播放| 久久 天天综合| 国产精品自拍小视频| 日韩黄色片网站| 亚洲一区激情| 97热精品视频官网| 国产一级视频在线| 在线欧美不卡| 久久久久久一区二区三区| 久久精品亚洲a| 欧美中文一区二区| 一本一本久久a久久精品牛牛影视| jizz日本免费| 久久国产精品色av免费看| 欧美成人aa大片| 青娱乐国产精品视频| 国产精品高清一区二区| 在线不卡一区二区| 欧美在线a视频| 免费精品一区二区三区在线观看| 欧美一区永久视频免费观看| 手机av在线网站| 国产精品久久久久久久久久辛辛 | 久久精品一区二区三区不卡牛牛| 精品国产第一页| 婷婷国产在线| 久久婷婷国产综合精品青草| 欧美日韩中文国产一区发布| 四虎精品成人影院观看地址| 久久久精品tv| 亚洲天堂电影网| 久久综合网导航| 亚洲精品国产精华液| 奇米777四色影视在线看| 成人免费高清观看| 图片区小说区国产精品视频| 日韩在线综合网| 六月婷婷综合| 欧美丰满美乳xxx高潮www| 青青草久久伊人| 亚洲一区二区三区日本久久九| 精品剧情在线观看| 加勒比一区二区| 欧美丰满老妇| 欧美激情网友自拍| 中文字幕一区在线播放| 美女精品自拍一二三四| 亚洲自拍偷拍一区| 日韩精品系列| 国产精品久久久久久久久免费丝袜| 99精品视频网站| av人人综合网| 欧美日韩国产中文| www国产视频| 精品99在线| 毛片精品免费在线观看| 亚洲欧美综合自拍| 国模大尺度一区二区三区| 精品国产一区二区三区麻豆小说 | 精品在线视频一区二区| 91吃瓜网在线观看| 亚洲国产精品一区二区www在线 | 97人人做人人爽香蕉精品| 欧美一级理论片| 人妻少妇一区二区| 中文字幕免费一区二区| 国产97在线观看| jlzzjlzz亚洲女人18| 91丝袜国产在线播放| 做爰高潮hd色即是空| 8x8ⅹ拨牐拨牐拨牐在线观看| 91福利在线导航| 美女露出粉嫩尿囗让男人桶| 精品国产乱码久久久久久果冻传媒| 毛片精品免费在线观看| 99re国产在线| 9久草视频在线视频精品| 亚洲一区美女| 欧美中文字幕精在线不卡| 欧美一级免费大片| 亚洲激情图片网| 免播放器亚洲| 精品不卡在线| 欧洲在线视频| 欧美日本在线一区| 麻豆精品免费视频| 亚洲青色在线| 99在线看视频| 国产欧美久久久久久久久| 在线观看欧美精品| 一女三黑人理论片在线| 国产一区视频在线观看免费| 成人黄色免费片| 国产乱理伦片a级在线观看| 性久久久久久久| 日批视频免费看 | 欧洲精品一区二区三区久久| 欧美一级免费| 色妞欧美日韩在线| 成人黄色片在线观看| 久久久美女毛片| 国产aaa一级片| 欧美爱爱网站| 欧美在线视频一二三| 日韩专区第一页| 亚洲一区二区中文在线| 国产性猛交96| 亚洲午夜激情在线| 国产视频不卡| 超碰中文在线| 亚洲国产日韩欧美在线99| 国产在线视频在线观看| 成人免费高清在线观看| 国产美女主播在线| 久久中文资源| 欧美性受xxxx白人性爽| 色就是色亚洲色图| 色域天天综合网| 永久免费毛片在线观看| 美美哒免费高清在线观看视频一区二区 | 91大神在线播放精品| 日本免费一区视频| 欧美性xxxxx极品娇小| 午夜理伦三级做爰电影| 天堂成人国产精品一区| 亚洲春色综合另类校园电影| 日韩电影免费观看高清完整版在线观看| 在线成人激情黄色| 国产精品毛片一区视频播| 亚洲视频中文字幕| 韩国三级hd两男一女| 在线亚洲自拍| 日韩欧美视频一区二区| 91精品福利观看| 久久久久久久久久久国产| 天堂中文字幕在线| 欧美午夜精品一区二区蜜桃| 视频国产一区二区| 成人毛片老司机大片| 国产精品免费观看久久| 久久高清精品| 国产69精品久久久久9999apgf| 两个人看的在线视频www| 亚洲乱码一区av黑人高潮| 欧美激情一区二区三区免费观看| 亚洲激情av在线| 国产亚洲无码精品| 韩国欧美一区二区| 男人天堂a在线| 精品国内自产拍在线观看视频| 国产精品视频久| 国产美女高潮在线| xx视频.9999.com| 欧洲av在线播放| 欧美私人免费视频| 福利一区二区三区四区| 亚洲国产精品黑人久久久| 两性午夜免费视频| 免费日韩精品中文字幕视频在线| 先锋在线资源一区二区三区| 99精品中文字幕在线不卡| www.欧美精品一二区| r级无码视频在线观看| 妖精视频一区二区三区| 91精品在线观| 亚洲精品一区| 欧美美最猛性xxxxxx| 内衣办公室在线| 日韩久久精品一区| 亚洲天堂视频网| 调教+趴+乳夹+国产+精品| 国产麻豆a毛片| 久久日韩精品一区二区五区| 熟妇无码乱子成人精品| 日本亚洲视频在线| 欧美 日韩 国产 高清| 久久精品青草| 日韩欧美亚洲日产国产| 精品按摩偷拍| 99久久久久国产精品免费| 国产精品久久久久久久久免费高清 | 在线观看成人动漫| 久久99国产乱子伦精品免费| 国产性xxxx18免费观看视频| 亚洲国产一区二区精品专区| 国产又大又长又粗又黄| 精品精品99| 欧美理论一区二区| 色综合久久中文| 国产传媒一区| 玖玖玖电影综合影院| 国产日韩中文在线| 91亚洲精品| 国产成人一区二区三区电影| 日本在线影院| 午夜精品免费视频| 曰本三级在线| 欧美精品在线播放| 老司机精品视频在线观看6| 在线播放国产精品| www.中文字幕久久久| 亚洲片av在线| 国产视频三级在线观看播放| 亚洲精品一区二区三区婷婷月| 好吊色视频一区二区| 日韩欧美视频在线| www.桃色av嫩草.com| 欧美成人一区二区三区| av综合在线观看| 日韩欧美精品在线| 亚洲av无码一区二区乱子伦| 日韩一卡二卡三卡四卡| 午夜精品久久久久久久99热黄桃| 91麻豆精品国产91久久久久久| 国产免费叼嘿网站免费| 91精品久久久久久蜜臀| 国产视频在线观看视频| 日韩一级完整毛片| 亚洲av无码国产精品久久不卡 | xxxxwww一片| 国产精品一二一区| 性生交大片免费看l| 成人丝袜18视频在线观看| 人妻av一区二区| 91丨九色porny丨蝌蚪| 成人免费网站黄| 中文字幕免费不卡| 国产美女福利视频| 亚洲影院久久精品| wwwxxx亚洲| 欧美系列亚洲系列| 99久久亚洲精品日本无码| 91精品视频网| 好吊色一区二区| 亚洲欧美在线免费观看| 在线观看免费版| 欧美黑人xxxx| 欧美成人黑人| 成人免费自拍视频| 国产精品毛片视频| 日韩精品欧美专区| 午夜精品电影| 国产裸体舞一区二区三区| 美女国产一区二区三区| 少妇极品熟妇人妻无码| 久久久国际精品| 欧美手机在线观看| 无吗不卡中文字幕| 亚洲在线精品视频| 亚洲高清av在线| 四虎久久免费| 97视频在线观看免费高清完整版在线观看| 91av亚洲| 91pron在线| 欧美禁忌电影网| 国产内射老熟女aaaa| 亚洲专区一区| 人妻体体内射精一区二区| 91视频你懂的| 男人的天堂久久久| 日本精品一区二区三区高清| 精品人妻一区二区三区日产乱码| 亚洲精品中文字| 肉体视频在线| 国产精品免费久久久久久| 日本精品视频| 亚洲人成网站在线播放2019| 精品69视频一区二区三区Q| 天天色综合社区| 91麻豆精品在线观看| 久久国产美女视频| 欧美性猛片xxxx免费看久爱| 人成网站在线观看| 久久久久www| 日韩高清在线| 久久99精品国产99久久| 国产精品啊啊啊| 亚洲欧美aaa| 久久久国产精品午夜一区ai换脸| 久久久久亚洲av成人片| 欧美日韩黄色影视| 岛国在线大片| 97成人精品区在线播放| 亚洲精品a区| 日韩最新中文字幕| 麻豆久久一区二区| www久久久久久久| 色天天综合久久久久综合片| 天天操天天干天天干| 欧美日本亚洲视频| 欧美日本三级| 四虎免费在线观看视频| 美日韩一级片在线观看| 亚洲精品午夜视频| 日韩欧美在线免费观看| 香蕉视频黄在线观看| 欧美精品videosex性欧美| 日韩一区二区三区高清在线观看| 爱爱爱视频网站| 免费看欧美美女黄的网站| 亚洲精品国产精品国自产网站| 一本一道久久a久久精品| 日本啊v在线| 啪一啪鲁一鲁2019在线视频| 午夜a一级毛片亚洲欧洲| 九一国产精品视频| 97aⅴ精品视频一二三区| 亚洲天堂日韩av| 日韩精品视频在线| 在线能看的av网址| 久久人人97超碰人人澡爱香蕉| 国产精品日本| 一区二区不卡免费视频| 日本丶国产丶欧美色综合| 国产一级免费在线观看| 国产精品劲爆视频| 999国产精品| 69久久精品无码一区二区| 亚洲免费高清视频在线| 午夜精品小视频| 97精品伊人久久久大香线蕉| 欧洲精品一区| 亚洲欧美另类动漫| 国产精品白丝在线| 精品国精品国产自在久不卡| 久久久免费av| 国产一卡不卡| 天天看片天天操| 亚洲综合精品久久| 青青视频在线观| 国产精品入口尤物| 在线免费观看日本欧美爱情大片| 粗大的内捧猛烈进出视频| 欧美日韩国产影院| 国产午夜在线观看| 91九色视频导航| 精品69视频一区二区三区Q| 爱爱免费小视频| 欧美人体做爰大胆视频| 免费看电影在线| 青青成人在线| 国产成人免费av在线| 久久久久久久久影院| 中文字幕在线亚洲| 亚洲天堂av资源在线观看| 可以在线看的黄色网址| 亚洲素人一区二区| 日本一区视频| 成人黄色在线免费| 亚洲专区免费| 538精品在线视频| 亚洲欧美激情视频| 精品久久亚洲| 黄色一级一级片| 亚洲精品菠萝久久久久久久| 撸视在线观看免费视频| 91成人在线看| 老司机精品久久| 久久久一二三区| 国产亚洲激情视频在线| 这里视频有精品| 999精品视频在线| 精品高清一区二区三区| 国产精品剧情| 秋霞久久久久久一区二区| 从欧美一区二区三区| 一区二区三区播放|