午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁(yè) > 知識(shí)庫(kù) > 當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解

當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解

熱門標(biāo)簽:真人語(yǔ)音電話機(jī)器人 騰訊地圖標(biāo)注提升 悟空科技電話機(jī)器人 美國(guó)反騷擾電話機(jī)器人 怎么在地圖標(biāo)注位置生成圖片 銅陵防封電銷卡 400電話可以免費(fèi)申請(qǐng)嗎 電銷卡外呼系統(tǒng)供應(yīng)商 福建外呼系統(tǒng)定制化

背景

今天在配合其他項(xiàng)目組做系統(tǒng)壓測(cè),過(guò)程中出現(xiàn)了偶發(fā)的死鎖問(wèn)題。分析代碼后發(fā)現(xiàn)有復(fù)合主鍵的update情況,更新復(fù)合主鍵表時(shí)只使用了一個(gè)字段更新,同時(shí)在事務(wù)內(nèi)又有對(duì)該表的insert操作,結(jié)果出現(xiàn)了偶發(fā)的死鎖問(wèn)題。

比如表t_lock_test中有兩個(gè)主鍵都為primary key(a,b) ,但是更新時(shí)卻通過(guò)update t_lock_test .. where a = ? ,然后該事務(wù)內(nèi)又有insert into t_lock_test values(...)

InnoDB中的鎖算法是Next-Key Locking,很可能是因?yàn)檫@個(gè)點(diǎn)導(dǎo)致的死鎖,但是復(fù)合主鍵下會(huì)出發(fā)Next-Key Locking嗎,那多列聯(lián)合unique索引下又會(huì)觸發(fā)Next-Key Locking嗎,書上并沒有找到答案,得實(shí)際測(cè)試一下。

InnoDB中的鎖

鎖是數(shù)據(jù)庫(kù)系統(tǒng)區(qū)別于文件系統(tǒng)的一個(gè)關(guān)鍵特性。鎖機(jī)制用于管理對(duì)共享資源的并發(fā)訪[插圖]。InnoDB存儲(chǔ)引擎會(huì)在行級(jí)別上對(duì)表數(shù)據(jù)上鎖,這固然不錯(cuò)。不過(guò)InnoDB存儲(chǔ)引擎也會(huì)在數(shù)據(jù)庫(kù)內(nèi)部其他多個(gè)地方使用鎖,從而允許對(duì)多種不同資源提供并發(fā)訪問(wèn)。例如,操作緩沖池中的LRU列表,刪除、添加、移動(dòng)LRU列表中的元素,為了保證一致性,必須有鎖的介入。數(shù)據(jù)庫(kù)系統(tǒng)使用鎖是為了支持對(duì)共享資源進(jìn)行并發(fā)訪問(wèn),提供數(shù)據(jù)的完整性和一致性。

由于使用鎖時(shí)基本都是在InnoDB存儲(chǔ)引擎下,所以跳過(guò)MyISAM,直接討論InnoDB。

鎖類型

InnoDB存儲(chǔ)引擎實(shí)現(xiàn)了如下兩種標(biāo)準(zhǔn)的行級(jí)鎖:

  • 共享鎖(S Lock),允許事務(wù)讀一行數(shù)據(jù)
  • 排它鎖(x lOCK),允許事務(wù)刪除或更新一條數(shù)據(jù)

如果一個(gè)事務(wù)T1已經(jīng)獲得了r的共享鎖,那么另外的事務(wù)T2可以立即獲得行r的共享鎖,因?yàn)樽x取并沒有改變r(jià)的數(shù)據(jù),成這種情況為鎖兼容(Lock Compatible)。但若有其他的事務(wù)T3箱獲得行r的排它鎖,則比如等待T1、T2釋放行r上的共享鎖——這種情況稱為鎖不兼容。

排它鎖和共享鎖的兼容性:

\ X S
X 不兼容 不兼容
S 不兼容 兼容

InnoDB中對(duì)數(shù)據(jù)進(jìn)行Update操作會(huì)產(chǎn)生行鎖,也可以顯示的添加行鎖(也就是平時(shí)所說(shuō)的“悲觀鎖”)

select for update

鎖算法

InnoDB有3種行鎖的算法,其分別是:

Record Lock:?jiǎn)蝹€(gè)行記錄上的鎖,就是字面意思的行鎖

Record Lock會(huì)鎖住索引記錄(注意這里說(shuō)的是索引,因?yàn)镮nnoDB下主鍵索引即數(shù)據(jù)),ruguo InnoDB存儲(chǔ)引擎表在建立的時(shí)候沒有設(shè)置任何一個(gè)索引,那么這時(shí)對(duì)InnoDB存儲(chǔ)引擎會(huì)使用隱士的主鍵來(lái)進(jìn)行鎖定。

Gap Lock:間隙鎖,鎖定一個(gè)范圍,但不包含記錄本身

Next-Key Lock:Gap Lock+Record Lock,鎖定一個(gè)范圍,并且鎖定記錄本身

Gap Lock和Next-Key Lock的鎖定區(qū)間劃分原則是一樣的。

例如一個(gè)索引有10/11/13和20這四個(gè)值,那么該索引被劃分的的區(qū)間為:

(-∞,10]
(10,11]
(11,13]
(13,20]
(20,+∞]

采用Next-Key Lock的鎖定技術(shù)稱為Next-Key Locking。其設(shè)計(jì)的目的是為了解決Phantom Problem,這將在下一小節(jié)中介紹。而利用這種鎖定技術(shù),鎖定的不是單個(gè)值,而是一個(gè)范圍,是謂詞鎖(predict lock)的一種改進(jìn)。

當(dāng)查詢的索引含有唯一(unique)屬性時(shí)(主鍵索引,唯一索引)InnoDB存儲(chǔ)引擎會(huì)對(duì)Next-Key Lock優(yōu)化,將其降級(jí)為Record Lock,即僅鎖住索引本身,不是范圍。

下面來(lái)看一個(gè)輔助索引(非唯一索引)下的鎖示例:

CREATE TABLE z ( a INT, b INT, PRIMARY KEY(a), KEY(b) );

INSERT INTO z SELECT 1,1;
INSERT INTO z SELECT 3,1;
INSERT INTO z SELECT 5,3;
INSERT INTO z SELECT 7,6;
INSERT INTO z SELECT 10,8;

表z的列b是輔助索引,若果事務(wù)A中執(zhí)行:

SELECT * FROM z WHERE b=3 FOR UPDATE

由于b列是輔助索引,所以此時(shí)會(huì)使用Next-Key Locking算法,鎖定的范圍是(1,3]。特別注意,InnoDB還會(huì)對(duì)輔助索引的下一個(gè)值加上Gap Lock,即還有一個(gè)輔助索引范圍為(3,6]的鎖。因此,若在新事務(wù)B中運(yùn)行以下SQL,都會(huì)被阻塞:

1. SELECT * FROM z WHERE a = 5 LOCK IN SHARE MODE;//S鎖
2. INSERT INTO z SELECT 4,2;
3. INSERT INTO z SELECT 6,5;

第1個(gè)SQL不能執(zhí)行,因?yàn)樵谑聞?wù)A中執(zhí)行的SQL已經(jīng)對(duì)聚集索引中列a=5的值加上X鎖,因此執(zhí)行會(huì)被阻塞。

第2個(gè)SQL,主鍵插入4,沒有問(wèn)題,但是插入的輔助索引值2在鎖定的范圍(1,3]中,因此執(zhí)行同樣會(huì)被阻塞。

第3個(gè)SQL,插入的主鍵6沒有被鎖定,5也不在范圍(1,3]之間。但插入的b列值5在另下一個(gè)Gap Lock范圍(3,6]中,故同樣需要等待。

而下面的SQL語(yǔ)句,由于不在Next-Key Lock和Gap Lock范圍內(nèi),不會(huì)被阻塞,可以立即執(zhí)行:

INSERT INTO z SELECT 8,6;
INSERT INTO z SELECT 2,0;
INSERT INTO z SELECT 6,7;

從上面的例子可以發(fā)現(xiàn),Gap Lock的作用是為了組織多個(gè)事務(wù)將數(shù)據(jù)插入到統(tǒng)一范圍內(nèi),這樣會(huì)導(dǎo)致幻讀問(wèn)題(Phantom Problem)。例子中事務(wù)A已經(jīng)鎖定了b=3的記錄。若此時(shí)沒有Gap Lock鎖定(3,6],其他事務(wù)就可以插入索引b列為3的記錄,這會(huì)導(dǎo)致事務(wù)A中的用戶再次執(zhí)行同樣查詢會(huì)返回不同的記錄,即導(dǎo)致幻讀問(wèn)題的產(chǎn)生。

用戶也可以通過(guò)以下兩種方式來(lái)顯示的關(guān)閉Gap Lock(但不推薦):

  • 將事務(wù)的隔離級(jí)別設(shè)置為READ COMMITED
  • 將參數(shù)innodb_locks_unsafe_for_binlog設(shè)置為1

在InnoDB中,對(duì)于Insert的操作,會(huì)檢查插入記錄的下一條記錄是否被鎖定,若已經(jīng)被鎖定,則不允許插入。對(duì)于上面的例子,事務(wù)A已經(jīng)鎖定了表z中b=3的記錄,即已經(jīng)鎖定了(1,3]的范圍,這時(shí)若在其他事務(wù)中執(zhí)行如下插入也會(huì)導(dǎo)致阻塞:

INSERT INTO z SELECT 2,0

因?yàn)樵谳o助索引列b上插入值為2的記錄時(shí),會(huì)監(jiān)測(cè)到下一個(gè)記錄3已經(jīng)被索引,修改b列值后,就可以執(zhí)行了

INSERT INTO z SELECT 2,0

幻讀(Phantom Problem)

幻讀是指在同一事務(wù)下,連續(xù)執(zhí)行兩次同樣的SQL語(yǔ)句可能會(huì)導(dǎo)致不同的結(jié)果,第二次的SQL可能會(huì)返回之前不存在的行。

在默認(rèn)的事務(wù)隔離級(jí)別(REPEATABLE READ)下,InnoDB存儲(chǔ)引擎采用Next—Key Locking機(jī)制來(lái)避免幻讀問(wèn)題。

復(fù)(聯(lián))合主鍵與鎖

上面的鎖機(jī)制介紹(摘自《Mysql技術(shù)內(nèi)幕 InnoDB存儲(chǔ)引擎 第2版》),只是針對(duì)輔助索引和聚集索引,那么復(fù)合主鍵下行鎖的表現(xiàn)形式又是怎么樣呢?從書上并沒有找到答案,實(shí)際來(lái)測(cè)試一下。

首先創(chuàng)建一個(gè)復(fù)合主鍵的表

CREATE TABLE `composite_primary_lock_test` (
 `id1` int(255) NOT NULL,
 `id2` int(255) NOT NULL,
 PRIMARY KEY (`id1`,`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (10, 10);
INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (1, 8);
INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (3, 6);
INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (5, 6);
INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (3, 3);
INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (1, 1);
INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (5, 1);
INSERT INTO `composite_primary_lock_test`(`id1`, `id2`) VALUES (7, 1);

事務(wù)A先來(lái)查詢id2=6的列,并添加行鎖

select * from composite_primary_lock_test where id2 = 6 lock in share mode

此時(shí)的鎖會(huì)降級(jí)到Record Lock嗎?事務(wù)B Update一條Next-Key Lock范圍內(nèi)的數(shù)據(jù)(id1=1,id2=8)證明一下:

UPDATE `composite_primary_lock_test` SE WHERE `id1` = 1 AND `id2` = 8;

結(jié)果是UPDATE被阻塞了,那么再來(lái)試試加鎖時(shí)在where中把兩個(gè)主鍵都帶上:

select * from composite_primary_lock_test where id2 = 6 and id1 = 5 lock in share mode

執(zhí)行UPDATE

UPDATE `composite_primary_lock_test` SE WHERE `id1` = 1 AND `id2` = 8;

結(jié)果是UPDATE沒有被阻塞

上面加鎖的id2=6的數(shù)據(jù),不只1條,那么再試試對(duì)唯一的數(shù)據(jù)id2=8,只根據(jù)一個(gè)主鍵加鎖呢,會(huì)不會(huì)降級(jí)為行級(jí)鎖:

select * from composite_primary_lock_test where id2 = 8 lock in share mode;
UPDATE `composite_primary_lock_test` SE WHERE `id1` = 12 AND `id2` = 10;

結(jié)果也是被阻塞了,實(shí)驗(yàn)證明:

復(fù)合主鍵下,如果加鎖時(shí)不帶上所有主鍵,InnoDB會(huì)使用Next-Key Locking算法,如果帶上所有主鍵,才會(huì)當(dāng)作唯一索引處理,降級(jí)為Record Lock,只鎖當(dāng)前記錄。

多列索引(聯(lián)合索引)與鎖

上面只驗(yàn)證了復(fù)合主鍵下的鎖機(jī)制,那么多列索引呢,會(huì)不會(huì)和復(fù)合索引機(jī)制相同?多列unique索引呢?

新建一個(gè)測(cè)試表,并初始化數(shù)據(jù)

CREATE TABLE `multiple_idx_lock_test` (
 `id` int(255) NOT NULL,
 `idx1` int(255) NOT NULL,
 `idx2` int(255) DEFAULT NULL,
 PRIMARY KEY (`id`,`idx1`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

ALTER TABLE `multiple_idx_lock_test` 
ADD UNIQUE INDEX `idx_multi`(`idx1`, `idx2`) USING BTREE;

INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (1, 1, 1);
INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (5, 2, 2);
INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (7, 3, 3);
INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (4, 4, 4);
INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (2, 4, 5);
INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (3, 5, 5);
INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (8, 6, 5);
INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (6, 6, 6);

事務(wù)A查詢?cè)黾覵鎖,查詢時(shí)僅使用idx1列,并遵循最左原則:

select * from multiple_idx_lock_test where idx1 = 6 lock in share mode;

現(xiàn)在插入一條Next-Key Lock范圍內(nèi)的數(shù)據(jù):

INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (9, 6, 7);

結(jié)果是被阻塞了,再試一遍通過(guò)多列索引中所有字段來(lái)加鎖:

select * from multiple_idx_lock_test where idx1 = 6 and idx2 = 6 lock in share mode;

插入一條Next-Key Lock范圍內(nèi)的數(shù)據(jù):

INSERT INTO `multiple_idx_lock_test`(`id`, `idx1`, `idx2`) VALUES (9, 6, 7);

結(jié)果是沒有被阻塞

由此可見,當(dāng)使用多列唯一索引時(shí),加鎖需要明確要鎖定的行(即加鎖時(shí)使用索引的所有列),InnoDB才會(huì)認(rèn)為該條記錄為唯一值,鎖才會(huì)降級(jí)為Record Lock。否則會(huì)使用Next-Key Lock算法,鎖住范圍內(nèi)的數(shù)據(jù)。

總結(jié)

在使用Mysql中的鎖時(shí)要謹(jǐn)慎使用,尤其時(shí)更新/刪除數(shù)據(jù)時(shí),盡量使用主鍵更新,如果在復(fù)合主鍵表下更新時(shí),一定通過(guò)所有主鍵去更新,避免鎖范圍變大帶來(lái)的死鎖等問(wèn)題。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

參考

《Mysql技術(shù)內(nèi)幕 InnoDB存儲(chǔ)引擎 第2版》 - 姜承堯

您可能感興趣的文章:
  • Mysql主鍵UUID和自增主鍵的區(qū)別及優(yōu)劣分析
  • 深入分析mysql為什么不推薦使用uuid或者雪花id作為主鍵
  • spring boot整合mybatis利用Mysql實(shí)現(xiàn)主鍵UUID的方法
  • Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實(shí)例
  • MySQL中主鍵與rowid的使用陷阱總結(jié)
  • 淺析MySQL 主鍵使用數(shù)字還是uuid查詢快

標(biāo)簽:云浮 烏海 臨汾 武威 湖南 湖北 白銀 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解》,本文關(guān)鍵詞  當(dāng),Mysql,行鎖,遇到,復(fù)合,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    手机看片国产精品| 三级亚洲高清视频| 国语对白做受69| 喷水视频在线观看| 日韩欧美一区二区三区在线| 天美传媒免费在线观看| 欧美丰满高潮xxxx喷水动漫| 成年人看片网站| 亚洲精品高清视频在线观看| 日本黄色www| 日韩黄色高清视频| 国产成人精品777777| 国产精品69av| 久久久精品性| 亚洲制服中文| 欧美三级在线播放| 久久精品黄色片| 成人免费午夜电影| 久久免费看少妇高潮| 国产一级黄色录像片| 色成年激情久久综合| 国产精品成人免费观看| 亚洲猫色日本管| 韩日欧美一区二区| 秋霞午夜av一区二区三区| 91久久在线视频| 亚洲午夜久久久久久久久电影网| 日韩免费视频一区二区视频在线观看| 欧美日韩国产一二三| 亚洲精品乱码久久久久久动漫| 欧美激情xxxx| 粉嫩高潮美女一区二区三区| 天堂网成人在线| 色噜噜狠狠色综合中国| 亚洲成人资源网| 日本老熟俱乐部h0930| 成人深夜直播免费观看| 五月天亚洲精品| 中日韩在线观看视频| 黄色高清视频网站| 日韩经典中文字幕| 成人免费av在线| 色戒在线免费观看| 国产不卡av在线免费观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲女爱视频在线| 高清乱码免费看污| 欧美日韩一区二区三| 日韩av中文字幕在线| 国产成人啪午夜精品网站男同| 亚洲v在线观看| 福利视频久久| 亚洲视频在线观看| 亚洲成人自拍一区| 色哟哟中文字幕| 特级西西人体wwwww| 亚洲精品国产系列| 五月婷婷久久久| 中文字幕欧美日韩一区二区三区| 亚洲尤物视频网| 精品成人a区在线观看| 国产精品久久99| 国产免费黄色录像| 久久国产高清视频| 影音先锋男人看片资源| 久久精品国产一区二区三区日韩| 日韩精品极品视频| 偷拍一区二区三区| 99久久婷婷国产综合精品电影| 国产免费福利视频| 久久高清免费视频| 欧美人妻一区二区三区| 免费无码国产v片在线观看| 91在线精品视频| 久热99视频在线观看| 欧美高清视频www夜色资源网| 不卡大黄网站免费看| 亚洲精品午夜国产va久久成人| 国产成人av影视| 国产欧美日本一区二区三区| 九九九在线观看视频| 蜜桃日韩视频| 无码av免费一区二区三区试看| 婷婷久久伊人| 欧美黑人经典片免费观看| 亚洲中文字幕久久精品无码喷水| 素人fc2av清纯18岁| 91视频在线视频| 一区二区激情视频| 久久91精品国产91久久跳| 网爆门在线观看| 久久黄色级2电影| 红桃视频成人在线观看| 国产精品aaa| 国产又爽又黄无码无遮挡在线观看| 我要看一级黄色录像| 东方欧美亚洲色图在线| 精品视频免费在线播放| 成人一区二区视频| 亚洲va久久久噜噜噜久久狠狠 | 欧美大胆人体bbbb| 在线a免费观看| 亚洲黄色在线看| 国产精品久久久久久在线 | 国产91在线播放精品91| 亚洲免费看黄网站| 国产中文字幕视频| 天堂av一区二区| 欧美高清视频一二三区 | 国产美女在线观看一区| 日韩最新在线视频| 亚洲人与黑人屁股眼交| 亚洲国产精品久久久久秋霞不卡 | 国产精品国产三级国产普通话对白| 欧美日韩成人在线视频| 激情欧美日韩一区二区| 91香蕉嫩草影院入口| 亚洲第一第二区| 久热精品在线视频| 国产自偷自偷免费一区| 欧美视频三区在线播放| 国产精品91av| 91免费精品视频| 欧美三级三级三级爽爽爽| 国产夫妻自拍av| 亚洲色欲久久久综合网东京热| 国产精品久久久久久久久快鸭| 91久久精品国产91久久| 日本不卡免费在线视频| 成人久久久久爱| 天天色综合久久| 欧美日韩在线三级| 久久人妻精品白浆国产| www.欧美精品| 亚洲av成人精品一区二区三区在线播放| 中文字幕在线观看亚洲| 在线观看福利片| 欧美精品一区二区三区在线看午夜 | 国内精品二区| 日韩欧美国产一区二区在线播放| 五月婷婷六月色| 国产一区二区三区四区五区在线 | 欧美成人午夜精品免费| 久久久久久久97| 在线观看免费视频a| 成人中文字幕+乱码+中文字幕| xfplay精品久久| 色哟哟网站入口亚洲精品| 11024精品一区二区三区日韩| 裸体丰满少妇做受久久99精品| 亚洲一区二区三区视频在线播放 | 三级影片在线看| 久久精品久久久久| 亚洲自拍偷拍另类| 国产三级中文字幕| 亚洲精品国产第一综合99久久| 97久久精品午夜一区二区| 亚洲大尺度网站| 国产毛片毛片毛片毛片毛片| 日本一区二区三区四区五区| 九色在线视频观看| 国产激情一区二区三区在线观看| 日本高清不卡aⅴ免费网站| 亚洲一级二级片| 欧美人交a欧美精品| 国产精品一区二区三区网站| 日本黄大片一区二区三区| 亚洲欧洲色图综合| 18岁网站在线观看| 欧美一卡2卡3卡4卡| 久久精品亚洲精品国产欧美kt∨ | 国产精品久久久91| 成人深夜视频在线观看| 中文字幕av日韩精品| 中文字幕精品在线视频| 欧美日韩在线影院| 亚洲欧美韩国综合色| 国产香蕉久久精品综合网| 就去色蜜桃综合| 99久久精品国产网站| 玖玖爱在线观看| 欧美顶级少妇做爰| www.好吊色| 国产欧美日韩小视频| 中文字幕精品久久久久| 性生交大片免费全黄| 久久久久久亚洲精品中文字幕| 自拍偷拍欧美激情| 日本 国产 欧美色综合| 欧美一级视频免费看| 伦理中文字幕亚洲| 色8久久精品久久久久久蜜| 日本一区二区在线观看视频| 日韩av在线直播| 久久亚洲二区三区| 久热国产精品| 日本少妇性生活| 国产主播欧美精品| 欧美性色aⅴ视频一区日韩精品| 精品小视频在线观看| 2022中文字幕| 91精品国产91久久久久福利| 欧美一区二区三区婷婷月色| av在线免费观看不卡| 国产69精品久久久久9999| 欧美一区二区观看视频| 在线亚洲一区二区| 久久se精品一区二区| 性欧美成人播放77777| 精品国产一区三区| 亚洲成人精品影院| 美女视频黄免费的久久| 国产成人综合欧美精品久久| 新91视频在线观看| 97免费公开视频| 一二三av在线| 国产97色在线| 亚洲免费电影在线| 国产传媒欧美日韩成人| 国产主播在线观看| 麻豆av一区| 国产麻豆乱码精品一区二区三区| 欧美超碰在线观看| 九九九九精品九九九九| 欧洲精品毛片网站| 欧美在线欧美在线| 欧美xxxx做受欧美| 国产剧情一区在线| 国产91丝袜在线观看| 在线免费看av的网站| 亚洲一区在线观| 国产在线一区观看| 精品久久久久久久久久| 精品国产91洋老外米糕| 欧美成人全部免费| 亚洲精品一区久久久久久| 日韩欧美亚洲国产一区| 久久免费的精品国产v∧| 精品一区二区三区影院在线午夜| 日韩美一区二区| 中文字幕一区二区三区精品 | 亚洲福利影片在线| 91亚洲精品久久久蜜桃| 国产亚洲第一页| 国产一二三四区| 国产香蕉在线视频| 欧美日韩在线观看成人| 色婷婷成人在线| 国产精欧美一区二区三区白种人| 日本高清一区二区视频| 久久精品亚洲无码| 日韩影院在线观看| 亚洲伊人色欲综合网| 亚洲国内高清视频| 日韩精品视频三区| 欧美精品一区二区三区高清aⅴ| 精品一区二区亚洲| 日韩欧美你懂的| 欧美网站一区二区| 色哟哟欧美精品| 日韩欧美国产wwwww| 亚洲第一区在线观看| 1区2区3区欧美| 麻豆国产一区二区| 国产精品羞羞答答在线| 欧美老熟妇一区二区三区| 天天综合成人网| 中文字幕久久久久久久| 91精品国产综合久久精品| 精品无码三级在线观看视频| 精品一区二区免费看| 91麻豆精东视频| 欧美在线观看视频一区二区 | 日韩电视剧在线观看免费网站| 国产不卡av在线免费观看| 成人免费毛片网| 妺妺窝人体色WWW精品| 国产精品酒店视频| 69av视频在线| 中文字幕一区二区人妻视频| 国精产品一区一区三区mba桃花 | 国产精品久久久久77777| 国产午夜精品一区二区三区| 欧美zozo另类异族| 日韩免费成人网| 欧美精品在线网站| 国产在线一区二区三区四区| 欧美一级视频在线| 给我看免费高清在线观看| 国产一级黄色av| 狂野欧美一区| 欧美成va人片在线观看| 精品国产一二| 日本在线视频免费观看| 亚洲人成网站色在线观看 | 男人j进女人j| zjzjzjzjzj亚洲女人| 日韩黄色在线播放| 另类小说一区二区三区| 亚洲超碰精品一区二区| 亚洲精品黄网在线观看| 91精品视频在线看| 久久久无码人妻精品无码| 久久综合桃花网| 蜜桃色一区二区三区| 影音先锋男人看片资源| www.国产高清| 成人av免费播放| 国产乱码精品一区二区三| 777色狠狠一区二区三区| 国内精品久久久久久中文字幕| 国产高潮呻吟久久久| 日本少妇一级片| 久久久久看片| 久久亚洲一区二区| 91aaa在线观看| 欧美丝袜丝交足nylons图片| 亚洲三区四区| 日韩综合一区二区| 最近2019年手机中文字幕| 免费观看亚洲视频| 中文字幕精品一区二区精| 亚洲欧洲www| 亚洲国产精品美女| 免费国产在线精品一区二区三区| 国产国语老龄妇女a片| 日韩在线观看视频网站| 欧美性一二三区| 欧美二区在线看| 天天影视色综合| 特级西西444www大精品视频免费看| 蜜臀99久久精品久久久久久软件| 一区二区三区四区在线| 亚洲丝袜一区在线| 久久久久久久久久久一区| 国产情侣自拍av| 国产精品色在线观看| 国产欧美日韩丝袜精品一区| 欧美 日韩 国产一区| 国产视频一二三四区| 欧美大胆人体bbbb| 亚洲理论电影在线观看| 久久精品国产秦先生| 国产福利精品av综合导导航| 欧美片一区二区| 精品亚洲一区二区三区四区五区| 国产 日韩 欧美在线| 亚洲成a人片77777精品| 欧美视频在线观看 亚洲欧| 中国毛片在线观看| 久久久久久久久久一区二区三区| 亚洲欧美日韩国产成人精品影院| 日韩欧美高清一区| 成人午夜免费在线| 国产米奇在线777精品观看| 69视频在线免费观看| 一区二区三区四区免费视频| 免费黄色国产视频| 精品国产乱码久久久久久婷婷| 国产原创精品| 国产乱码一区二区| 国产精品高潮呻吟久久av黑人| 丁香六月色婷婷| 欧美日韩中文字幕综合视频| 26uuu色噜噜精品一区| 国产精品aaa| 久久99日本精品| 成人国产精品一区| 精品欧美一区二区久久久久| 亚洲成在人线免费| 先锋在线资源一区二区三区| 六月丁香婷婷久久| 国产一区视频在线| 图片区 小说区 区 亚洲五月| 色婷婷成人综合| 免费无遮挡无码永久视频| 媚黑女一区二区| 91精品国产色综合| 西西44rtwww国产精品| 国产成人一区二区三区| 高清毛片aaaaaaaaa片| 深夜福利一区二区| 香蕉视频在线观看黄| 欧美亚洲综合网| 成人福利视频网| 亚洲美女综合网| 一区二区不卡在线播放 | 日本中文字幕久久看| 国产成人精品免费看视频| 国产日韩av在线播放| 99国产精品国产精品毛片| 九一精品在线观看| 日韩手机在线导航| 中文字幕第2页| 欧美一级二级三级| 精品国产乱码久久久久久天美| 亚洲成人av免费观看| 欧美二区在线观看| 99re在线播放| 久久99国产精品一区| 国产探花在线免费观看| 亚洲国产精品成人综合| 欧美极品一区二区| 中文字幕视频免费观看| 色婷婷av一区二区三区在线观看| 久久久免费高清视频| 美日韩在线视频| www.久久av| 亚洲第一页在线| 亚洲一区电影在线观看|