成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 分析MySQL并發(fā)下的問題及解決方法

分析MySQL并發(fā)下的問題及解決方法

熱門標(biāo)簽:中科嘉智人工智能電銷機器人 上海智能外呼系統(tǒng)需要多少錢 銀川電銷外呼系統(tǒng)定制 哈爾濱crm外呼系統(tǒng)價格 電銷機器人好品牌門薩維l 西安400電話在哪里辦理 凱立德科技館地圖標(biāo)注 甘孜電話機器人廠家 做地圖標(biāo)注都需要什么工具

1、背景

對于數(shù)據(jù)庫系統(tǒng)來說在多用戶并發(fā)條件下提高并發(fā)性的同時又要保證數(shù)據(jù)的一致性一直是數(shù)據(jù)庫系統(tǒng)追求的目標(biāo),既要滿足大量并發(fā)訪問的需求又必須保證在此條件下數(shù)據(jù)的安全,為了滿足這一目標(biāo)大多數(shù)數(shù)據(jù)庫通過鎖和事務(wù)機制來實現(xiàn),MySQL數(shù)據(jù)庫也不例外。盡管如此我們?nèi)匀粫跇I(yè)務(wù)開發(fā)過程中遇到各種各樣的疑難問題,本文將以案例的方式演示常見的并發(fā)問題并分析解決思路。

2、表鎖導(dǎo)致的慢查詢的問題

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

mysql> select * from user where id=6;

這個表的記錄總數(shù)為3條,但卻執(zhí)行了13秒。

出現(xiàn)這種問題我們首先想到的是看看當(dāng)前MySQL進程狀態(tài):

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

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

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

session1:

session2:

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

session1:

session2:

當(dāng)session1執(zhí)行解鎖后,seesion2則立刻開始執(zhí)行寫操作,即讀-寫串行。

總結(jié):

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

解決辦法:

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

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

3、線上修改表結(jié)構(gòu)有哪些風(fēng)險?

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

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

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

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

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

總結(jié):通過這個例子我們對元數(shù)據(jù)鎖和online ddl有了一個基本的認識,如果我們在業(yè)務(wù)開發(fā)過程中有在線修改表結(jié)構(gòu)的需求,可以參考以下方案:

1、盡量在業(yè)務(wù)量小的時間段進行;

2、查看官方文檔,確認要做的表修改可以和DML并發(fā),不會阻塞線上業(yè)務(wù);

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

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

創(chuàng)建目的表結(jié)構(gòu)的空表,A_new;
在A表上創(chuàng)建觸發(fā)器,包括增、刪、改觸發(fā)器;
通過insert…select…limit N 語句分片拷貝數(shù)據(jù)到目的表
Copy完成后,將A_new表rename到A表。

4、一個死鎖問題的分析

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

演示環(huán)境:MySQL5.7.20 事務(wù)隔離級別:RR

表user:

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(300) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

下面演示事務(wù)1、事務(wù)2工作的情況:

事務(wù)1

事務(wù)2

事務(wù)監(jiān)控

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;

通過查詢元數(shù)據(jù)庫innodb事務(wù)表,監(jiān)控到當(dāng)前運行事務(wù)數(shù)為2,即事務(wù)1、事務(wù)2。

T3

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

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

監(jiān)控到當(dāng)前運行事務(wù)數(shù)為2。 T4 阻塞狀態(tài)

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

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

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

事務(wù)2被回滾,事務(wù)1仍在運行中,監(jiān)控當(dāng)前運行事務(wù)數(shù)為1。 T5

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

由于事務(wù)2被回滾,原來阻塞的update語句被繼續(xù)執(zhí)行。

監(jiān)控當(dāng)前運行事務(wù)數(shù)為1。 T6

commit;

Query OK, 0 rows affected (0.00 sec)

事務(wù)1已提交、事務(wù)2已回滾,監(jiān)控當(dāng)前運行事務(wù)數(shù)為0。

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

show engine innodb status\G

------------------------
LATEST DETECTED DEADLOCK
------------------------
2018-01-14 12:17:13 0x70000f1cc000
*** (1) TRANSACTION:
TRANSACTION 5120, ACTIVE 17 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 10, OS thread handle 123145556967424, query id 2764 localhost root updating
update user set name='haha' where id=4
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
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
Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0
0: len 4; hex 80000004; asc ;;
1: len 6; hex 0000000013fa; asc ;;
2: len 7; hex 520000060129a6; asc R ) ;;
3: len 4; hex 68616861; asc haha;;
4: len 4; hex 80000015; asc ;;

*** (2) TRANSACTION:
TRANSACTION 5121, ACTIVE 12 sec starting index read
mysql tables in use 1, locked 1
3 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 11, OS thread handle 123145555853312, query id 2765 localhost root updating
update user set name='hehe' where id=3
*** (2) HOLDS THE LOCK(S):
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
Record lock, heap no 5 PHYSICAL RECORD: n_fields 5; compact format; info bits 0
0: len 4; hex 80000004; asc ;;
1: len 6; hex 0000000013fa; asc ;;
2: len 7; hex 520000060129a6; asc R ) ;;
3: len 4; hex 68616861; asc haha;;
4: len 4; hex 80000015; asc ;;

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
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
Record lock, heap no 7 PHYSICAL RECORD: n_fields 5; compact format; info bits 0
0: len 4; hex 80000003; asc ;;
1: len 6; hex 0000000013fe; asc ;;
2: len 7; hex 5500000156012f; asc U V /;;
3: len 4; hex 68656865; asc hehe;;
4: len 4; hex 80000014; asc ;;

*** WE ROLL BACK TRANSACTION (2)

InnoDB狀態(tài)有很多指標(biāo),這里我們截取死鎖相關(guān)的信息,可以看出InnoDB可以輸出最近出現(xiàn)的死鎖信息,其實很多死鎖監(jiān)控工具也是基于此功能開發(fā)的。

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

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

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

從輸出結(jié)果看出,最后InnoDB回滾了事務(wù)2。

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

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

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

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

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

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

總結(jié):

1、如果我們業(yè)務(wù)開發(fā)中出現(xiàn)死鎖如何檢查出?剛才已經(jīng)介紹了通過監(jiān)控InnoDB狀態(tài)可以得出,你可以做一個小工具把死鎖的記錄收集起來,便于事后查看。

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

5、鎖等待問題的分析

在業(yè)務(wù)開發(fā)中死鎖的出現(xiàn)概率較小,但鎖等待出現(xiàn)的概率較大,鎖等待是因為一個事務(wù)長時間占用鎖資源,而其他事務(wù)一直等待前個事務(wù)釋放鎖。

事務(wù)1

事務(wù)2

事務(wù)監(jiān)控

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;

通過查詢元數(shù)據(jù)庫innodb事務(wù)表,監(jiān)控到當(dāng)前運行事務(wù)數(shù)為2,即事務(wù)1、事務(wù)2。

T3 其他查詢操作

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

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

監(jiān)控到當(dāng)前運行事務(wù)數(shù)為2。 T4 其他查詢操作

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

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

監(jiān)控到當(dāng)前運行事務(wù)數(shù)為2。 T5 commit; 事務(wù)1已提交,事務(wù)2未提交,監(jiān)控到當(dāng)前運行事務(wù)數(shù)為1。

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

在MySQL元數(shù)據(jù)表中有對事務(wù)、鎖等待的信息進行收集,例如information_schema數(shù)據(jù)庫下的INNODB_LOCKS、INNODB_TRX、INNODB_LOCK_WAITS,你可以通過這些表觀察你的業(yè)務(wù)系統(tǒng)鎖等待的情況。你也可以用一下語句方便的查詢事務(wù)和鎖等待的關(guān)聯(lián)關(guān)系:

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;

結(jié)果:

waiting_trx_id: 5132
waiting_thread: 11
wating_query: update user set name='hehe' where id=3
blocking_trx_id: 5133
blocking_thread: 10
blocking_query: NULL

總結(jié):

1、請對你的業(yè)務(wù)系統(tǒng)做鎖等待的監(jiān)控,這有助于你了解當(dāng)前數(shù)據(jù)庫鎖情況,以及為你優(yōu)化業(yè)務(wù)程序提供幫助;

2、業(yè)務(wù)系統(tǒng)中應(yīng)該對鎖等待超時的情況做合適的邏輯判斷。

6、小結(jié)

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

您可能感興趣的文章:
  • MySQL并發(fā)更新數(shù)據(jù)時的處理方法
  • Tomcat+Mysql高并發(fā)配置優(yōu)化講解
  • PHP利用Mysql鎖解決高并發(fā)的方法
  • PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法
  • Yii+MYSQL鎖表防止并發(fā)情況下重復(fù)數(shù)據(jù)的方法
  • MySQL中實現(xiàn)高性能高并發(fā)計數(shù)器方案(例如文章點擊數(shù))
  • MySQL中SELECT+UPDATE處理并發(fā)更新問題解決方案分享
  • 利用mysql事務(wù)特性實現(xiàn)并發(fā)安全的自增ID示例
  • 深入mysql并發(fā)插入優(yōu)化詳解
  • Mysql事務(wù)并發(fā)問題解決方案

標(biāo)簽:山南 平頂山 四川 濮陽 那曲 安徽 浙江 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《分析MySQL并發(fā)下的問題及解決方法》,本文關(guān)鍵詞  分析,MySQL,并發(fā),下,的,問題,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分析MySQL并發(fā)下的問題及解決方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于分析MySQL并發(fā)下的問題及解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲一区二区三区四区五区黄| 91麻豆文化传媒在线观看| 久久久久久久无码| 欧美极品videos大乳护士| 飘雪影视在线观看免费观看| 亚洲免费在线视频一区 二区| 久热国产视频| 国产精品久久久久久久久免费高清| 国产视频综合在线| 日韩av官网| 欧美精品99久久久**| 免费观看又污又黄在线观看国产| 黄色片子免费看| 亚洲色图丝袜| 亚洲天堂777| 日本丰满少妇一区二区三区| 亚洲男人的天堂网站| 色综合天天爱| 7777精品伊人久久久大香线蕉的| 欧美xxxxbb| 第一福利永久视频精品| 福利写真视频网站在线| 亚洲第一网站男人都懂| 欧美一级片免费看| 91精品国产一区二区人妖| 国产亚洲欧美激情| 国产无遮挡又黄又爽又色视频| 91免费看片在线| 国产一区二区三区网站| 欧美在线va视频| 久久成人综合| 99亚洲精品| 国产精品秘入口| 久久久久久久色| 国产性色视频| 公共露出暴露狂另类av| 九九视频精品全部免费播放| 亚洲第一欧美| 成人羞羞在线观看网站| 精品剧情v国产在线观看在线| 亚洲精品一区二区在线| 两女双腿交缠激烈磨豆腐| 免费高清视频在线一区| 91精品一区二区三区蜜桃| 欧美 日韩 国产 一区二区三区| 中文字幕亚洲欧美| 九九热在线精品视频| 美女三级黄色片| 精品国产午夜肉伦伦影院| 亚洲视频小说图片| 日韩mv欧美mv国产网站| 亚洲综合国产激情另类一区| 日韩美女在线看免费观看| 欧美日免费三级在线| 国产黄色录像片| 亚洲护士老师的毛茸茸最新章节| 久久久久狠狠高潮亚洲精品| av影音在线| 亚洲一区二区在线播放| 深夜精品寂寞黄网站在线观看| 麻豆国产va免费精品高清在线| av在线播放一区二区三区| 亚洲经典视频| 69夜色精品国产69乱| 精品亚洲一区二区三区四区五区高| 成人免费毛片糖心| 国产成人精品一区二区在线| 午夜伦理福利在线| 欧美三级视频在线播放| 伊人免费视频二| 黄色免费在线播放| 蜜臀久久精品久久久用户群体| 久久综合九色综合久久久精品综合| 91在线直播亚洲| 91综合国产| 精品一区二区三区免费| 日本电影在线观看| 日本午夜精品视频| 国产免费a视频| 伊人伊成久久人综合网小说| 91精品中文在线| 99久久99久久精品国产片果冻| 中文字幕一区二区三区中文字幕| 68国产成人综合久久精品| 久久精品国产成人精品| 国产精品视频久久久久久久| 亚洲成在人线免费| 新婚的少妇hd中文字幕| 精品在线观看国产| 久久99精品视频一区97| av天在线播放| 国产伦精品一区二区三区千人斩| 亚洲欧美一区二区三区| 97人洗澡人人免费公开视频碰碰碰| av中文字幕一区二区| 亚洲免费看黄网站| av日韩中文字幕| 视频一区中文字幕精品| 天天干天天综合| 亚洲精品网址| 天天av导航| 日韩欧美在线网址| 亚洲最大av| 日韩午夜激情av| 美国一级片在线免费观看视频| 国产资源在线看| 欧美精品七区| 欧美黄色直播| 在线观看视频黄色| 91插插插影院| 狂野欧美性猛交xxxx乱大交| 国产三区在线成人av| 96精品视频在线| 国产成人亚洲精品狼色在线| 国产精品日韩在线观看| 午夜伦理福利在线| 国内精品国语自产拍在线观看| 亚洲国产综合在线| japanese在线| 天堂在线中文网| 亚洲欧美日韩国产中文| 欧美国产日本在线| 在线免费观看日韩视频| 国产网红女主播精品视频| 久久久久久久波多野高潮日日| 2019中文在线观看| 亚洲午夜国产一区99re久久| 国产一区二区丝袜高跟鞋图片| 久久久久久九九| 黄色av免费| 91精品国产乱码久久久久久久久| 91国内精品白嫩初高生| 日韩在线播放av| 日韩欧美视频免费在线观看| www.桃色av嫩草.com| 日本一级二级视频| 制服丝袜亚洲精品中文字幕| 成人免费淫片aa视频免费| 欧美视频四区| 欧美有码在线观看| 欧美一级做一级爱a做片性| 亚洲最大在线视频| 欧美精品在线视频| 日韩不卡免费视频| 欧美变态凌虐bdsm| 亚洲三区在线观看| 国产超碰97| 好吊视频一二三区| 日本一二区免费| 六月丁香婷婷久久| 日韩五码在线观看| 成人黄色免费网址| 国产欧美日产一区| 91久久国产精品91久久性色| 国产黄色免费看| 亚洲日韩第一页| 少妇久久久久久久久久| 欧美深夜视频| 免费xxxxx网站中文字幕| 福利视频免费在线观看| 亚洲精品资源在线| 国产在线观看免费一区| 国产乱淫a∨片免费观看| 久久中文字幕免费| 精品一区二区三区影院在线午夜| 欧美日韩亚洲国产| 欧美日韩大片一区二区三区| 日韩女同互慰一区二区| www.91视频.com| 日本一区二区三区四区在线观看| 秋霞av亚洲一区二区三| 国产一级精品aaaaa看| 日韩免费黄色av| 久久精品亚洲精品国产欧美kt∨| 日韩久久综合| 欧美羞羞视频| 久久久久久亚洲综合影院红桃| 国产性生交xxxxx免费| 欧美精品video| 日韩一区二区三区免费播放| 精品孕妇一区二区三区| 三年中文高清在线观看第6集| 激情国产一区| 久久久久久久久久久99| 夜夜骑日日射| 国产aⅴ2021| 99视频在线看| 亚洲人成网站在线播放2019| 在线观看av大片| 91蝌蚪视频在线观看| 天天做日日爱夜夜爽| 欧美日韩三区| 国产女无套免费视频| 黄色在线视频网址| 成人免费观看毛片| 国产精品男人爽免费视频1| proumb性欧美在线观看| 国产视频久久久久久久| 久久伊人精品天天| 精品久久久久成人码免费动漫| 成年人福利视频| 日本少妇xxxx| 精品国产免费久久| 久久久一区二区三区四区| 国产精品h视频| 999国内精品视频在线| 5g影院天天爽成人免费下载| 欧美一级在线亚洲天堂| 国产成人小视频在线观看| 日韩欧美伦理电影院| 久久香蕉网站| 亚洲天堂视频一区| www.亚洲激情.com| 欧美日韩免费| 成年女人的天堂在线| 国产高清在线免费| 激情丁香综合五月| 手机福利视频欧美| 日本羞羞视频| 亚洲国产成人精品一区二区三区| 欧美老年两性高潮| 老牛影视av老牛影视av| 夜夜嗨av一区二区三区四区| 色喇叭免费久久综合网| 欧美日韩一区二区三区在线免费观看| 日韩avvvv在线播放| 五月婷婷开心中文字幕| 久草手机在线观看| 成人美女视频在线观看18| 欧美女v视频| 99国产精品久久久久久久久久| 国产精品福利久久久| 国产一级片子| 好吊视频一区二区三区| 成年人免费大片| 精品美女一区二区| 天天综合色天天综合色h| 黄色a**址| 中文在线字幕观看| 在线观看wwww| 日韩高清欧美激情| 另类小说第一页| 国产免费内射又粗又爽密桃视频| 亚洲精品视频一区| 精品成人免费| 国产亚洲一区二区三区| 美女毛片一区二区三区四区最新中文字幕亚洲| 亚洲va中文在线播放免费| 免费网站看v片在线a| 福利片一区二区三区| 国产精品久久国产精麻豆96堂| 亚洲国产精品久久精品怡红院| 亚洲高清免费| 国产精品99久久久久久人| 亚洲精品乱码久久久久久蜜桃动漫| 2020国产精品| 久久看人人爽人人| 国产资源精品在线观看| 国产高中女学生第一次| 精品系列免费在线观看| 国产亚洲a∨片在线观看| 中文字幕一区二区三区四区五区人| 日韩中文字幕组| 亚洲理伦在线| 中文字幕日韩视频| 91免费在线| 欧美高清www午色夜在线视频| 欧美性bbb| 亚洲国产成人va在线观看麻豆| 日韩一区二区精品在线观看| 欧美亚洲国产一区二区三区va| 午夜精品久久久久久久99水蜜桃| 猛男欧美办公室激情在线| 亚洲欧美在线aaa| 精品樱空桃一区二区三区| 日韩欧美国产二区| 国产精品蜜臀在线观看| 韩国精品一区二区三区六区色诱| 欧美午夜网站| 欧美精品韩国精品| 国产精品6666| 99久久免费看精品国产一区| 色爱综合网欧美| 91国拍精品国产粉嫩亚洲一区| 偷拍中文亚洲欧美动漫| 一区二区在线观看免费| 热久久免费视频| 久久人妻精品白浆国产| 国产精品三级视频| 国产精品白丝在线| seseavlu视频在线| 欧美尤物美女在线| 91av在线影院| 日本在线观看天堂男亚洲| 国产一区二区三区在线视频观看| 手机免费看av网站| 亚洲av永久无码国产精品久久| 精品日本高清在线播放| 精品日本一线二线三线不卡| 春意影院在线| 日韩精品亚洲一区| 日韩免费观看高清完整版在线观看| 极品白浆推特女神在线观看| 综合国产精品久久久| 青青久在线视频| 日本伦理一区二区三区| 国产在线精品一区二区三区不卡| 精品人妻无码一区二区三区蜜桃一| 亚洲视频你懂的| 最新在线观看av| 99久久精品费精品国产一区二区| 免费在线黄色网| 精品视频在线观看一区| 少妇高潮一区二区三区| 日日噜噜夜夜狠狠久久丁香五月| 欧美三级午夜理伦| 精品亚洲一区二区三区| 欧美国产精品中文字幕| 91小视频免费看| 一本一本久久a久久精品综合麻豆| 日本中文字幕在线视频观看| 国产又大又粗又爽的毛片| 国产在线观看免费av| 美女脱光衣服与内衣内裤一区二区三区四区| 日韩人妻精品无码一区二区三区| 国产一区欧美一区| 欧美日韩99| 激情综合网俺也去|