亚洲狼人综合干_国产成人自拍网_97久草视频_日韩欧美在线网站_国产福利精品av综合导导航_粉嫩13p一区二区三区_成年人视频网站免费观看_国产亚洲综合久久_秋霞精品一区二区三区_国产精品99久久久久久久久_美女日韩在线中文字幕_久久免费在线观看

當前位置: 首頁 ? 資訊 ? 新科技 ? 正文

救命!雙11剛開始差點被MySQL死鎖坑慘了……

IP屬地 中國·北京 編輯:周琳 dbaplus社群 時間:2024-10-23 12:25:29

一、背景

最近雙十一開門紅期間組內出現了一次因 Mysql 死鎖導致的線上問題,當時從監控可以看到數據庫活躍連接數飆升,導致應用層數據庫連接池被打滿,后續所有請求都因獲取不到連接而失敗。

整體業務代碼精簡邏輯如下:

@Transaction

public void service(Integer id) {

delete(id);

insert(id);

}

數據庫實例監控:

圖1.數據庫實例監控示意

當時通過分析上游問題流量限流解決后,后續找時間又重新分析了下問題發生的根本原因,現將其總結如下:本篇文章會先對 Mysql 中的各種鎖進行分析,包括互斥鎖、間隙鎖和插入意向鎖,讓大家對各種鎖的使用場景有一個了解,然后在此基礎上再對本問題進行分析,希望大家未來再碰到相似場景時,能夠快速定位問題。

二、Mysql鎖機制

在 Mysql 中為了解決對同一行記錄并發寫的問題,引入了行鎖機制,多個事務不能同時對一行數據進行修改操作,當需要對數據庫中的一行數據進行修改時,會首先判斷該行數據是否加鎖,如果沒加鎖,那么當前事務加鎖成功,可以進行后續的修改操作;但如果該行數據已經被其他事務加鎖,則當前事務只有等待加鎖的事務釋放鎖后才能加鎖成功,繼續執行修改操作。

本篇文章中所有實驗用到的建表語句:

create table `test` (

`id` int(11) NOT NULL,

`num` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `num` (`num`)

) ENGINE = InnoDB;

insert into

test

values

(10, 10),

(20, 20),

(30, 30),

(40, 40),

(50, 50);

1.Shared and Exclusive Locks

shared(S) lock 表示共享鎖,當一個事務持有某行上的 S 鎖后可以對該行的數據進行讀操作,通過語句 select ... from test lock in share mode 可以添加共享鎖,一般使用的較少,不做過多闡述。

exclusive(X) lock 表示互斥鎖,當一個事務對某行數據進行 update 或 delete 操作時都要先獲取到該記錄上的 X 鎖,如果已經有其他事務獲取到了該記錄上的 X 鎖,那么當前事務會阻塞等待直到上一事務釋放了對應記錄上的 X 鎖。

S 鎖之間不互斥,多個事務可以同時獲取一條記錄上的 S 鎖 X 鎖之間互斥,多個事務不能同時獲取同一條記錄上的 X 鎖 S 鎖和 X 鎖之間互斥,多個事務不能同時獲取同一條記錄上的 S 鎖和 X 鎖

當多個事務同時去 update 索引上同一條記錄時,都需要先獲取到該記錄上的 X 鎖,所謂的鎖也就是會在內存中生成一個數據結構來記錄當前的事務信息、鎖類型和是否等待等信息。下圖中就是 T1 和 T2 同時去更新 id = 30 的這行記錄,并且 T1 成功獲取到了鎖,其在內存中生成的鎖結構信息字段 is_wating 為 false,可以繼續執行事務的后續邏輯,而 T2 獲取鎖失敗,則生成的鎖結構信息字段 is_wating 為 true,阻塞等待 T1 上的鎖釋放。

圖2. T1 和 T2 同時去更新 id = 30 的這行記錄示意

互斥鎖在 Mysql 日志中的鎖信息為:lock_mode X locks rec but not gap

RECORD LOCKS space id 58 page no 3 n bits 72 index `PRIMARY` of table `test`.`t`

trx id 10078 lock_mode X locks rec but not gap

Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0

0: len 4; hex 8000000a; asc ;;

1: len 6; hex 00000000274f; asc 'O;;

2: len 7; hex b60000019d0110; asc ;;

2.Gap Locks

上一小節中介紹了 Exclusive Locks,該鎖可以避免多個事務同時對一行記錄進行更新操作,但不能解決幻讀的問題,所謂的幻讀就是指一個事務在前后兩次查詢同一個范圍時,后一次查詢到了前一次沒有的記錄。

在上面這個場景中,session A 分別在 T1、T3 時刻進行了兩次范圍查詢,session B 在 T2 時刻插入了一條該范圍內的數據,如果 session A 能在 T3 時刻查詢出 session B 插入的數據,就說明發生了幻讀。此時只使用互斥鎖是無法解決幻讀的,因為 num = 12 的記錄在數據庫中還不存在,不能給其加上互斥鎖來防止 T2 時刻 session B 的插入。

因此為了解決幻讀問題,只有引入新的鎖機制,也就是間隙鎖(Gap Locks)。間隙鎖和互斥鎖不同,互斥鎖是行鎖,只會鎖定一行特定的記錄,而間隙鎖則是鎖定兩行記錄之間的空隙,防止其他事務在此間隙中插入新的記錄。

引入了間隙鎖之后,session A 在 T1 時刻會給 id = 20 記錄生成一個 Gap Locks,之后 session B 在 T2 時刻想要插入記錄時,需要先判斷待插入位置的后一條記錄上是否存在 Gap Locks,很明顯此時 id = 20 的記錄上已經存在了 Gap Locks,那么session B 就需要在 id = 20 的記錄上生成一個插入意向鎖,并進入鎖等待。

圖3.引入了間隙鎖后

間隙鎖在 Mysql 中的鎖日志信息如下:lock_mode X locks gap before rec。

RECORD LOCKS space id 133 page no 3 n bits 80 index PRIMARY of table `test`.`test` trx id 38849 lock_mode X locks gap before rec

Record lock, heap no 4 PHYSICAL RECORD: n_fields 4; compact format; info bits 0

0: len 4; hex 8000001e; asc 30 ;;

1: len 6; hex 00000000969c; asc ;;

2: len 7; hex a60000011a0128; asc (;;

3: len 4; hex 8000001e; asc ;;

間隙鎖雖然解決了幻讀問題,但因每次都會鎖住一段間隙,大大降低了數據庫整體的并發度,且因間隙鎖和間隙鎖之間不互斥,不同事務可以同時對同一間隙加上 Gap Locks,這也往往是各種死鎖產生的源頭。

3.Next-Key Locks

Next-Key Locks 是 (Shard/Exclusive Locks + Gap Locks) 的結合,當 session A 給某行記錄 R 添加了互斥型的 Next-Key Locks 后, 相當于擁有了記錄 R 的 X 鎖和記錄 R 的 Gap Locks。

在上面 Gap Locks 的例子中事務 1 加的就是 Next-Key Locks,即同時給 id = 20 的記錄加了 X 鎖和 Gap 鎖。

在可重復讀隔離級別下,update 和 delete 操作默認都會給記錄添加 Next-Key Locks,Mysql 中 Next-Key Locks 的鎖日志信息為:lock_mode X

RECORD LOCKS space id 58 page no 3 n bits 72 index `PRIMARY` of table `test`.`t`

trx id 10080 lock_mode X

Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0

0: len 8; hex 73757072656d756d; asc supremum;;

Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0

0: len 4; hex 8000000a; asc ;;

1: len 6; hex 00000000274f; asc 'O;;

2: len 7; hex b60000019d0110; asc ;

4.Insert Intention Locks

插入意向鎖(Insert Intention Locks) 也是一種間隙鎖,由 INSERT 操作在行數據插入之前獲取。

在插入一條記錄前,需要先定位到該記錄在 B+ 樹中的存儲位置,然后判斷待插入位置的下一條記錄上是否添加了 Gap Locks,如果下一條記錄上存在 Gap Locks,那么插入操作就需要阻塞等待,直到擁有 Gap Locks 的那個事務提交,同時執行插入操作等待的事務也會在內存中生成一個鎖結構,表明有事務想在某個間隙中插入新記錄,但目前處于阻塞狀態,生成的鎖結構就是插入意向鎖。

實驗模擬如下:

對于語句 select * from test where id = 25 for update 因當前表中不存在該記錄,在可重復讀隔離級別下,為了避免幻讀,會給 (20, 30] 間隙加上 Gap Locks。

從鎖日志可以看出 session 1 給記錄 30 添加了間隙鎖(lock_mode X locks gap before rec)。

RECORD LOCKS space id 133 page no 3 n bits 80 index PRIMARY of table `test`.`test` trx id 38849 lock_mode X locks gap before rec

Record lock, heap no 4 PHYSICAL RECORD: n_fields 4; compact format; info bits 0

0: len 4; hex 8000001e; asc 30 ;;

1: len 6; hex 00000000969c; asc ;;

2: len 7; hex a60000011a0128; asc (;;

3: len 4; hex 8000001e; asc ;;

當 session 2 插入記錄 26 時,會在 B+ 樹中先定位到待插入位置,再判斷插入位置的間隙是否存在 Gap Locks,也就是判斷待插入位置的后一記錄 id = 30 是否存在 Gap Locks,如果存在需要在該記錄上生成插入意向鎖等待。

RECORD LOCKS space id 133 page no 3 n bits 80 index PRIMARY of table `test`.`test` trx id 38850 lock_mode X locks gap before rec insert intention waiting

Record lock, heap no 4 PHYSICAL RECORD: n_fields 4; compact format; info bits 0

0: len 4; hex 8000001e; asc 30 ;;

1: len 6; hex 00000000969c; asc ;;

2: len 7; hex a60000011a0128; asc (;;

3: len 4; hex 8000001e; asc ;;

此時 session 2 和 session 3 都在 id = 30 的記錄上添加了插入意向鎖等待 session 1 上的 Gap Locks 釋放,生成的鎖記錄如下:

圖5.生成的鎖記錄示意

三、線上問題分析

在對 Mysql 中的各種鎖結構有了一個清晰的了解之后,回過頭來再看看前面的線上問題:

@Transaction

public void service(Integer id) {

delete(id);

insert(id);

}

對于上面的業務代碼可能存在下面兩種情況:

傳入的參數 id 在原數據庫中不存在傳入的參數 id 在原數據庫中存在

本次主要會針對 id 記錄在原數據庫中不存在進行分析。

因 id = 15 在數據庫中不存在,在 T1 時刻 session 1 會給其所在間隙的下一條記錄添加上 Gap Locks,又因 Gap Locks 不互斥, 在 T2 時刻 session 2 和session 3 都會同時獲取到 id = 20 的 Gap 鎖。

下圖中 tx: T1、T2、T3 分別代表 session 1、session 2 和 session 3。

圖6.

當在 T3 時刻 session 1 插入 id = 15 的記錄時,會判斷其插入位置的后一條記錄是否存在 Gap Locks,如果存在,則需要在該記錄上生成 Insert Intention Locks 并等待持有 Gap Locks 的事務釋放鎖。

圖7.

在 T4 時刻 session 2 執行插入語句,同樣會因插入位置的后一條記錄中存在 Gap Locks 而需要生成 Insert Intention Locks 等待。此時很明顯就形成了死鎖,session 1 生成插入意向鎖等待 session 2 和 session 3 上的 Gap 鎖釋放,而 session 2 同樣生成插入意向鎖等待 session 1 和 session 3 上的 Gap 鎖釋放。

圖8.

在 T4 時刻檢測到死鎖后,Mysql 會選擇其中一個事務進行回滾,假設此時 session 2 被回滾,釋放了其持有的所有鎖資源,session 1 可以繼續執行嗎?很明顯不可以,session 1 還同時在等待 session 3 上的 Gap 鎖釋放,繼續阻塞等待。

在 T5 時刻 session 3 開始執行插入語句,此時同 T4 時刻,死鎖形成,session 1 生成的插入意向鎖正在等待 session 3 上的 Gap Locks 釋放,session 3 上生成的插入意向鎖正在等待 session 1 上的 Gap Locks 釋放,此時 session 3 回滾釋放所有鎖資源后,session 1 才可以最終執行成功。

圖9.

在完成了三個并發線程的死鎖分析后,可能有人會想雖然有死鎖,但通過死鎖檢測可以很快檢測出,程序也可以正常執行,這有什么問題呢?其實上面沒有問題主要是因為并發量較小,死鎖檢測可以很快檢測出,如果此時將并發量擴大 100 倍甚至 1000 倍后,還會沒有問題嗎?

看看當時出現線上問題時,接口的調用量情況:

圖10.出現線上問題時接口的調用量

進一步在本地模擬 300 個線程并發執行,因人腦并發分析所有事務的執行情況的話會非常復雜,本次只以事務 1 為一個點來進行分析。

從圖中可以看到當 T1 在執行插入語句時,需要等待 T2- T101 上持有的 Gap Locks 釋放,之后 T2 - T6 可能同時執行插入語句,然后進行死鎖檢測,事務回滾,看著似乎只要后續有事務執行了插入語句就會執行死鎖回滾,正常運行,但在死鎖檢測的過程中還會有新事務(T101 - T 200 )獲取到 Gap Locks,造成鎖等待隊列中的事務越來越多,而 Mysql 的整體死鎖檢測時間復雜度為 O(n^2),鎖等待隊列中的事務較多時,每一次有新事務進行鎖等待,死鎖檢測都需要遍歷鎖等待隊列中在其之前等待的事務,判斷是否會因自己的加入形成環,此時檢測會非常消耗 CPU 資源,造成數據庫整體性能下降,死鎖檢測耗時增加,Mysql 活躍連接數大幅增加,并且因鎖等待而連接無法釋放,最終造成應用層連接池被打滿。

圖11.

綜上分析,本次出現問題的最主要原因是在短時間內存在大并發的請求對同一行數據進行先刪除再插入操作(先更新再插入同理),造成了死鎖等待,應用層連接池被打滿,大量上游請求超時重試,進一步導致鎖等待,最終影響了所有依賴該數據庫的業務。

因此對于未來在業務代碼中存在相似邏輯的地方,一定要做好防重校驗,避免短時間內存在對同一行數據的先更新再插入的并發操作。同時在可重復讀隔離別下,更新和刪除操作默認都會添加 Next-Key Locks,間隙鎖的引入使得死鎖問題在并發情況下很容易出現,這也是在業務邏輯實現上需要考慮的問題。

四、總結

本文以一個線上問題為背景,對 Mysql 中的各種鎖機制進行了詳細的總結,分析了各個鎖的加鎖時機和具體使用場景,其中特別要注意間隙鎖的使用,因間隙鎖和間隙鎖之間不互斥,當多個事務之間并發執行時很容易形成死鎖。

作者丨京東物流 張弓言

來源丨公眾號:京東技術(ID:jingdongjishu)

歡迎廣大技術人員投稿,投稿郵箱:editor@dbaplus.cn

免責聲明:本網信息來自于互聯網,目的在于傳遞更多信息,并不代表本網贊同其觀點。其內容真實性、完整性不作任何保證或承諾。如若本網有任何內容侵犯您的權益,請及時聯系我們,本站將會在24小時內處理完畢。

精品国产欧美一区二区五十路| 日韩av电影免费在线| 国产精品熟女一区二区不卡| 国产无遮挡又黄又爽又色| 在线观看xxxx| 亚洲成人av免费| 欧美国产精品va在线观看| 青草青青在线视频| 精品国产乱码久久久久久鸭王1| 性色av蜜臀av| 欧美日韩精品在线视频| 91国产视频在线| 国产女女做受ⅹxx高潮| 国产精品第9页| 亚洲一区影音先锋| 久久亚洲国产精品成人av秋霞| 99久久精品无码一区二区毛片 | 精品国产区在线| 中文在线永久免费观看| 国产精品1区二区.| 精品少妇一区二区三区在线播放| 国产精品久久久久999| 特级黄色片视频| 黄色a在线观看| 亚洲精品久久久久久久久久久久| 亚洲成人一区二区三区| 亚洲国产成人无码av在线| 亚洲国产wwwccc36天堂| 成人国产精品一区二区| 国产又黄又粗的视频| 中文字幕欧美国产| 97激碰免费视频| 免费涩涩18网站入口| 国产999久久久| 欧美一区二区三区四区久久| 欧美一区二区在线视频观看| 男人在线观看视频| 国产精品色眯眯| 日韩av电影手机在线| 国模无码视频一区| 高清在线不卡av| 欧美激情视频一区| 欧美69精品久久久久久不卡| 久久国产日韩欧美精品| 欧美一区第一页| 青青草视频成人| 精品久久久久一区二区国产| 在线成人激情视频| 亚洲精品性视频| www国产成人免费观看视频 深夜成人网| 九色精品免费永久在线| 波多野吉衣在线视频| 国产哺乳奶水91在线播放| 欧美一二区视频| 能看的毛片网站| 成人丝袜视频网| 亚洲free嫩bbb| 久久精品偷拍视频| 欧美v亚洲v综合ⅴ国产v| 人妻久久久一区二区三区| 国产黄色精品视频| 亚洲精品日产aⅴ| 一级黄色小视频| 久久国产精彩视频| 黄色一级免费视频| 亚洲精品美女视频| 在线免费观看污视频| 欧美在线视频全部完| 欧美女同在线观看| 亚洲国产成人精品视频| 欧美特级黄色录像| 一本一道久久久a久久久精品91 | 天天干,夜夜爽| 久久视频在线观看中文字幕| 国产成人午夜99999| 蜜桃麻豆91| 韩国v欧美v亚洲v日本v| 男女视频在线看| 亚洲成av人片在www色猫咪| 国产区亚洲区欧美区| 亚洲精品久久久久久无码色欲四季 | 26uuu国产一区二区三区| 成人在线视频网站| 久久三级福利| 欧美日韩精品免费在线观看视频| 91影院在线播放| 国产精品一区二区3区| 日韩成人一区二区| 成人网在线观看| 国产99精品视频| 日韩精品一区二区免费| 国产成人99久久亚洲综合精品| 日本一区二区不卡高清更新| 91在线观看高清| 欧美少妇性生活视频| 欧美日本一道本| 日本三级欧美三级| 日韩在线视频网| 午夜精品久久久久久久99 | 国产欧美日韩不卡| 日本精品久久久久久久久久| 久久综合久久久久88| 久久久久国产精品熟女影院| 悠悠色在线精品| 美女久久久久久久久久| 日韩欧美高清在线| 亚洲 日本 欧美 中文幕| 91精品国产综合久久久久久丝袜| 亚洲第一页视频| 日韩欧美一区二区在线观看| 成人免费黄色大片| 天天插天天操天天射| 欧美日韩亚洲综合| 中国女人特级毛片| 久久影院模特热| 精品亚洲欧美一区| 亚洲成人天堂网| 日韩精品一区二区三区视频在线观看| a视频免费观看| 毛片精品免费在线观看| 国产一区二区久久| 爱豆国产剧免费观看大全剧苏畅 | 奇米精品一区二区三区在线观看| 亚洲蜜桃av| 日韩一区二区免费在线电影| 婷婷丁香综合网| 国产精品9999久久久久仙踪林| 久久久久青草大香线综合精品| 六月丁香激情网| 欧美一二区视频| www.国产com| 色一情一乱一乱一区91| 亚洲国产精久久久久久久| 无码人妻精品一区二| 亚洲色欲久久久综合网东京热| 精品久久久久久久久久久久久久久| 国产黄色片免费| 成人在线播放网址| 日韩一区和二区| 性xxxxbbbb| 西西大胆午夜视频| 黑人另类av| 欧美精品九九99久久| 在线视频播放大全| 欧美日韩在线免费观看视频| 在线亚洲精品福利网址导航| 亚洲精品国产suv一区| 日韩不卡视频一区二区| 韩国一区二区电影| 精品日韩在线观看| 日韩手机在线视频| 91亚洲精品久久久蜜桃借种| yw.139尤物在线精品视频| 99久久精品免费看国产免费软件| 国产乡下妇女做爰视频| 男女视频一区二区三区| 99九九电视剧免费观看| 久久久成人av| 丰满肉肉bbwwbbww| 青青青在线免费观看| 最新中文字幕2018| 美国av一区二区三区| 欧美国产日韩一区二区三区| 欧美亚洲综合网| 国产精品久久久爽爽爽麻豆色哟哟 | 久久亚洲a v| av一区二区在线看| 97视频在线观看免费| 欧美喷潮久久久xxxxx| 国产精品第五页| 国产在线精品一区二区| 伊人网站在线观看| 性欧美一区二区| 久久精品免费网站| 99热都是精品| 国产欧美在线一区二区| 久久久女人电视剧免费播放下载| 欧美一卡二卡三卡| 尤物在线观看一区| 91小视频免费观看| 国产自产视频一区二区三区| 99久久精品无免国产免费| 麻豆91精品91久久久| 日本一区二区视频在线播放| 亚洲欧洲国产视频| xxww在线观看| 免费国产成人av| 尤物av无码色av无码| 成年在线观看视频| 免费看成人午夜电影| 91精品视频播放| 国产日本欧美在线观看 | 一级做a爰片久久毛片| 精品99在线观看| 国产乱国产乱老熟300| 日本黄色免费观看| 朝桐光av一区二区三区| 亚洲精品在线网址| av手机天堂网| 久久99精品国产99久久6尤物| 亚洲国模精品一区| 中文字幕综合一区| 超在线视频97| 欧美亚洲激情在线| 国产精品入口福利| 国产欧美日韩综合精品二区| 亚洲精品二区| 中文字幕一区综合| 香蕉视频在线网址| 99久久久精品视频| 国产91在线视频观看| 天堂中文视频在线| 欧美日韩亚洲自拍| 91视频福利网| 2一3sex性hd| 久久亚洲无码视频| 国产熟女一区二区| 黑人狂躁日本娇小| 免费中文字幕在线观看| 日韩少妇高潮抽搐| 在线观看日韩一区二区| 一级特黄aaa大片| 中文字幕+乱码+中文乱码91| 国产一级黄色录像| 美女爆乳18禁www久久久久久| 农村黄色一级片| 18深夜在线观看免费视频| 国产精品无码一区二区三| 九九视频在线免费观看| 丰满熟妇乱又伦| 国产亚洲一区二区三区在线观看| 亚洲影院久久精品| 日韩高清免费在线| 成人亚洲欧美一区二区三区| 91大学生片黄在线观看| 天堂久久久久久| 成 人 免费 黄 色| 久久久99精品免费观看不卡| 26uuu另类欧美亚洲曰本| 波多野结衣小视频| 免费在线不卡av| www.激情五月.com| 日韩av一二三| 久久精品一区蜜桃臀影院| 亚洲欧美aⅴ...| 精品福利在线观看| 欧美一级一区二区| 日韩美女在线观看| 3d精品h动漫啪啪一区二区| 久久久综合亚洲91久久98| 亚洲精品中文字幕在线| 久久久久久久久久久免费视频| 一级黄色大片儿| 国产免费一区二区三区四区| 国产精品第6页| 国内国产精品久久| 国产精品毛片高清在线完整版| 上原亚衣av一区二区三区| 欧美中文在线观看国产| 成人免费网站入口| 黄色片一级视频| 爱爱爱爱免费视频| 黄色片免费网址| 在哪里可以看毛片| www.久久成人| 日日噜噜夜夜狠狠| 久久久久无码国产精品一区李宗瑞| 中文字幕一区二区三区四区| 亚洲三区视频| 成人免费视频一区| 欧美激情精品久久久久久变态| 成年人视频观看| 丝袜亚洲另类欧美综合| 精品视频一区三区九区| 国产特级黄色大片| 精品一区二区三区免费观看 | 奇米色一区二区三区四区| 日韩午夜激情av| 少妇高潮毛片色欲ava片| 国产精品盗摄一区二区三区| 91探花福利精品国产自产在线| 992kp快乐看片永久免费网址| 青草成人免费视频| 97碰碰碰免费色视频| 在线观看免费国产视频| 综合电影一区二区三区| 国产精品久久久久久久久久久久久久 | 欧美性一区二区| 成人在线免费观看一区| 久草中文在线视频| 国产精品久久毛片| 亚洲天堂男人天堂女人天堂| 亚洲高清资源综合久久精品| 国产精品成人网站| 亚洲亚洲人成综合网络| 成人免费看片视频| 在线免费观看av片| 亚洲人成网站777色婷婷| 亚洲天堂网一区二区| aa级大片欧美| 国产区日韩欧美| 国模人体一区二区| 91国产免费看| 永久免费无码av网站在线观看| 亚州国产精品久久久| 黄色av免费观看| 性刺激综合网| 亚洲最大色网站| 一级特黄a大片免费| 欧美性xxxxxxx| 国产3p在线播放| 国产精品久久久久天堂| 亚洲成人网上| 色悠悠久久综合网| 国产精品拍天天在线| 91好吊色国产欧美日韩在线| 熟妇高潮一区二区三区| 国产精品久久久久一区二区| 菠萝菠萝蜜网站| 日韩精品一区二区在线观看| 精品视频久久久久| 欧洲精品在线视频| 777777国产7777777| 偷拍日韩校园综合在线| 中文字幕久久久久久久| 欧美一区二区视频在线观看| 日韩美女爱爱视频| 亚洲 精品 综合 精品 自拍| 国产一区免费| 国产成人精品亚洲午夜麻豆| 亚洲国产一区二区三区在线| 一区二区三区免费看视频| 免费看的黄色网| 亚洲精品一区二区三区不| 国产午夜手机精彩视频| 91日本在线视频| 日本一区二区视频在线观看| 伊人影院综合网| 日本一区二区三区在线播放| 福利一区福利二区| 中文久久久久久| 精品成人乱色一区二区| 中文字幕 日韩 欧美| 亚洲欧美一区二区三区久本道91| 91成人在线视频观看| 9久草视频在线视频精品| 爱爱爱视频网站| 调教+趴+乳夹+国产+精品| 少妇真人直播免费视频| 精品久久久久久国产91| 免费在线观看的av网站| 亚洲自拍偷拍欧美| 91传媒久久久| 在线免费观看成人短视频| 亚洲成a人片在线www| 久久视频在线播放| 日日嗨av一区二区三区四区| 日韩欧美精品免费| 中文字幕亚洲精品在线观看| 日韩va在线观看| 亚洲国产精品久久| 国产精品欧美久久久久天天影视| 自拍日韩亚洲一区在线| 欧美成人免费在线视频| 国产精品人人做人人爽人人添| 国产精品免费精品一区| 国产精品国三级国产av| 波霸ol色综合久久| a亚洲天堂av| 免费网站在线观看黄| 日韩电影中文字幕在线观看| www.69av| 亚洲日本在线天堂| 日本不卡一二区| 国产精品h片在线播放| 亚洲免费观看在线观看| 日韩va亚洲va欧美va清高| 欧美成人精品在线播放| 天天摸天天碰天天爽天天弄| 精品久久久久久中文字幕动漫| 中文无字幕一区二区三区| 日本少妇激三级做爰在线| 欧美一级欧美三级在线观看| 中文字幕一区二区久久人妻| 国产成年人在线观看| 精品乱码亚洲一区二区不卡| 久久久久国产精品一区三寸 | 天天综合日日夜夜精品| 久久亚洲AV成人无码国产野外 | 91美女福利视频| 波多野结衣视频在线观看| 视频区 图片区 小说区| 韩国成人一区| 精品久久久久一区二区国产| 首页欧美精品中文字幕| 久草精品在线播放| 一本一本久久a久久精品综合小说| 免费成人你懂的| 日韩少妇一区二区| 国产啪精品视频网站| 亚洲图片激情小说| 怡红院成永久免费人全部视频| 成人毛片一区二区| 亚洲精品在线视频| 天堂网av在线播放| 伊人婷婷久久| 717成人午夜免费福利电影| 精品人妻午夜一区二区三区四区| 黄色在线视频网| 国产mv免费观看入口亚洲|