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

成年人深夜视频| 99视频在线| 欧美性x x x| 97久久亚洲| 欧美视频在线免费| 中文字幕黄色大片| 偷拍自拍在线视频| 精品在线亚洲视频| 午夜伦理精品一区| 国产精品18在线| 精品日产乱码久久久久久仙踪林| 91国偷自产一区二区三区成为亚洲经典| 亚洲国产欧美不卡在线观看| www.日日夜夜| 七七婷婷婷婷精品国产| 欧美激情xxxxx| 欧美a在线播放| 欧美日韩另类图片| 欧美一区二区女人| 日韩爱爱小视频| 麻豆成全视频免费观看在线看| 中日韩av电影| 精品麻豆av| av片免费播放| 久久精品二区亚洲w码| 97在线视频一区| 激情视频在线播放| 97久久视频| 亚洲人成网站999久久久综合| 国产麻豆剧传媒精品国产| 视频一区在线免费看| 精品久久久久久亚洲国产300| 超碰成人在线免费观看| 国产免费av高清在线| 91原创在线视频| 亚洲自拍偷拍视频| 亚洲手机在线观看| 日韩福利电影在线观看| 日本精品视频在线播放| 久草手机在线观看| 在线日韩中文| 欧美大成色www永久网站婷| 性爱在线免费视频| 成人羞羞网站| 在线视频一区二区| 亚洲午夜精品久久久久久高潮| 伦理一区二区三区| 亚洲成年人在线播放| 国产在线a视频| 国产一区二区三区免费观看在线 | 操91在线视频| 日本一道本视频| 精品理论电影在线| 亚洲色图25p| 久久婷婷五月综合| 精品国产一区二区三区久久久樱花 | 日韩免费一区二区三区在线播放| 在线观看av网页| 亚州欧美在线| 欧美一区二区三区思思人| 日韩不卡的av| 香蕉免费一区二区三区在线观看| 日韩一级片在线观看| 日韩视频在线观看一区二区三区| 亚洲综合视频| 日韩欧美第一区| 日本人添下边视频免费| 秋霞影视一区二区三区| 亚洲天堂免费在线| 2017亚洲天堂| 欧美日韩成人| 91干在线观看| 樱花视频在线免费观看| 美女高潮久久久| 亚洲xxxx视频| 免费国产羞羞网站视频| 久久五月婷婷丁香社区| 亚洲精品美女久久7777777| 国产乱色在线观看| 亚洲尤物在线视频观看| 欧美性久久久久| 福利视频亚洲| 欧美va亚洲va香蕉在线| 免费看黄色的视频| 亚洲乱码精品| 55夜色66夜色国产精品视频| 天天干天天插天天射| 国内欧美视频一区二区| 国产伦精品一区二区三毛| 肉丝一区二区| 亚洲欧美偷拍卡通变态| www.99热这里只有精品| a成人v在线| 欧美tickling网站挠脚心| 实拍女处破www免费看| 一区二区影视| 热久久视久久精品18亚洲精品| 一二三区中文字幕| 99在线精品视频| 亚洲无玛一区| 神马久久午夜| 日韩一级黄色大片| 国产123在线| 99国产精品99久久久久久粉嫩| 国产精品99久久久久久白浆小说| 国产成人av免费看| 国产喷白浆一区二区三区| 亚洲乱码日产精品bd在线观看| 中文在线资源| 亚洲精品在线三区| fc2ppv在线播放| 久久动漫亚洲| 国产美女精品久久久| 四虎久久免费| 色呦呦网站一区| 亚洲一区二区三区四区av| 日韩理论电影| 日本三级韩国三级久久| 国产 欧美 自拍| 亚洲男人的天堂在线aⅴ视频| 激情五月亚洲色图| 亚洲精品一区二区三区在线| 在线视频中文亚洲| 天堂网视频在线| 99久久精品免费看国产免费软件| 中文字幕综合在线观看| 成人在线视频播放| 日韩久久午夜影院| 日本少妇激情舌吻| 成人高清伦理免费影院在线观看| 天天爱天天做天天操| 福利精品在线| 中文字幕亚洲情99在线| 日本黄色中文字幕| 久久久国产综合精品女国产盗摄| 青青青在线视频播放| 视频一区在线| 九九精品在线观看| 精品欧美一区二区精品少妇| 亚洲色图视频网| 在线播放av中文字幕| 久久高清免费| 国产综合色香蕉精品| 欧美人xxx| 欧美精品乱人伦久久久久久| 黄色av片三级三级三级免费看| 日韩精品乱码免费| 午夜欧美一区二区三区免费观看| 午夜影院在线观看国产主播| 亚洲第一网中文字幕| 日产欧产va高清| 99r精品视频| 中文字幕日本最新乱码视频| 日韩欧美黄色| 日韩免费中文字幕| www 日韩| 4hu四虎永久在线影院成人| 操她视频在线观看| 国产一区亚洲一区| 激情五月六月婷婷| 牛牛影视久久网| 日本免费在线精品| 91福利在线视频| 538prom精品视频线放| 国产大片免费看| 成人免费高清在线| 久久精品国产精品亚洲色婷婷| 偷拍精品福利视频导航| 国产mv久久久| 麻豆影视在线观看_| 日韩一区二区三区免费观看| 国产无遮挡又黄又爽| 久久免费偷拍视频| 国产精品自在自线| 欧美体内she精视频在线观看| 国产精品一区二| 日韩久久一区二区三区| 色av中文字幕一区| 亚洲精品视频91| 色综合一个色综合| 999福利视频| 懂色av一区二区夜夜嗨| 国产91在线免费| 999国产精品999久久久久久| 超碰97国产在线| 超碰一区二区| 久久精品视频在线播放| 日本激情视频网站| 欧美在线观看视频一区二区| 男的操女的网站| www精品美女久久久tv| 中文字幕第38页| 亚洲精品乱码| 中文字幕色一区二区| 久久综合另类图片小说| 国产精品夜间视频香蕉| av小说在线播放| 色吧影院999| 国产77777| 欧美精品自拍偷拍| 男人午夜免费视频| 亚洲欧美激情视频在线观看一区二区三区| 国产 xxxx| 极品美女销魂一区二区三区免费| 日韩精品 欧美| 欧美黄色免费| 亚洲三区视频| 一呦二呦三呦国产精品| wwwxx欧美| 欧美爱爱视频| 国产成人一区二区三区小说| av日韩中文| 精品国产欧美一区二区三区成人| 日韩专区一区二区| 欧美精品一区二| 99久久精品免费看国产交换| 色素色在线综合| 日本少妇久久久| 一区二区三区美女| av最新在线观看| 日本一区二区三区视频视频| 人妻无码一区二区三区| 国产精品白丝av| 91小视频在线播放| 免费美女久久99| 免费观看成人在线视频| 在线一区免费观看| 欧美精品久久久久久久自慰| 伊人久久大香线蕉精品组织观看| 青娱乐国产91| 最新国产一区| 蜜桃999成人看片在线观看| 国产色噜噜噜91在线精品| dy888夜精品国产专区| www.久久久.com| 91精品国产综合久久香蕉| 全球最大av网站久久| 热草久综合在线| 日韩电影大全网站| 日韩美女写真福利在线观看| 在线看片福利| 琪琪第一精品导航| 涩涩视频在线播放| 日本一本a高清免费不卡| 天堂中文在线播放| 欧美最猛黑人xxxx黑人猛叫黄| 高清毛片在线观看| 91精品国产91久久久久| 麻豆视频在线观看免费网站黄| 午夜精品www| 国产精品一二三产区| 91国产精品视频在线| 三级在线看中文字幕完整版| 欧美怡红院视频一区二区三区 | 国产精品久久久久久搜索| 日本电影欧美片| 国产精品一区二区电影| 亚洲欧美专区| 97人人澡人人爽| 欧美大奶一区二区| 欧美日韩精品免费观看| 欧美综合在线视频观看| 日本黄色a视频| 激情丁香综合| 国产成人精品无码播放| 日本va欧美va欧美va精品| 亚洲欧美日韩三级| 国产高清不卡一区二区| 青青草视频网站| 久久久精品天堂| 91ts人妖另类精品系列| 亚洲欧洲中文日韩久久av乱码| 久久av高潮av无码av喷吹| 五月天婷婷综合| 一级片在线免费播放| 91精品福利在线一区二区三区 | 国产理论在线播放| 国产一区中文字幕| 亚洲国产精品自拍视频| 日本一区二区三区在线不卡| 日本青青草视频| 欧美性猛交xxxx乱大交极品| 在线观看黄色网| 精品国产sm最大网站免费看| 黄色av网站在线| 欧美日韩成人黄色| 日本欧美一区| 国产精品久久久久久久久婷婷| 久久不见久久见免费视频7| 天天综合中文字幕| 亚洲综合不卡| 国产精品探花在线播放| 91丨九色丨尤物| 国产福利视频网站| 欧美日韩日本国产| 国产精品免费无遮挡| 亚洲精品一二区| 超碰电影在线播放| 日韩av成人在线| 97视频一区| 中文网丁香综合网| 亚洲中午字幕| 国产一精品一aⅴ一免费| 日本一区二区三区国色天香| 久久精品久久精品久久| 欧美精品亚洲一区二区在线播放| 四虎在线视频免费观看| 久久影视电视剧免费网站| 日韩成人影音| 国产精品三区在线| 天天综合精品| 免费看a级黄色片| 97久久超碰国产精品| 久草免费在线观看视频| 欧美日韩国产123区| 你懂的在线网址| 午夜精品国产精品大乳美女| 久久久久久久久成人| 亚洲高清视频一区| 日韩制服丝袜先锋影音| 加勒比一区二区| 午夜激情久久久| 成人福利小视频| 啊v视频在线一区二区三区 | 国产1区2区在线观看| 狠狠综合久久av一区二区小说 | 国产男人搡女人免费视频| 亚洲国产精久久久久久 | 亚洲一区二区欧美| 国产免费黄色网址| 色狠狠久久aa北条麻妃| 主播大秀视频在线观看一区二区| 久久久com| 99在线精品免费视频九九视| 任你躁av一区二区三区| 亚洲黄一区二区三区| 国产丰满果冻videossex| 久久精品小视频| 国产精品一站二站| 成人在线免费观看网址| 国产真实乱偷精品视频免| 欧美激情精品久久久久久免费 | 午夜影院欧美| 国产精品久久久久久9999| 中文字幕一区二区在线播放| 在线观看亚洲国产| 日韩综合视频在线观看| 欧美videos粗暴| 手机在线视频你懂的| 激情亚洲综合在线| 日本a级片视频| 亚洲成色777777在线观看影院| 都市激情国产精品| 欧美一区二区高清在线观看| 秋霞午夜鲁丝一区二区老狼| 男人在线观看视频| 欧美成人激情免费网| 2020日本在线视频中文字幕| 极品尤物一区二区三区| 久久精品一本| 国产精品18在线| 欧美va亚洲va在线观看蝴蝶网| av伦理在线| 欧美日韩国产高清视频| 蜜桃视频一区二区| 亚洲色婷婷一区二区三区| 亚洲成人久久一区| 最新欧美电影| av电影一区二区三区| 丁香亚洲综合激情啪啪综合| 国产尤物在线视频| 在线观看亚洲视频| 国产美女视频一区二区| 少妇人妻无码专区视频| 久久久久久亚洲综合| 国产精品自产拍| 8x拔播拔播x8国产精品| 日本女优一区| 日本泡妞xxxx免费视频软件| 精品成人av一区| 自拍视频在线免费观看| 99久久99| 久久婷婷一区| 欧美黑吊大战白妞| 亚洲网站在线看| 综合成人在线| 欧美精品性生活| 亚洲一区中文在线| 国产女人在线视频| 国产99在线免费| 日本va欧美va瓶| 91在线看视频| 久久久999成人| 精品一区在线| 亚洲欧洲国产视频| 欧美日韩一区二区在线视频| 好看的中文字幕在线播放| 亚洲.欧美.日本.国产综合在线 | 国产黄色大片免费看| 日韩精品一区二区三区在线观看 |