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

MySQL為何使用可重復(fù)讀(Repeatable Read)為默認(rèn)隔離級(jí)別?

數(shù)據(jù)庫 MySQL
MySQL的鎖系統(tǒng):shared lock 和 exclusive lock 即共享鎖和排他鎖,也叫讀鎖(S)和寫鎖(X),共享鎖和排他鎖都屬于悲觀鎖。排他鎖又可以可以分為行鎖和表鎖。

[[405301]]

本文轉(zhuǎn)載自微信公眾號(hào)「java寶典」,作者iTengyu。轉(zhuǎn)載本文請(qǐng)聯(lián)系java寶典公眾號(hào)。

 群里有小伙伴面試時(shí),碰到面試官提了個(gè)很刁鉆的問題:Mysql為何使用可重復(fù)讀(Repeatable read)為默認(rèn)隔離級(jí)別???

下面進(jìn)入正題:

我們都知道事務(wù)的幾種性質(zhì) :原子性、一致性、隔離性和持久性 (ACID)

為了維持一致性和隔離性,一般使用加鎖這種方式來處理,但是加鎖相對(duì)帶來的是并發(fā)處理能力的降低

而數(shù)據(jù)庫是個(gè)高并發(fā)的應(yīng)用,因此對(duì)于加鎖的處理是事務(wù)的精髓.

下面我們來了解一下封鎖協(xié)議,以及事務(wù)在數(shù)據(jù)庫中做了什么

封鎖協(xié)議(Locking Protocol)

MySQL的鎖系統(tǒng):shared lock 和 exclusive lock 即共享鎖和排他鎖,也叫讀鎖(S)和寫鎖(X),共享鎖和排他鎖都屬于悲觀鎖。排他鎖又可以可以分為行鎖和表鎖。

封鎖協(xié)議(Locking Protocol): 在使用X鎖或S鎖對(duì)數(shù)據(jù)加鎖時(shí),約定的一些規(guī)則.例如何時(shí)申請(qǐng)X或S鎖,持續(xù)時(shí)間,何時(shí)釋放鎖等.

一級(jí)、二級(jí)、三級(jí)封鎖協(xié)議

對(duì)封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議,不同的封鎖協(xié)議,為并發(fā)操作的正確性提供不同程度的保證

一級(jí)封鎖協(xié)議

一級(jí)封鎖協(xié)議定義:事務(wù)T在修改數(shù)據(jù)R之前必須先對(duì)其加X鎖(排他鎖),直到事務(wù)結(jié)束才釋放。事務(wù)結(jié)束包括正常結(jié)束(COMMIT)和非正常結(jié)束(ROLLBACK)。

一級(jí)封鎖協(xié)議可以防止丟失修改,并保證事務(wù)T是可恢復(fù)的。使用一級(jí)封鎖協(xié)議可以解決丟失修改問題。

在一級(jí)封鎖協(xié)議中,如果僅僅是讀數(shù)據(jù)不對(duì)其進(jìn)行修改,是不需要加鎖的,它不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。

二級(jí)封鎖協(xié)議

二級(jí)封鎖協(xié)議定義:一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖(共享鎖),讀完后釋放S鎖。事務(wù)的加鎖和解鎖嚴(yán)格分為兩個(gè)階段,第一階段加鎖,第二階段解鎖。

  • 加鎖階段: 在對(duì)任何數(shù)據(jù)進(jìn)行讀操作之前要申請(qǐng)并獲得S鎖(共享鎖,其它事務(wù)可以繼續(xù)加共享鎖,但不能加排它鎖),在進(jìn)行寫操作之前要申請(qǐng)并獲得X鎖(排它鎖,其它事務(wù)不能再獲得任何鎖)。加鎖不成功,則事務(wù)進(jìn)入等待狀態(tài),直到加鎖成功才繼續(xù)執(zhí)行。
  • 解鎖階段:當(dāng)事務(wù)釋放了一個(gè)封鎖以后,事務(wù)進(jìn)入解鎖階段,在該階段只能進(jìn)行解鎖操作不能再進(jìn)行加鎖操作。

二級(jí)封鎖協(xié)議除防止了丟失修改,還可以進(jìn)一步防止讀“臟”數(shù)據(jù)。但在二級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后釋放S鎖,所以它不能保證可重復(fù)讀。

二級(jí)封鎖的目的是保證并發(fā)調(diào)度的正確性。就是說,如果事務(wù)滿足兩段鎖協(xié)議,那么事務(wù)的并發(fā)調(diào)度策略是串行性的。保證事務(wù)的并發(fā)調(diào)度是串行化(串行化很重要,尤其是在數(shù)據(jù)恢復(fù)和備份的時(shí)候)

三級(jí)封鎖協(xié)議

三級(jí)封鎖協(xié)議定義:一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖(共享鎖),直到事務(wù)結(jié)束才釋放。在一級(jí)封鎖協(xié)議(一級(jí)封鎖協(xié)議:修改之前先加X鎖,事務(wù)完成釋放)的基礎(chǔ)上加上S鎖,事務(wù)結(jié)束后釋放S鎖

三級(jí)封鎖協(xié)議除防止了丟失修改和不讀“臟”數(shù)據(jù)外,還進(jìn)一步防止了不可重復(fù)讀。上述三級(jí)協(xié)議的主要區(qū)別在于什么操作需要申請(qǐng)封鎖,以及何時(shí)釋放。

事務(wù)四種隔離級(jí)別

在數(shù)據(jù)庫操作中,為了有效保證并發(fā)讀取數(shù)據(jù)的正確性,提出的事務(wù)隔離級(jí)別。上面提到的封鎖協(xié)議 ,也是為了構(gòu)建這些隔離級(jí)別存在的。

隔離級(jí)別 臟讀(Dirty Read) 不可重復(fù)讀(NonRepeatable Read) 幻讀(Phantom Read)

隔離級(jí)別 臟讀(Dirty Read) 不可重復(fù)讀(NonRepeatable Read) 幻讀(Phantom Read)
未提交讀(Read uncommitted) 可能 可能 可能
已提交讀(Read committed) 不可能 可能 可能
可重復(fù)讀(Repeatable read) 不可 不可 可能
可串行化(Serializable ) 不可能 不可能 不可能

為什么是RR

一般的DBMS系統(tǒng),默認(rèn)都會(huì)使用讀提交(Read-Comitted,RC)作為默認(rèn)隔離級(jí)別,如Oracle、SQL Server等,而MySQL卻使用可重復(fù)讀(Read-Repeatable,RR)。要知道,越高的隔離級(jí)別,能解決的數(shù)據(jù)一致性問題越多,理論上性能的損耗更大,且并發(fā)性越低。隔離級(jí)別依次為: SERIALIZABLE > RR > RC > RU

我們可以通過以下語句設(shè)置和獲取數(shù)據(jù)庫的隔離級(jí)別:

查看系統(tǒng)的隔離級(jí)別:

  1. mysql> select @@global.tx_isolation isolation
  2. +-----------------+ 
  3. isolation       | 
  4. +-----------------+ 
  5. REPEATABLE-READ | 
  6. +-----------------+ 
  7. 1 row in set, 1 warning (0.00 sec) 

查看當(dāng)前會(huì)話的 隔離級(jí)別:

mysql> select @@tx_isolation;

  1. mysql> select @@tx_isolation; 
  2. +----------------+ 
  3. | @@tx_isolation | 
  4. +----------------+ 
  5. READ-COMMITTED | 
  6. +----------------+ 
  7. 1 row in set, 1 warning (0.00 sec) 

設(shè)置會(huì)話的隔離級(jí)別,隔離級(jí)別由低到高設(shè)置依次為:

  1. set session transacton isolation level read uncommitted
  2. set session transacton isolation level read committed
  3. set session transacton isolation level repeatable read
  4. set session transacton isolation level serializable

設(shè)置當(dāng)前系統(tǒng)的隔離級(jí)別,隔離級(jí)別由低到高設(shè)置依次為:

  1. set global transacton isolation level read uncommitted
  2. set global transacton isolation level read committed
  3. set global transacton isolation level repeatable read
  4. set global transacton isolation level serializable

可重復(fù)讀(Repeated Read):可重復(fù)讀?;阪i機(jī)制并發(fā)控制的DBMS需要對(duì)選定對(duì)象的讀鎖(read locks)和寫鎖(write locks)一直保持到事務(wù)結(jié)束,但不要求“范圍鎖(range-locks)”,因此可能會(huì)發(fā)生“幻影讀(phantom reads)” 在該事務(wù)級(jí)別下,保證同一個(gè)事務(wù)從開始到結(jié)束獲取到的數(shù)據(jù)一致。是Mysql的默認(rèn)事務(wù)級(jí)別。

下面我們先來思考2個(gè)問題

  • 在讀已提交(Read Commited)級(jí)別下,出現(xiàn)不可重復(fù)讀問題怎么辦?需要解決么?

不用解決,這個(gè)問題是可以接受的!畢竟你數(shù)據(jù)都已經(jīng)提交了,讀出來本身就沒有太大問題!Oracle ,SqlServer 默認(rèn)隔離級(jí)別就是RC,我們也沒有更改過它的默認(rèn)隔離級(jí)別.

  • 在Oracle,SqlServer中都是選擇讀已提交(Read Commited)作為默認(rèn)的隔離級(jí)別,為什么Mysql不選擇讀已提交(Read Commited)作為默認(rèn)隔離級(jí)別,而選擇可重復(fù)讀(Repeatable Read)作為默認(rèn)的隔離級(jí)別呢?

歷史原因,早階段Mysql(5.1版本之前)的Binlog類型Statement是默認(rèn)格式,即依次記錄系統(tǒng)接受的SQL請(qǐng)求;5.1及以后,MySQL提供了Row,Mixed,statement 3種Binlog格式, 當(dāng)binlog為statement格式,使用RC隔離級(jí)別時(shí),會(huì)出現(xiàn)BUG因此Mysql將可重復(fù)讀(Repeatable Read)作為默認(rèn)的隔離級(jí)別!

Binlog簡(jiǎn)介

Mysql binlog是二進(jìn)制日志文件,用于記錄mysql的數(shù)據(jù)更新或者潛在更新(比如DELETE語句執(zhí)行刪除而實(shí)際并沒有符合條件的數(shù)據(jù)),在mysql主從復(fù)制中就是依靠的binlog。可以通過語句“show binlog events in 'binlogfile'”來查看binlog的具體事件類型。binlog記錄的所有操作實(shí)際上都有對(duì)應(yīng)的事件類型的

MySQL binlog的三種工作模式:Row(用到MySQL的特殊功能如存儲(chǔ)過程、觸發(fā)器、函數(shù),又希望數(shù)據(jù)最大化一直則選擇Row模式,我們公司選擇的是row) 簡(jiǎn)介:日志中會(huì)記錄每一行數(shù)據(jù)被修改的情況,然后在slave端對(duì)相同的數(shù)據(jù)進(jìn)行修改。優(yōu)點(diǎn):能清楚的記錄每一行數(shù)據(jù)修改的細(xì)節(jié) 缺點(diǎn):數(shù)據(jù)量太大

Statement (默認(rèn))簡(jiǎn)介:每一條被修改數(shù)據(jù)的sql都會(huì)記錄到master的bin-log中,slave在復(fù)制的時(shí)候sql進(jìn)程會(huì)解析成和原來master端執(zhí)行過的相同的sql再次執(zhí)行。在主從同步中一般是不建議用statement模式的,因?yàn)闀?huì)有些語句不支持,比如語句中包含UUID函數(shù),以及LOAD DATA IN FILE語句等 優(yōu)點(diǎn):解決了 Row level下的缺點(diǎn),不需要記錄每一行的數(shù)據(jù)變化,減少bin-log日志量,節(jié)約磁盤IO,提高新能 缺點(diǎn):容易出現(xiàn)主從復(fù)制不一致

Mixed(混合模式)簡(jiǎn)介:結(jié)合了Row level和Statement level的優(yōu)點(diǎn),同時(shí)binlog結(jié)構(gòu)也更復(fù)雜。

我們可以簡(jiǎn)單理解為binlog是一個(gè)記錄數(shù)據(jù)庫更改的文件,主從復(fù)制時(shí)需要此文件,具體細(xì)節(jié)先略過

主從不一致實(shí)操

binlog為STATEMENT格式,且隔離級(jí)別為**讀已提交(Read Commited)**時(shí),有什么bug呢?測(cè)試表:

  1. mysql> select * from test; 
  2. +----+------+------+ 
  3. | id | name | age  | 
  4. +----+------+------+ 
  5. |  1 | NULL | NULL | 
  6. |  2 | NULL | NULL | 
  7. |  3 | NULL | NULL | 
  8. |  4 | NULL | NULL | 
  9. |  5 | NULL | NULL | 
  10. |  6 | NULL | NULL | 
  11. +----+------+------+ 
  12. rows in set (0.00 sec) 
Session1 Session2
mysql> set tx_isolation = 'read-committed';  
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> set tx_isolation = 'read-committed';
Query OK, 0 rows affected, 1 warning (0.00 sec)  
begin;
Query OK, 0 rows affected (0.00 sec)
begin;
Query OK, 0 rows affected (0.00 sec)
delete from test where 1=1;  
Query OK, 6 rows affected (0.00 sec)  
  insert into test values (null,'name',100);
Query OK, 1 row affected (0.00 sec)  
  commit;
Query OK, 0 rows affected (0.01 sec)  
commit;  
Query OK, 0 rows affected (0.01 sec)

Master此時(shí)輸出

  1. select * from test; 
  2. +----+------+------+ 
  3. | id | name | age  | 
  4. +----+------+------+ 
  5. |  7 | name |  100 | 
  6. +----+------+------+ 
  7. 1 row in set (0.00 sec) 

但是,你在此時(shí)在從(slave)上執(zhí)行該語句,得出輸出

  1. mysql> select * from test; 
  2. Empty set (0.00 sec) 

在master上執(zhí)行的順序?yàn)橄葎h后插!而此時(shí)binlog為STATEMENT格式,是基于事務(wù)記錄,在事務(wù)未提交前,二進(jìn)制日志先緩存,提交后再寫入記錄的,因此順序?yàn)橄炔搴髣h!slave同步的是binglog,因此從機(jī)執(zhí)行的順序和主機(jī)不一致!slave在插入后刪除了所有數(shù)據(jù).

解決方案有兩種!(1)隔離級(jí)別設(shè)為可重復(fù)讀(Repeatable Read),在該隔離級(jí)別下引入間隙鎖。當(dāng)Session 1執(zhí)行delete語句時(shí),會(huì)鎖住間隙。那么,Ssession 2執(zhí)行插入語句就會(huì)阻塞住!(2)將binglog的格式修改為row格式,此時(shí)是基于行的復(fù)制,自然就不會(huì)出現(xiàn)sql執(zhí)行順序不一樣的問題!奈何這個(gè)格式在mysql5.1版本開始才引入。因此由于歷史原因,mysql將默認(rèn)的隔離級(jí)別設(shè)為可重復(fù)讀(Repeatable Read),保證主從復(fù)制不出問題!

RU和Serializable

項(xiàng)目中不太使用**讀未提交(Read UnCommitted)和串行化(Serializable)**兩個(gè)隔離級(jí)別,原因:

讀未提交(Read UnCommitted)

允許臟讀,也就是可能讀取到其他會(huì)話中未提交事務(wù)修改的數(shù)據(jù) 一個(gè)事務(wù)讀到另一個(gè)事務(wù)未提交讀數(shù)據(jù)

串行化(Serializable)

使用的悲觀鎖的理論,實(shí)現(xiàn)簡(jiǎn)單,數(shù)據(jù)更加安全,但是并發(fā)能力非常差。如果你的業(yè)務(wù)并發(fā)的特別少或者沒有并發(fā),同時(shí)又要求數(shù)據(jù)及時(shí)可靠的話,可以使用這種模式。一般是使用mysql自帶分布式事務(wù)功能時(shí)才使用該隔離級(jí)別

RC和 RR

此時(shí)我們糾結(jié)的應(yīng)該就只有一個(gè)問題了:隔離級(jí)別是用讀已提交還是可重復(fù)讀?

接下來對(duì)這兩種級(jí)別進(jìn)行對(duì)比的第一種情況:

在RR隔離級(jí)別下,存在間隙鎖,導(dǎo)致出現(xiàn)死鎖的幾率比RC大的多!

實(shí)現(xiàn)一個(gè)簡(jiǎn)單的間隙鎖例子

  1. select * from test where id <11 ; 
  2. +----+------+------+ 
  3. | id | name | age  | 
  4. +----+------+------+ 
  5. |  1 | NULL | NULL | 
  6. |  2 | NULL | NULL | 
  7. |  3 | NULL | NULL | 
  8. |  4 | NULL | NULL | 
  9. |  5 | NULL | NULL | 
  10. |  6 | NULL | NULL | 
  11. |  7 | name |   7  | 
  12. +----+------+------+ 
  13. rows in set (0.00 sec) 
session1 session2
mysql> set tx_isolation = 'repeatable-read';  
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> set tx_isolation = 'repeatable-read';
Query OK, 0 rows affected, 1 warning (0.00 sec)  
Begin;  
select * from test where id <11 for update;  
  insert into test values(null,'name',9);   //被阻塞!
commit;  
Query OK, 0 rows affected (0.00 sec)  
  Query OK, 1 row affected (12.23 sec) //鎖釋放后完成了操作

在RR隔離級(jí)別下,可以鎖住(-∞,10] 這個(gè)間隙,防止其他事務(wù)插入數(shù)據(jù)!而在RC隔離級(jí)別下,不存在間隙鎖,其他事務(wù)是可以插入數(shù)據(jù)!

ps:在RC隔離級(jí)別下并不是不會(huì)出現(xiàn)死鎖,只是出現(xiàn)幾率比RR低而已

鎖表和鎖行

在RR隔離級(jí)別下,條件列未命中索引會(huì)鎖表!而在RC隔離級(jí)別下,只鎖行

  1. select * from test; 
  2. +----+------+------+ 
  3. | id | name | age  | 
  4. +----+------+------+ 
  5. |  8 | name |   11 | 
  6. |  9 | name |    9 | 
  7. | 10 | name |   15 | 
  8. | 11 | name |   15 | 
  9. | 12 | name |   16 | 
  10. +----+------+------+ 

鎖表的例子:

session1 session2
Begin;  
update test set age = age+1  where age = 15;  
Rows matched: 2  Changed: 2  Warnings: 0  
  insert into test values(null,'test',15);
ERROR 1205 (HY000): Lock wait timeout exceeded;  
Commit;

session2插入失敗 查詢 數(shù)據(jù)顯示:

  1. select * from test; 
  2. +----+------+------+ 
  3. | id | name | age  | 
  4. +----+------+------+ 
  5. |  8 | name |   11 | 
  6. |  9 | name |    9 | 
  7. | 10 | name |   16 | 
  8. | 11 | name |   16 | 
  9. | 12 | name |   16 | 
  10. +----+------+------+ 

半一致性讀(semi-consistent)特性

在RC隔離級(jí)別下,半一致性讀(semi-consistent)特性增加了update操作的并發(fā)性!

在5.1.15的時(shí)候,innodb引入了一個(gè)概念叫做“semi-consistent”,減少了更新同一行記錄時(shí)的沖突,減少鎖等待。所謂半一致性讀就是,一個(gè)update語句,如果讀到一行已經(jīng)加鎖的記錄,此時(shí)InnoDB返回記錄最近提交的版本,判斷此版本是否滿足where條件。若滿足則重新發(fā)起一次讀操作,此時(shí)會(huì)讀取行的最新版本并加鎖!

建議

在RC級(jí)別下,用的binlog為row格式,是基于行的復(fù)制,Innodb的創(chuàng)始人也是建議binlog使用該格式

互聯(lián)網(wǎng)項(xiàng)目請(qǐng)用:讀已提交(Read Commited)這個(gè)隔離級(jí)別

總結(jié)

由于歷史原因,老版本Mysql的binlog使用statement格式,不使用RR隔離級(jí)別會(huì)導(dǎo)致主從不一致的情況

目前(5.1版本之后)我們使用row格式的binlog 配合RC隔離級(jí)別可以實(shí)現(xiàn)更好的并發(fā)性能.

 

責(zé)任編輯:武曉燕 來源: java寶典
相關(guān)推薦

2024-07-16 08:19:46

MySQL數(shù)據(jù)InnoDB

2010-09-30 16:21:40

DB2隔離級(jí)別

2024-05-13 11:46:33

MySQL數(shù)據(jù)庫

2021-06-17 09:16:34

MySQL數(shù)據(jù)庫隔離級(jí)別

2022-06-29 11:01:05

MySQL事務(wù)隔離級(jí)別

2022-01-03 07:18:05

臟讀幻讀 MySQL

2024-04-23 08:17:14

MySQL數(shù)據(jù)庫隔離

2020-07-02 08:22:56

MySQL間隙鎖過行鎖

2022-06-10 11:51:49

MySQL事務(wù)隔離

2023-02-02 07:06:10

2023-11-01 14:13:00

MySQL事務(wù)隔離級(jí)別

2019-12-24 14:50:01

MySQL可重復(fù)讀數(shù)據(jù)庫

2023-07-03 08:15:46

MySQLInnoDB

2024-03-11 00:00:00

mysqlInnoDB幻讀

2021-07-26 10:28:13

MySQL事務(wù)隔離

2023-12-12 10:54:55

MySQL模式InnoDB

2022-09-21 09:00:10

MySQL幻讀隔離級(jí)別

2018-12-19 16:46:38

MySQL事務(wù)隔離數(shù)據(jù)庫

2023-10-16 10:29:51

mysqlMVCC

2022-09-08 08:02:26

MySQL隔離
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

最近2019中文字幕mv免费看| 偷拍一区二区三区| 国产精品日韩在线| 五月天中文字幕在线| 91在线直播| 精品一区二区免费视频| 久热99视频在线观看| 香蕉视频xxxx| 成人av影院在线观看| 9l国产精品久久久久麻豆| 欧美大荫蒂xxx| 亚洲黄色免费在线观看| 亚洲人成午夜免电影费观看| 国产三级精品三级在线专区| 国产va免费精品高清在线观看| 国产精成人品免费观看| 成人污版视频| 午夜影院久久久| 日本精品一区二区三区视频| 国产精品美女一区| 在线视频观看日韩| 国产午夜精品一区二区三区| 蜜桃福利午夜精品一区| ****av在线网毛片| 中文字幕av在线一区二区三区| 国产成人精品一区二区在线 | 国产区一区二| 精品久久久久人成| 亚洲午夜精品久久| 国产福利小视频| 天堂久久一区二区三区| 欧美日韩第一页| 中文字幕av久久爽一区| 2020最新国产精品| 在线免费av一区| 大荫蒂性生交片| 久久久资源网| 成人黄色一级视频| 国产一区视频在线播放| 国产福利拍拍拍| 欧美大片一区| 欲色天天网综合久久| 午夜福利三级理论电影| 成人在线中文| 欧美午夜精品久久久久久浪潮| 婷婷视频在线播放| 九色视频网站在线观看| 国产.精品.日韩.另类.中文.在线.播放| 国产suv精品一区二区| 黄色一级视频免费| 午夜影院欧美| 自拍偷拍亚洲欧美| 免费在线观看成年人视频| 人人九九精品视频| 欧美色精品天天在线观看视频| 精品成在人线av无码免费看| 免费网站成人| 欧美国产欧美综合| 欧美精品免费观看二区| 午夜黄色小视频| 成人一区二区三区视频在线观看| 成人激情春色网| 国产精品51麻豆cm传媒| 久热精品在线| 国产成人精品久久久| 国产黄色片免费看| 亚洲精品婷婷| 久久噜噜噜精品国产亚洲综合| 男人操女人的视频网站| 99精品美女| 精品国产依人香蕉在线精品| 欧美aaa级片| 日韩www.| 久久夜精品香蕉| 蜜桃av免费观看| 日韩精品诱惑一区?区三区| 国产午夜一区二区| 极品蜜桃臀肥臀-x88av| 91精品国产自产拍在线观看蜜| 久久成人亚洲精品| 日韩手机在线观看| 日本不卡一区二区三区| 国产精品自产拍高潮在线观看| 国产尤物视频在线观看| 成人小视频在线| 蜜桃传媒一区二区| 中文字幕在线观看日本| 亚洲精品中文在线影院| 免费拍拍拍网站| 在线成人视屏| 日韩一级成人av| 美国黄色一级毛片| 亚洲美女视频| 欧美综合第一页| 亚洲手机在线观看| 成人午夜av电影| 欧美成ee人免费视频| 日本欧美在线视频免费观看| 亚洲成人av一区二区三区| 37pao成人国产永久免费视频| 欧美在线se| 亚洲国产91色在线| 欧美性猛交xxxx乱大交少妇| 激情综合网址| 国产精品视频999| 欧日韩在线视频| 国产精品丝袜一区| www.av蜜桃| 日本成人在线网站| 国产网站欧美日韩免费精品在线观看 | 日韩欧美99| 黄色在线观看视频网站| 欧美在线观看一区二区| 在线观看亚洲免费视频| 91亚洲国产| 国产精品91久久| 欧美在线 | 亚洲| 亚洲欧美一区二区久久| 成人三级视频在线播放 | 青青草国产精品97视觉盛宴| 国产精品av一区| 蜜桃视频网站在线| 色素色在线综合| 色综合久久五月| 欧美精品啪啪| 91精品在线看| a√资源在线| 色94色欧美sute亚洲13| 最新在线黄色网址| 国一区二区在线观看| 成人激情视频在线观看| 国产精品免费观看| 欧美性猛交xxxx乱大交3| 久久久久无码国产精品一区李宗瑞| 91嫩草亚洲精品| 国产精品久久久久久久久久免费 | 在线看日韩av| 一级片在线观看免费| 不卡一区在线观看| 成人一级生活片| 国产精品视频一区视频二区| 中文国产成人精品| 波多野结衣视频免费观看| 99re在线精品| 97超碰青青草| 日本天堂一区| 91av视频在线免费观看| 神马久久久久久久久久| 亚洲第一综合色| 国产大尺度视频| 在线日韩欧美| 九九99久久| 亚洲性受xxx喷奶水| 日韩av在线免费播放| 黄色一级片免费看| 久久久久9999亚洲精品| 亚洲精品高清无码视频| 极品美女一区二区三区| 国产精品对白刺激| 91caoporn在线| 欧美日韩www| 夫妻性生活毛片| 国产91丝袜在线播放九色| 天堂8在线天堂资源bt| 成功精品影院| 欧美一级电影久久| 激情在线视频| 欧美日韩国产免费一区二区| sm捆绑调教视频| 国产成人亚洲综合a∨婷婷图片| 成人国产在线看| 国产66精品| 欧洲中文字幕国产精品| 成人三级黄色免费网站| 欧美男女性生活在线直播观看 | 亚洲成人www| 加勒比一区二区| 另类欧美日韩国产在线| 日韩人妻一区二区三区蜜桃视频| 成人午夜网址| 欧洲亚洲免费在线| 精品51国产黑色丝袜高跟鞋| 欧美精品一区二区三区四区| aaaaaa毛片| 中文字幕人成不卡一区| 中文字幕第3页| 青青草国产精品亚洲专区无| 国产乱子伦精品视频| 亚洲免费福利一区| 91美女福利视频高清| 国产夫妻在线播放| 日韩天堂在线视频| 韩国av电影在线观看| 欧美性一区二区| 久久久无码一区二区三区| 久久久蜜桃精品| 九色91porny| 日韩影院在线观看| 黄色a级片免费看| 精品国精品国产自在久国产应用 | 亚洲少妇中出一区| 国产精品伦子伦| 精品亚洲porn| 国产极品美女高潮无套久久久| 亚洲一区 二区 三区| 久久久久久一区| 欧美激情精品| 国产精品久久久久久久久久免费 | 国产chinesehd精品露脸| 免费看的黄色欧美网站| japanese在线播放| 欧美色图在线播放| 韩国成人av| 亚洲精品国产九九九| 国产精品亚洲第一区| 国产美女高潮在线观看| 日韩亚洲精品电影| 青青草免费在线视频| 精品1区2区在线观看| 在线免费av网| 在线观看一区二区视频| 日韩特黄一级片| 亚洲午夜羞羞片| 亚洲最大的黄色网址| 国产日韩精品一区| 香蕉网在线播放| av不卡在线播放| 一边摸一边做爽的视频17国产| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩电影免费观看高清完整| 欧美一区二区三区久久| 99精品国产高清一区二区| 在线视频成人| 国产精品综合网站| a屁视频一区二区三区四区| 97精品一区二区三区| 怡红院在线播放| 欧美大片va欧美在线播放| 国产黄色小视频在线| 久久久91精品国产| 免费黄网站在线播放| 日韩中文在线视频| 91视频在线观看| 一区二区成人精品| 国产精品秘入口| 一区二区三区四区视频| 美女欧美视频在线观看免费 | 美女被到爽高潮视频| 久久亚洲精品国产精品紫薇| 亚洲午夜久久久久久久久红桃| 99久久99久久久精品齐齐| 2一3sex性hd| 97精品久久久久中文字幕| 老司机免费视频| 99精品视频一区| 欧美老熟妇乱大交xxxxx| 久久久美女毛片| 在线观看免费小视频| 国产精品第一页第二页第三页| 中文字幕有码在线播放| 国产精品久久久久aaaa樱花| 欧美h片在线观看| 亚洲欧美日韩精品久久久久| 放荡的美妇在线播放| 亚洲午夜羞羞片| 中文字幕一区二区人妻电影| 在线视频欧美精品| 艳妇乳肉豪妇荡乳av| 日韩一区二区精品| 欧美自拍第一页| 国产一区二区三区直播精品电影 | 18涩涩午夜精品.www| 中文字幕在线2021| 亚洲成av人片一区二区梦乃| av图片在线观看| 欧美日韩国产免费一区二区| 午夜精品久久久久久久99老熟妇 | 国产 中文 字幕 日韩 在线| 欧美国产精品一区二区| 免费毛片在线播放免费| 欧美性色xo影院| 91精东传媒理伦片在线观看| 精品国产精品网麻豆系列 | 97se亚洲| 欧美日韩精品久久| 我不卡神马影院| 国产精品www在线观看| 日韩精品亚洲一区| 亚洲成人av免费观看| 99精品国产99久久久久久白柏| 国产高清一区二区三区四区| 亚洲欧美色一区| 日韩欧美在线观看免费| 91精品国产免费| 嫩草在线播放| 久久99精品视频一区97| se01亚洲视频| 国产传媒一区二区三区| 少妇精品久久久一区二区三区| 99热这里只有精品7| 亚洲欧美日韩综合国产aⅴ| 91视频福利网| 国产午夜一区二区三区| 国产中文字幕免费| 欧美日韩在线免费视频| 香蕉视频免费看| 久久精品国亚洲| free欧美| 黄色国产精品一区二区三区| 久久久久电影| 亚洲 中文字幕 日韩 无码| 高清在线不卡av| 99热这里只有精品4| 日韩欧美在线一区| 欧美一区二区在线观看视频| 久久亚洲影音av资源网 | 日韩一级精品| 五月天国产视频| 国产精品无圣光一区二区| 圆产精品久久久久久久久久久| 欧美一区二区三区小说| 在线看免费av| 国产精品6699| 久久不卡国产精品一区二区| 成 年 人 黄 色 大 片大 全| 国产一二三精品| 欧美视频一区二区在线| 在线视频一区二区三| 你懂的视频在线| 17婷婷久久www| 韩国女主播一区二区三区| 中文字幕免费高| 麻豆精品国产91久久久久久| www.av天天| 欧美性猛交xxxx富婆| 四虎影视在线观看2413| 午夜精品视频在线| av毛片精品| 青草网在线观看| 粉嫩久久99精品久久久久久夜| 好吊日在线视频| 91精品欧美一区二区三区综合在| 香蕉视频在线免费看| 国产精品手机播放| 欧美aaaaaaaaaaaa| 天堂在线中文在线| 1区2区3区精品视频| 国产免费av电影| 久久福利视频导航| 试看120秒一区二区三区| 国产女人18毛片| 国产成人8x视频一区二区| 欧美黄色免费观看| 亚洲精品一区二区在线观看| 超黄网站在线观看| 久久国产一区二区| 日日夜夜一区二区| 国产精品18在线| 91精品国产综合久久精品| √天堂8在线网| 国产欧美亚洲日本| 亚洲制服少妇| www久久久久久久| 337p亚洲精品色噜噜噜| 欧美v亚洲v| 精品国产一区二区三| 久久久久久一区二区| 永久免费毛片在线观看| 69堂亚洲精品首页| 女子免费在线观看视频www| 国产精品一区二区三区在线| 国产精品毛片在线看| 谁有免费的黄色网址| 欧美精品aⅴ在线视频| 欧美人体视频xxxxx| 久久人人爽爽人人爽人人片av| 奇米四色…亚洲| 国产av无码专区亚洲av毛网站| 亚洲第一页自拍| 日韩另类视频| 97在线免费视频观看| 91亚洲大成网污www| 国产精品无码一区| 欧美理论片在线观看| 国产a久久精品一区二区三区| 91亚洲免费视频| 亚洲成人一区在线| 国产在线高清| 91麻豆蜜桃| 日韩制服丝袜先锋影音| 久久久久99精品成人片试看| 日韩精品在线观看一区二区| 日韩成人精品一区二区三区| 人妻av中文系列| 日韩毛片视频在线看| 飘雪影院手机免费高清版在线观看 | 成人性做爰片免费视频| 26uuu国产电影一区二区| a在线观看免费| 国产精品久久久久久久久久免费|