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

面試官:MySQL的可重復讀級別能解決幻讀問題嗎?

數據庫 MySQL
之前在深入了解數據庫理論的時候,了解到事務的不同隔離級別可能存在的問題。為了更好的理解所以在MySQL數據庫中測試復現這些問題。關于臟讀和不可重復讀在相應的隔離級別下都很容易的復現了。

引言

之前在深入了解數據庫理論的時候,了解到事務的不同隔離級別可能存在的問題。為了更好的理解所以在MySQL數據庫中測試復現這些問題。關于臟讀和不可重復讀在相應的隔離級別下都很容易的復現了。

但是對于幻讀,我發現在可重復讀的隔離級別下沒有出現,當時想到難道是MySQL對幻讀做了什么處理?

測試:

創建一張測試用的表dept: 

  1. CREATE TABLE `dept` (  
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  3.   `name` varchar(20) DEFAULT NULL,  
  4.   PRIMARY KEY (`id`)  
  5. ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8   
  6. insert into dept(name) values("后勤部") 

根據上面的流程執行,預期來說應該是事務1的第一條select查詢出一條數據,第二個select查詢出兩條數據(包含事務2提交的數據)。

但是在實際測試中發現第二條select實際上也只查詢處理一條數據。這是但是根據數據庫理論的可重復讀的實現(排他鎖和共享鎖)這是不應該的情況。

在了解實際原因前我們先復習下事務的相關理論。

數據庫原理理論

事務

事務(Transaction),一般是指要做的或所做的事情。在計算機術語中是指訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操作組成。

在關系數據庫中,一個事務可以是一組SQL語句或整個程序。

為什么要有事務

一個數據庫事務通常包含對數據庫進行讀或寫的一個操作序列。它的存在包含有以下兩個目的:

  •  為數據庫操作提供了一個從失敗中恢復到正常狀態的方法,同時提供了數據庫在異常狀態下仍能保持一致性的方法。
  •  當多個應用程序在并發訪問數據庫時,可以在這些應用程序之間提供一個隔離方法,保證彼此的操作互相干擾。

事務特性

事務具有4個特性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為 ACID 特性。

  •  原子性(atomicity):一個事務應該是一個不可分割的工作單位,事務中包括的操作要么都成功,要么都不成功。
  •  一致性(consistency):事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
  •  隔離性(isolation):一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據在事務未提交前對并發的其他事務是隔離的,并發執行的各個事務之間不能互相影響。
  •  持久性(durability):一個事務一旦成功提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

事務之間的幾個特性并不是一組同等的概念:

如果在任何時刻都只有一個事務,那么其天然是具有隔離性的,這時只要保證原子性就能具有一致性。

如果存在并發的情況下,就需要保證原子性和隔離性才能保證一致性。

數據庫并發事務中存在的問題

如果不考慮事務的隔離性,會發生以下幾種問題:

臟讀

臟讀是指在一個事務處理過程里讀取了另一個未提交的事務中的數據。當一個事務正在多次修改某個數據,而在這個事務中這多次的修改都還未提交,這時一個并發的事務來訪問該數據,就會造成兩個事務得到的數據不一致。

不可重復讀

不可重復讀是指在對于數據庫中的某條數據,一個事務范圍內多次查詢返回不同的數據值(這里不同是指某一條或多條數據的內容前后不一致,但數據條數相同),這是由于在查詢間隔,該事務需要用到的數據被另一個事務修改并提交了。

不可重復讀和臟讀的區別是,臟讀是某一事務讀取了另一個事務未提交的臟數據,而不可重復讀則是讀取了其他事務提交的數據。需要注意的是在某些情況下不可重復讀并不是問題。

幻讀

幻讀是事務非獨立執行時發生的一種現象。例如事務T1對一個表中所有的行的某個數據項做了從“1”修改為“2”的操作,這時事務T2又對這個表中插入了一行數據項,而這個數據項的數值還是為“1”并且提交給數據庫。

而操作事務T1的用戶如果再查看剛剛修改的數據,會發現還有一行沒有修改,其實這行是從事務T2中添加的,就好像產生幻覺一樣,這就是發生了幻讀。

幻讀和不可重復讀都是讀取了另一條已經提交的事務(這點就臟讀不同),所不同的是不可重復讀可能發生在update,delete操作中,而幻讀發生在insert操作中。

排他鎖,共享鎖

排它鎖(Exclusive),又稱為X 鎖,寫鎖。

共享鎖(Shared),又稱為S 鎖,讀鎖。

讀寫鎖之間有以下的關系:

  •  一個事務對數據對象O加了 S 鎖,可以對 O進行讀取操作,但是不能進行更新操作。加鎖期間其它事務能對O 加 S 鎖,但是不能加 X 鎖。
  •  一個事務對數據對象 O 加了 X 鎖,就可以對 O 進行讀取和更新。加鎖期間其它事務不能對 O 加任何鎖。

即讀寫鎖之間的關系可以概括為:多讀單寫

事務的隔離級別

在事務中存在以下幾種隔離級別:

讀未提交(Read Uncommitted)

解決更新丟失問題。如果一個事務已經開始寫操作,那么其他事務則不允許同時進行寫操作,但允許其他事務讀此行數據。該隔離級別可以通過“排他寫鎖”實現,即事務需要對某些數據進行修改必須對這些數據加 X 鎖,讀數據不需要加 S 鎖。

讀已提交(Read Committed)

解決了臟讀問題。讀取數據的事務允許其他事務繼續訪問該行數據,但是未提交的寫事務將會禁止其他事務訪問該行。這可以通過“瞬間共享讀鎖”和“排他寫鎖”實現, 即事務需要對某些數據進行修改必須對這些數據加 X 鎖,讀數據時需要加上 S 鎖,當數據讀取完成后立刻釋放 S 鎖,不用等到事務結束。

可重復讀取(Repeatable Read)

禁止不可重復讀取和臟讀取,但是有時可能出現幻讀數據。讀取數據的事務將會禁止寫事務(但允許讀事務),寫事務則禁止任何其他事務。

Mysql默認使用該隔離級別。這可以通過“共享讀鎖”和“排他寫鎖”實現,即事務需要對某些數據進行修改必須對這些數據加 X 鎖,讀數據時需要加上 S 鎖,當數據讀取完成并不立刻釋放 S 鎖,而是等到事務結束后再釋放。

串行化(Serializable)

解決了幻讀的問題的。提供嚴格的事務隔離。它要求事務序列化執行,事務只能一個接著一個地執行,不能并發執行。僅僅通過“行級鎖”是無法實現事務序列化的,必須通過其他機制保證新插入的數據不會被剛執行查詢操作的事務訪問到。

MySQL中的隔離級別的實現

上面的內容解釋了一些數據庫理論的概念,但是在MySQL、ORACLE這樣的數據庫中,為了性能的考慮并不是完全按照上面介紹的理論來實現的。

MVCC

多版本并發控制(Multi-Version Concurrency Control, MVCC)是MySQL中基于樂觀鎖理論實現隔離級別的方式,用于實現讀已提交和可重復讀取隔離級別的實現。

實現(隔離級別為可重復讀)

在說到如何實現前先引入兩個概念:

  •  系統版本號:一個遞增的數字,每開始一個新的事務,系統版本號就會自動遞增。
  •  事務版本號:事務開始時的系統版本號。

在MySQL中,會在表中每一條數據后面添加兩個字段:

  •  創建版本號:創建一行數據時,將當前系統版本號作為創建版本號賦值
  •  刪除版本號:刪除一行數據時,將當前系統版本號作為刪除版本號賦值

SELECT

select時讀取數據的規則為:創建版本號<=當前事務版本號,刪除版本號為空或>當前事務版本號。

創建版本號<=當前事務版本號保證取出的數據不會有后啟動的事務中創建的數據。這也是為什么在開始的示例中我們不會查出后來添加的數據的原因

刪除版本號為空或>當前事務版本號保證了至少在該事務開啟之前數據沒有被刪除,是應該被查出來的數據。

INSERT

insert是將當前的系統版本號賦值給創建版本號字段。

UPDATE

插入一條新記錄,保存當前事務版本號為行創建版本號,同時保存當前事務版本號到原來刪除的行,實際上這里的更新是通過delete和insert實現的。

DELETE

刪除時將當前的系統版本號賦值給刪除版本號字段,標識該行數據在那一個事務中會被刪除,即使實際上在位commit時該數據沒有被刪除。根據select的規則后開啟的數據也不會查詢到該數據。

MVCC真的解決了幻讀?

從最開始我們的測試示例和上面的理論支持來看貌似在MySQL中通過MVCC就解決了幻讀的問題,那既然這樣串行化讀貌似就沒啥意義了,帶著疑問繼續測試。

測試前數據:

根據上面的結果我們期望的結果是這樣的:

id name
1 財務部
2 研發部

但是實際上我們的經過是:

本來我們希望得到的結果只是第一條數據的部門改為財務,但是結果確實兩條數據都被修改了。

這種結果告訴我們其實在MySQL可重復讀的隔離級別中并不是完全解決了幻讀的問題,而是解決了讀數據情況下的幻讀問題。而對于修改的操作依舊存在幻讀問題,就是說MVCC對于幻讀的解決時不徹底的。

快照讀和當前讀

出現了上面的情況我們需要知道為什么會出現這種情況。在查閱了一些資料后發現在RR級別中,通過MVCC機制,雖然讓數據變得可重復讀,但我們讀到的數據可能是歷史數據,不是數據庫最新的數據。

這種讀取歷史數據的方式,我們叫它快照讀 (snapshot read),而讀取數據庫最新版本數據的方式,叫當前讀 (current read)。

select 快照讀

當執行select操作是innodb默認會執行快照讀,會記錄下這次select后的結果,之后select 的時候就會返回這次快照的數據,即使其他事務提交了不會影響當前select的數據,這就實現了可重復讀了。

快照的生成當在第一次執行select的時候,也就是說假設當A開啟了事務,然后沒有執行任何操作,這時候B insert了一條數據然后commit,這時候A執行 select,那么返回的數據中就會有B添加的那條數據。

之后無論再有其他事務commit都沒有關系,因為快照已經生成了,后面的select都是根據快照來的。

當前讀

對于會對數據修改的操作(update、insert、delete)都是采用當前讀的模式。在執行這幾個操作時會讀取最新的記錄,即使是別的事務提交的數據也可以查詢到。

假設要update一條記錄,但是在另一個事務中已經delete掉這條數據并且commit了,如果update就會產生沖突,所以在update的時候需要知道最新的數據。也正是因為這樣所以才導致上面我們測試的那種情況。

select的當前讀需要手動的加鎖: 

  1. select * from table where ? lock in share mode;  
  2. select * from table where ? for update; 

有個問題說明下

在測試過程中最開始我以為使用begin語句就是開始一個事務了,所以在上面第二次測試中因為先開始的事務1,結果在事務1中卻查到了事務2新增的數據,當時認為這和前面MVCC中的select的規則不一致了,所以做了如下測試:

 

  1. SELECT * FROM information_schema.INNODB_TRX //用于查詢當前正在執行中的事務 

可以看到如果只是執行begin語句實際上并沒有開啟一個事務。

下面在begin后添加一條select語句:

所以要明白實際上是對數據進行了增刪改查等操作后才開啟了一個事務。

如何解決幻讀

很明顯可重復讀的隔離級別沒有辦法徹底的解決幻讀的問題,如果我們的項目中需要解決幻讀的話也有兩個辦法:

  •  使用串行化讀的隔離級別
  •  MVCC+next-key locks:next-key locks由record locks(索引加鎖) 和 gap locks(間隙鎖,每次鎖住的不光是需要使用的數據,還會鎖住這些數據附近的數據)

實際上很多的項目中是不會使用到上面的兩種方法的,串行化讀的性能太差,而且其實幻讀很多時候是我們完全可以接受的。 

 

責任編輯:龐桂玉 來源: Java知音
相關推薦

2024-05-13 11:46:33

MySQL數據庫

2023-11-01 14:13:00

MySQL事務隔離級別

2024-03-11 00:00:00

mysqlInnoDB幻讀

2022-06-29 11:01:05

MySQL事務隔離級別

2023-10-26 00:41:46

臟讀數據幻讀

2024-04-19 08:18:47

MySQLSQL隔離

2023-02-02 07:06:10

2022-01-03 07:18:05

臟讀幻讀 MySQL

2024-04-24 08:26:35

事務數據InnoDB

2022-09-21 09:00:10

MySQL幻讀隔離級別

2023-08-09 17:22:30

MVCCMySQL數據

2020-07-02 08:22:56

MySQL間隙鎖過行鎖

2010-09-30 16:21:40

DB2隔離級別

2024-07-16 08:19:46

MySQL數據InnoDB

2019-03-21 09:06:00

數據庫復讀幻讀

2022-04-27 07:32:02

臟讀幻讀不可重復讀

2021-08-02 09:01:05

MySQL 多版本并發數據庫

2021-06-11 16:59:41

MySQLRepeatableRead

2021-07-26 10:28:13

MySQL事務隔離

2022-06-30 08:00:00

MySQL關系數據庫開發
點贊
收藏

51CTO技術棧公眾號

最新国产精品| 成人看片网页| fc2成人免费人成在线观看播放| 久久久最新网址| 韩国无码一区二区三区精品| 午夜日韩成人影院| 最新成人av在线| 精品国产乱码久久久久久丨区2区| 亚洲av中文无码乱人伦在线视色| 日韩精品免费一区二区在线观看 | 国产一区二区中文字幕| 九九热精品视频在线播放| 在线天堂www在线国语对白| 91看片一区| 一区二区三区中文免费| 六月婷婷久久| 国产99999| 日韩av在线播放中文字幕| 久久97久久97精品免视看| 草草影院第一页| 欧美影院视频| 欧美色男人天堂| 成人在线免费高清视频| 可以在线观看的av| 成人免费高清在线观看| 国产日产亚洲精品| 好吊操这里只有精品| 99久久影视| 亚洲情综合五月天| 国产a级黄色片| 亚洲天堂网站| 欧美亚男人的天堂| www国产黄色| 98色花堂精品视频在线观看| 成人欧美一区二区三区小说| 日韩电影免费观看在| 全国男人的天堂网| 国产专区综合网| 国产精品视频在线观看| 国产免费观看av| 黑丝一区二区三区| 另类少妇人与禽zozz0性伦| 舐め犯し波多野结衣在线观看| 91精品久久久久久综合五月天| 欧美欧美欧美欧美首页| 国产一级片黄色| 成人影院大全| 欧美午夜激情视频| 波多野结衣乳巨码无在线| 午夜小视频福利在线观看| 亚洲欧美在线aaa| 亚洲不卡1区| 日本私人网站在线观看| 99免费精品视频| 国产在线精品日韩| 图片区 小说区 区 亚洲五月| 福利一区福利二区| 99热国产免费| 高清国产mv在线观看| 国产成人综合网| 99久久99久久| 免费av网站观看| jvid福利写真一区二区三区| 国产精品日韩一区二区| 亚洲男人天堂久久| 成人免费毛片aaaaa**| 99在线热播| 免费国产羞羞网站视频| av一区二区久久| 精品在线一区| 国产在线一二| 国产精品免费久久久久| 一级二级三级欧美| 2024短剧网剧在线观看| 一区二区三区不卡在线观看| 阿v天堂2018| 日本综合字幕| 欧美日韩精品一二三区| 熟妇无码乱子成人精品| 中文字幕av一区二区三区四区| 精品国产伦一区二区三区观看方式 | 国产一区二区丝袜| 国产手机视频在线| thepron国产精品| 欧美亚洲丝袜| 免费高清在线观看| 一区二区久久久| 播放灌醉水嫩大学生国内精品| 性欧美hd调教| 制服丝袜国产精品| 日本一区二区在线免费观看| 亚洲人成网亚洲欧洲无码| 中文字幕精品www乱入免费视频| 啪啪一区二区三区| 在线欧美亚洲| 国产精品久久久久久av下载红粉| 国产乱子伦精品无码码专区| 成人高清伦理免费影院在线观看| 欧美日韩在线一二三| 国产原创精品视频| 欧美日韩国产在线看| 日韩爱爱小视频| 国产精品videossex| 亚洲欧洲国产一区| 欧美三级在线免费观看| 一本色道久久综合亚洲精品高清| 国产精品久久97| 黄色一级大片在线免费看国产| 久久久精品免费免费| 在线观看视频黄色| 91av亚洲| 日韩精品一区二区三区视频| 偷拍夫妻性生活| 欧美午夜在线| 国产在线精品自拍| 日韩精品一二| 亚洲综合免费观看高清完整版| 好男人www社区| 北条麻妃在线一区二区免费播放| 在线观看成人黄色| 日本视频免费在线| 国产乱妇无码大片在线观看| 欧美在线激情| 麻豆视频在线看| 欧美电影免费提供在线观看| 国产7777777| 国产精品一级| 国产精品国产一区二区| 欧美成人高清在线| 91久久线看在观草草青青| 少妇熟女视频一区二区三区| 日本一区二区免费高清| 欧美重口另类videos人妖| 国产黄色高清视频| 亚洲欧洲日本在线| 黄大色黄女片18第一次| 国产精品一在线观看| 久久全国免费视频| 性一交一乱一色一视频麻豆| 国产精品三级视频| 日韩手机在线观看视频| 视频福利一区| 91精品国产91久久久久福利| 亚洲精品一区二区三区新线路| 日韩美女视频一区| 成人性生交视频免费观看| 精品美女在线视频| 国产精品麻豆va在线播放| 日色在线视频| 色一情一乱一乱一91av| 免费看污黄网站在线观看| 日韩午夜免费| 久久婷婷开心| 成人免费看视频网站| 精品亚洲一区二区三区在线播放 | 欧美午夜精品在线| av无码av天天av天天爽| 日韩午夜av在线| 久久久久久久久久久久久久一区| 老司机深夜福利在线观看| 亚洲精品国产精品国自产在线| 激情五月色婷婷| 99久久er热在这里只有精品15| 久久国产精品视频在线观看| 蜜桃一区av| 国产91对白在线播放| 人操人视频在线观看| 色噜噜久久综合| 91禁男男在线观看| 国产一区二区三区免费播放| 51xx午夜影福利| 成人看片爽爽爽| 欧美怡红院视频一区二区三区| 国产玉足榨精视频在线观看| 欧美日韩国产首页| 日本在线一级片| 成人免费毛片app| 黄色a级片免费| 日韩免费在线| 成人精品水蜜桃| 国产免费不卡| 日韩中文字幕免费看| 国产黄色一区二区| 欧美日韩国产在线看| 国产午夜精品福利视频| 韩国一区二区三区| 成年人午夜免费视频| 精品在线播放| 91久久精品视频| 大桥未久在线视频| 在线观看国产成人av片| 亚洲爱情岛论坛永久| 欧美性xxxxx极品| 国产又黄又粗又猛又爽的| 国产99久久久精品| 日韩免费高清在线| 欧美激情自拍| 日韩欧美在线观看强乱免费| 日韩激情综合| 国产成人拍精品视频午夜网站| 黄a在线观看| 亚洲美女av电影| 国产高清免费av| 色呦呦一区二区三区| 懂色av懂色av粉嫩av| 91一区二区三区在线播放| 一女二男3p波多野结衣| 亚洲国产婷婷| 桥本有菜av在线| 天天躁日日躁成人字幕aⅴ| 成人激情电影一区二区| 是的av在线| 欧美日本啪啪无遮挡网站| 国产高清av在线| 亚洲国产精品99| 国产乱人乱偷精品视频| 欧美午夜激情在线| 日本一级淫片色费放| 亚洲欧美一区二区三区久本道91 | 欧美高清视频在线观看| 国产高清视频在线播放| 日韩黄色av网站| 午夜精品久久久久久久99老熟妇| 欧美影视一区二区三区| 中文字幕精品三级久久久 | 亚洲人成自拍网站| 欧美熟妇另类久久久久久不卡 | 亚洲+小说+欧美+激情+另类| 97超级碰碰| 伊人久久综合网另类网站| 国产精品高潮呻吟久久av无限| 擼擼色在线看观看免费| 欧美巨猛xxxx猛交黑人97人| 秋霞成人影院| 少妇高潮久久77777| 欧美zzoo| 日韩成人小视频| 手机在线精品视频| 精品国产免费久久| 粉嫩小泬无遮挡久久久久久| 日韩视频一区二区| jizz中国女人| 日韩视频在线你懂得| 国产成人毛毛毛片| 欧美一区二区三区视频在线| 国产一区二区在线视频观看| 欧美日韩在线一区二区| 小泽玛利亚一区二区三区视频| 一本一道久久a久久精品综合蜜臀| 日本va欧美va国产激情| 五月天一区二区| 成人午夜视频精品一区| 天天亚洲美女在线视频| 日韩 欧美 精品| 精品国产精品自拍| 午夜精品久久久久久久久久久久久蜜桃| 亚洲成a人v欧美综合天堂 | 91搞黄在线观看| 欧美黄色一级大片| 欧美专区日韩专区| 中文字幕免费高清在线观看| 欧美在线高清视频| 一区二区视频播放| 正在播放一区二区| 午夜精品久久久久久久99热黄桃| 日韩精品一区二区三区四区 | 中文字幕国产精品| 男人的天堂在线视频免费观看| 日韩中文有码在线视频| 好吊日视频在线观看| 欧美成人国产va精品日本一级| 丝袜中文在线| 91成人在线播放| 欧美福利在线播放| 国产一区二区丝袜高跟鞋图片| 欧美午夜在线播放| 国产女人水真多18毛片18精品| 亚洲国产合集| 中文字幕成人一区| 亚洲国内欧美| 热久久精品免费视频| 国内欧美视频一区二区| 国产又粗又长又爽| 国产日韩av一区二区| 欧美大片xxxx| 五月天亚洲精品| ,亚洲人成毛片在线播放| 欧美电影免费提供在线观看| 精品av中文字幕在线毛片| 日韩一区二区三区xxxx| av资源新版天堂在线| 国产精品福利在线观看| 999精品视频在线观看| 国产日韩在线一区二区三区| 精品美女久久久| 国产 日韩 欧美在线| 三级欧美韩日大片在线看| 亚洲激情在线看| 2021中文字幕一区亚洲| 中文字幕五月天| 色欧美片视频在线观看| 国产成人精品一区二三区四区五区 | 亚洲va久久久噜噜噜久久| 一区二区三区在线视频111| 最新国产乱人伦偷精品免费网站| 久久久久久久片| 成人97人人超碰人人99| 日日操免费视频| 懂色aⅴ精品一区二区三区蜜月 | 亚洲国产精品久久精品怡红院| 国产二区在线播放| 久久乐国产精品| 国产精品3区| 日本在线观看一区二区三区| 亚洲无线视频| 亚洲欧美天堂在线| 国产亚洲成av人在线观看导航| 国产一级特黄毛片| 欧美日韩aaaaaa| 精品推荐蜜桃传媒| 性色av一区二区三区免费| 综合欧美精品| 亚洲高清视频一区| 性欧美长视频| 成人手机在线免费视频| 亚洲激情在线播放| 97成人免费视频| 国产香蕉一区二区三区在线视频| 久久99亚洲网美利坚合众国| 成人淫片在线看| 日本不卡高清| jizz欧美激情18| 久久蜜桃av一区二区天堂 | 91视频九色网站| 日韩欧美中文| 午夜宅男在线视频| 国产日产亚洲精品系列| 亚洲 欧美 日韩 在线| 亚洲美女av在线播放| 涩涩在线视频| 美女被啪啪一区二区| 性伦欧美刺激片在线观看| 岛国精品资源网站| 粉嫩老牛aⅴ一区二区三区| 欧美熟妇另类久久久久久不卡| 久久99国产精品久久久久久久久| 中文幕av一区二区三区佐山爱| 一区二区三区四区欧美| 热久久久久久久| 一二三四国产精品| 欧美日韩精品一区二区三区蜜桃| 1024国产在线| 91美女高潮出水| 中文字幕免费一区二区三区| 污污视频在线免费| 亚洲精品欧美专区| 午夜免费福利视频| 欧美激情一区二区三区成人| 都市激情亚洲欧美| 久久成人免费观看| 久久日一线二线三线suv| 中文字幕免费观看| 在线观看精品自拍私拍| 粉嫩91精品久久久久久久99蜜桃| 西游记1978| 国产最新精品免费| 久久免费小视频| 亚洲精品国精品久久99热| 中文日产幕无线码一区二区| 日韩三级电影| 激情图区综合网| 精品无码人妻一区二区三区| 亚洲国产精彩中文乱码av在线播放 | 综合激情成人伊人| 性生交大片免费看女人按摩| 97欧美精品一区二区三区| 亚洲精品456| 久久撸在线视频| 亚洲综合色自拍一区| 午夜国产在线视频| 国产精品久久久久久久久免费 | 91免费在线看| 中文字幕欧美人妻精品一区蜜臀| 久久五月天综合| 美女视频亚洲色图| 天天爽夜夜爽一区二区三区| 亚洲人成人一区二区在线观看 | 国产亚洲视频在线观看| 成人在线视频观看| 久久www视频| 久久精品视频免费观看| 97人妻精品一区二区三区动漫| 欧美激情中文字幕在线| 欧美日韩123| 国产精品探花在线播放| 午夜精品一区二区三区免费视频 | 欧美另类在线播放| 亚洲aa在线| 中文字幕99页| 欧美日韩久久久一区|