久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Mysql InnoDB的鎖定機制實例詳解

瀏覽:73日期:2023-10-07 08:42:16
1.InnoDB的鎖定機制

InnoDB存儲引擎支持行級鎖,支持事務處理,事務是有一組SQL語句組成的邏輯處理單元,他的ACID特性如下:

原子性(Atomicity): 事務具有原子不可分割的特性,要么一起執行,要么都不執行。 一致性(Consistency): 在事務開始和事務結束時,數據都保持一致狀態。 隔離性(Isolation): 在事務開始和結束過程中,事務保持著一定的隔離特性,保證事務不受外部并發數據操作的影響。 持久性(Durability): 在事務完成后,數據將會被持久化到數據庫中。

并發事務能提高數據庫資源的利用率,提高了數據庫的事務吞吐量,但并發事務也存在一些問題,主要包括:

更新丟失(Lost Update): 兩個事務更新同一條數據,但第二個事務中途失敗退出,導致兩個修改都失效了;因為此時數據庫沒有執行任何鎖操作,并發事務并沒有被隔離。(現代數據庫已經不存在這種問題) 臟讀(Dirty Reads): 一個事務讀了某行數據,但是另一個事務已經更新了這行數據,這是非常危險的,很可能導致所有的操作被回滾。 不可重復讀: 一個事務對一行數據重復讀取兩次(多次),可是得到了不同的結果,在兩次讀取過程中,有可能存在另一個事務對數據進行了修改。 幻讀:事務在操作過程中進行兩次查詢,第二次查詢結果包含了第一次沒有出現的數據。出現幻讀的主要原因是兩次查詢過程中另一個事務插入新的數據。

數據庫并發中的“更新丟失”通常應該是完全避免的,但防止更新丟失數據,并不能單靠數據庫事務控制來解決,需要應用程序對要更新的數據加必要的鎖來解決,而以上出現的數據庫問題都必要由數據庫提供一定的事務隔離機制來解決。為了避免數據庫事務并發帶來的問題,在標準SQL規范中定義了4個事務的隔離級別,不同的隔離級別對事務處理不一樣。

數據庫隔離級別的比較

隔離級別 讀數據一致性 臟讀 不可重復讀 幻讀 未提交讀 (Read uncommitted) 最低級別,只能保證不讀取物理上損壞的數據 是 是 是 已提交讀 (Read committed) 語句級 否 是 是 可重復讀 (Repeatable read) 事務級 否 否 是 可序列化 (Serializable) 最高級別,事務級 否 否 否

InnoDB存儲引擎實現了4中行鎖,分別時共享鎖(S)、排他鎖(X)、意向共享鎖(IS)、意向排他鎖(IX)。

共享鎖:大家都能讀,但是不能改,只有其中一個獨占共享鎖時候才能改; 排它鎖:我要改,你們都不能改,也不能讀(但可以MVCC快照讀) 理解意向鎖

意向鎖不會和行級的S和X鎖沖突,只會和表級的S和X鎖沖突

意向鎖是為了避免遍歷全部行鎖

考慮這個例子:

事務A鎖住了表中的一行,讓這一行只能讀,不能寫。

之后,事務B申請整個表的寫鎖。

如果事務B申請成功,那么理論上它就能修改表中的任意一行,這與A持有的行鎖是沖突的。

數據庫需要避免這種沖突,就是說要讓B的申請被阻塞,直到A釋放了行鎖。

數據庫要怎么判斷這個沖突呢?

step1:判斷表是否已被其他事務用表鎖鎖表

step2:判斷表中的每一行是否已被行鎖鎖住。

注意step2,這樣的判斷方法效率實在不高,因為需要遍歷整個表。

于是就有了意向鎖。

在意向鎖存在的情況下,事務A必須先申請表的意向共享鎖,成功后再申請一行的行鎖。

在意向鎖存在的情況下,上面的判斷可以改成

step1:不變

step2:發現表上有意向共享鎖,說明表中有些行被共享行鎖鎖住了,因此,事務B申請表的寫鎖會被阻塞。

1.1通過索引檢索數據,上共享鎖,行鎖(如果不通過索引,會使用表鎖)

1.1通過索引檢索數據,上共享鎖,行鎖SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec)mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------對主鍵索引上共享鎖,其他事務也能獲取到共享鎖mysql> select * from test where id=1 lock in share mode;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 1 |+----+------+-------+-------+1 row in set (0.01 sec)--------------------------------------------------------------------------------事務B也能繼續加共享鎖mysql> select * from test where id=1 lock in share mode;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 1 |+----+------+-------+-------+1 row in set (0.01 sec)但無法更新,因為事務A也加了共享鎖mysql> update test set level=11 where id=1;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transactionMORE:無法加排它鎖select *from test where id=1 for update;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction可以更新未加鎖的,比如mysql> update test set level=11 where id=2;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0--------------------------------------------------------------------------------事務A也無法更新,因為事務B加了共享鎖mysql> update test set level=11 where id=1;ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction--------------------------------------------------------------------------------任意一個釋放共享鎖,則獨占共享鎖的事務可以更新mysql> commit;Query OK, 0 rows affected (0.00 sec)--------------------------------------------------------------------------------事務B釋放鎖,事務A獨占,可以更新了mysql> update test set level=11 where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0

1.2通過索引檢索數據,上排他鎖,行鎖

1.2通過索引檢索數據,上排他鎖,行鎖SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec)mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------對主鍵索引上排他鎖,其他事務也能獲取到共享鎖mysql> select *from test whereid=1 for update;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 1 |+----+------+-------+-------+1 row in set (0.01 sec)--------------------------------------------------------------------------------事務B則不能繼續上排它鎖,會發生等待mysql> select *from test where id=1 for update;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transactionMORE:也不能更新,因為更新也是上排它鎖mysql> update test set level=2 where id=1;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction也不能上共享鎖mysql> select * from test where level=1 lock in share mode;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction--------------------------------------------------------------------------------事務A可以更新mysql> update test set level=11 where id=1;Query OK, 1 row affected (0.08 sec)Rows matched: 1 Changed: 1 Warnings: 0--------------------------------------------------------------------------------釋放排它鎖mysql> commit;Query OK, 0 rows affected (0.00 sec)--------------------------------------------------------------------------------事務A釋放鎖,事務B就可以加排它鎖了mysql> select * from test where id=1 for update;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 1 |+----+------+-------+-------+1 row in set (0.00 sec)

1.3通過索引更新數據,也是上排他鎖,行鎖

對于 update,insert,delete 語句會自動加排它鎖

1.3通過索引更新數據,也是上排他鎖,行鎖SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec)mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------更新id=1的行,就給該行上了排它鎖,其他事務無法更新該行mysql> update test set level=11 where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0--------------------------------------------------------------------------------事務B則不能更新id=1的行,會發生等待mysql> update test set level=21 where id=1;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transactionMORE:也不能上排它鎖mysql> select *from test where id=1 for update;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction也不能上共享鎖mysql> select * from test where level=1 lock in share mode;ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction--------------------------------------------------------------------------------釋放排它鎖mysql> commit;Query OK, 0 rows affected (0.00 sec)--------------------------------------------------------------------------------事務A釋放鎖,事務B就可以加排它鎖了mysql> select * from test where id=1 for update;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 11|+----+------+-------+-------+1 row in set (0.00 sec)

2.1臟讀

//臟讀//2.1臟讀SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec)set session transaction isolationset session transaction isolation level read uncommitted;level read uncommitted; Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec) mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------mysql> update test set level=100 where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0--------------------------------------------------------------------------------//臟讀mysql> select *from test where id=1;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 100 |+----+------+-------+-------+1 row in set (0.00 sec)--------------------------------------------------------------------------------rollback;Query OK, 0 rows affected (0.01 sec)mysql> select *from test where id=1;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 1 |+----+------+-------+-------+1 row in set (0.00 sec)

2.2不可重復讀

2.2不可重復讀//臟讀SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec)set session transaction isolationset session transaction isolation level read uncommitted;level read uncommitted; Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec) mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------mysql> update test set level=100 where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0--------------------------------------------------------------------------------mysql> select *from test where id=1;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 100 |+----+------+-------+-------+1 row in set (0.00 sec)--------------------------------------------------------------------------------mysql> update test set level=1000 where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0--------------------------------------------------------------------------------//不可重復讀//讀三次,第一次是level是1,第二次是100,第三次是1000mysql> select *from test where id=1;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 1000|+----+------+-------+-------+1 row in set (0.00 sec)

2.3幻讀

//2.3幻讀SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec)set session transaction isolationset session transaction isolation level read uncommitted;level read uncommitted; Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec) mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------mysql> update test set level=100 where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0--------------------------------------------------------------------------------mysql> select *from test where id=1;+----+------+-------+-------+| id | name | money | level |+----+------+-------+-------+| 1 | tom | 100 | 100 |+----+------+-------+-------+1 row in set (0.00 sec)--------------------------------------------------------------------------------mysql> insert into test (name, money,level) VALUES (’tim’,250,4);Query OK, 1 row affected (0.01 sec)--------------------------------------------------------------------------------//幻讀//讀兩次,第二次多了tim的數據//如果是rr級別,需要使用當前讀select * from test lock in share mode;否則因為MVCC的緣故,是讀不到tim的mysql> select * from test;+----+-------+-------+-------+| id | name | money | level |+----+-------+-------+-------+| 1 | tom | 100 | 1 || 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 || 4 | tim | 250 | 4 |+----+-------+-------+-------+4 row in set (0.00 sec)3 間隙鎖(Net-Key鎖)

MVCC使RR級別下,事務當前讀,來避免了讀情況下的幻讀問題,但如果寫更新時候呢?在范圍更新的同時,往范圍內插入新數據,怎么辦?

于是就有了間隙鎖,在更新某個區間數據時,將會鎖定這個區間的所有記錄。例如update XXX where id between 1 and 100, 就會鎖住id從1到100之間的所有的記錄。值得注意的是,在這個區間中假設某條記錄并不存在,該條記錄也會被鎖住,這時,如果另一個事務往這個區間添加數據,就必須等待上一個事務釋放鎖資源。

使用間隙鎖有兩個目的,一是防止幻讀;二是滿足其恢復和賦值的需求。

3.1范圍間隙鎖,顯式左開右閉區間

//間隙鎖(Net-Key鎖) 范圍間隙鎖,左開右閉區間SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec) mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------mysql> update test set level=0where money between 0 and 200;Query OK, 2 rows affected (0.02 sec)Rows matched: 2 Changed: 2 Warnings: 0理論上應該鎖定[0,300)這個區間--------------------------------------------------------------------------------插入money=0等待mysql> insert into test (name, money,level) VALUES (’tim’,0,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=90等待mysql> insert into test (name, money,level) VALUES (’tim’,90,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=100等待mysql> insert into test (name, money,level) VALUES (’tim’,100,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=299等待mysql> insert into test (name, money,level) VALUES (’tim’,299,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=300 okmysql> insert into test (name, money,level) VALUES (’tim’,300,0);Query OK, 1 row affected (0.00 sec)

3.2單個間隙鎖 隱式區間

上小節是指定update某個區間,那如果說是只update一個值呢?還會有間隙鎖么?

//間隙鎖(Net-Key鎖) 單個間隙鎖,左開右閉區間SessionA SessionBmysql> set autocommit=0; mysql> set autocommit=0;Query OK, 0 rows affected (0.02 sec) Query OK, 0 rows affected (0.02 sec) mysql> select * from test; mysql> select * from test;--------------------------------------------------------------------------------+----+-------+-------+-------+ +----+-------+-------+-------+ | id | name | money | level | | id | name | money | level |+----+-------+-------+-------+ +----+-------+-------+-------+| 1 | tom | 100 | 1 | | 1 | tom | 100 | 1 || 2 | jack | 200 | 2 | | 2 | jack | 200 | 2 || 3 | lucas | 300 | 3 | | 3 | lucas | 300 | 3 |+----+-------+-------+-------+ +----+-------+-------+-------+3 rows in set (0.00 sec) 3 rows in set (0.00 sec)--------------------------------------------------------------------------------mysql> update test set level=0where money = 200;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0理論上應該鎖定[0,300)這個區間--------------------------------------------------------------------------------插入money=0 okmysql> insert into test (name, money,level) VALUES (’tim’,0,0);Query OK, 1 row affected (0.00 sec)插入money=90 okmysql> insert into test (name, money,level) VALUES (’tim’,90,0);Query OK, 1 row affected (0.00 sec)插入money=100等待mysql> insert into test (name, money,level) VALUES (’tim’,100,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=150等待mysql> insert into test (name, money,level) VALUES (’tim’,150,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=200等待mysql> insert into test (name, money,level) VALUES (’tim’,200,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=240等待mysql> insert into test (name, money,level) VALUES (’tim’,240,0);ERROR 1205 (HY000): Lock wait timeout exceeded;try restarting transaction插入money=300 okmysql> insert into test (name, money,level) VALUES (’tim’,300,0);Query OK, 1 row affected (0.00 sec)

當不指定區間時,隱式的區間為索引B+數前后兩個節點的值所確定的區間,也是左開右閉,對于上述例子,就是[0,300)這個區間。

總結

到此這篇關于Mysql InnoDB鎖定機制的文章就介紹到這了,更多相關Mysql InnoDB鎖定機制內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 国产精品视频网站 | 一区二区精品在线观看 | 成人黄色在线观看 | 国产精品久久久久久av公交车 | 国产精品国产 | 日韩成人久久 | 国产丝袜一区 | 91一区二区在线观看 | 中文字幕日韩欧美一区二区三区 | 国产区第一页 | 怡红院免费在线视频 | 亚洲综合大片69999 | 99热这里有精品 | 日韩精品一区二区三区中文在线 | 国产精品自拍一区 | 日本在线视频中文字幕 | 91免费在线播放 | 大黄网站在线观看 | www.五月婷婷 | 中文字幕av一区 | 99热精品在线 | 精品在线91 | 成人久久精品 | 久久99久久99精品免视看婷婷 | 成人一区二区三区在线 | 亚洲网站免费 | 欧美精品福利视频 | 日韩欧美一区二区三区 | 人人人人澡 | 91成人在线| 久久精品国产99久久久 | 美女福利网站 | 欧美 日韩 在线播放 | 国产999精品久久久影片官网 | 国产精品一区二区不卡 | 色橹橹欧美在线观看视频高清 | 6080yy精品一区二区三区 | 三级网址日本 | 精品一区国产 | 精品国产乱码久久久久久1区2区 | 国内精品在线视频 | 亚洲综合色自拍一区 | 欧美一级片在线 | 久久极品| 久久久成人精品 | 日韩欧美在线视频 | 亚洲一区免费观看 | 国产精品三级久久久久久电影 | 国产99久久久久久免费看农村 | 亚洲成人一区二区三区 | 国产看片网站 | 99久久婷婷国产综合亚洲 | 欧美三级电影在线播放 | 草草视频网站 | 中文字幕乱码一区二区三区 | 久久一区二区三区四区 | 亚洲黄色国产 | 久久人人爽人人爽人人片av高清 | 欧洲精品在线观看 | 操她视频网站 | 麻豆高清免费国产一区 | 日本 欧美 国产 | 久久久久一区二区三区 | 欧美麻豆 | 日韩在线一区二区三区 | 特级淫片女子高清视频在线观看 | 日本在线一二 | 成人精品 | 午夜免费视频 | 日韩精品专区 | 在线观看 亚洲 | 亚洲网站在线免费观看 | 国产精品成av人在线视午夜片 | 久久久久久久一区 | 国产色 | 亚洲二区在线视频 | 九一亚洲精品 | 精品久久久久久久久久久院品网 | 一区二区久久 | 国产精品18久久久 | 欧美精产国品一二三区 | 91精品中文字幕一区二区三区 | 男人久久天堂 | 五月婷婷色 | 亚洲国产成人久久一区二区三区 | 国产在线一区二区三区 | 国产精品国产三级国产aⅴ9色 | 96久久久久久| 在线观看免费av电影 | 亚洲国产二区 | 亚洲欧洲自拍 | 日本黄色大片免费 | 日日想日日干 | 国产一区二区三区在线 | 精品在线一区二区三区 | 国产精品亚洲综合 | 成人免费毛片aaaaaa片 | 国产精品美女www爽爽爽动态图 | 欧美成人精品一区二区 | 日本一级淫片免费看 | 成人免费视频网站在线看 | 国产91久久精品一区二区 | 国产91免费在线 | 欧美日本韩国一区二区三区 | 中文av网站 | 欧美视频在线免费 | 午夜激情在线观看 | 一级欧美一级日韩 | 日韩在线视频精品 | 亚洲啊v在线 | 欧美激情视频一区二区三区在线播放 | 99热精品在线 | 成人在线三级 | 亚洲欧美精选 | 在线视频一区二区 | 国产精品中文字幕在线 | 久久久久国产精品 | 91不卡 | 懂色av色香蕉一区二区蜜桃 | 欧美国产精品 | 最近韩国日本免费观看mv免费版 | 91视频www| 国产99久久精品 | 国产91色在线 | 亚洲 | 成人h视频 | 91久久久久久久久久久久久 | 大伊人久久 | 国产视频一区在线 | 日韩一级电影在线 | 一级片福利 | 成人免费淫片aa视频免费 | 超碰免费在 | 五月天狠狠爱 | 亚洲人免费 | 国产精品99 | 久草视频免费在线播放 | 色婷婷影院 | 成人欧美一区二区三区色青冈 | 国产伦精品一区二区 | 成人不卡在线 | 国产精品久久久久久久久久久免费看 | 亚洲视频一区在线播放 | 亚洲精品成人久久久 | 极品av | 色黄网站 | 99精品视频在线观看 | 97成人精品视频在线观看 | 天堂中文av在线 | 日本电影网址 | 在线永久免费观看日韩a | 国产一区 日韩 | 国产精品久久久久久久久久免费看 | 热久久久| 综合久久网 | 伊人夜夜躁av伊人久久 | 日韩在线看片 | 在线一级片 | 视频精品一区 | 一级毛片免费在线 | 在线观看你懂的网站 | 国内精品99 | 成人国产精品久久 | 91天堂| 一区二区三区在线播放 | 日韩拍拍 | 久久精选视频 | 午夜在线电影 | 欧美精品久久久 | 国产成人精品一区二区三区视频 | 91亚洲免费 | 亚洲视频在线看 | 蜜桃comaaa | 日韩欧美中文字幕在线视频 | 免费国产网站 | 免费一级黄色电影 | 婷婷免费视频 | 无码日韩精品一区二区免费 | www色婷婷| 日韩精品观看 | 国产精品99久久久久久宅男 | www.com欧美 | 不卡一区二区三区四区 | 1区2区视频 | 成人av教育| 99爱视频 | 99看片| 特级毛片www| 国产免费一区二区三区四区五区 | 男人的天堂在线视频 | 精品久久久久久久 | a一级片在线观看 | 久久国产精品免费一区二区三区 | 亚洲色图一区二区三区 | 99国产精品99久久久久久 | 日韩中文字幕在线免费 | 亚洲人人艹| 精品国产乱码久久久久久1区2区 | 日本妇乱大交xxxxx | 国产一区二区在线看 | 精品久久久久久国产 | 男人天堂中文字幕 | 国内精品一区二区三区 | 日韩一级免费在线观看 | 视频一区二区三区免费观看 | 亚洲免费不卡视频 | 亚洲综合在线网 | 久久国产视频精品 | 一区二区中文字幕 | 人人看人人草 | 黄色一级片在线看 | 一区二区久久 | 天天插天天操天天干 | 久久亚洲国产精品 | 日韩在线视频在线观看 | 国产精品视频 | 久久久精品日韩 | 精品久久一区二区 | 午夜欧美一区二区三区在线播放 | 亚洲精品久久久久久久久久久 | 美女国产精品 | 国产伦精品一区二区三毛 | 五月天婷婷激情视频 | 国产精品久久久久久婷婷天堂 | 精品国产一区二区三区av片 | 91成人免费视频 | 青青草免费在线视频 | 久久电影一区 | www国产在线观看 | 91夜夜操| 日本一区二区三区四区 | 综合伊人| 97视频在线免费观看 | 亚洲精品99 | 9久久婷婷国产综合精品性色 | 99r精品在线 | 亚洲视频中文字幕 | 奇米av在线| 日韩免费av一区二区 | 国产男女免费视频 | 日本精品二区 | 噜噜噜天天躁狠狠躁夜夜精品 | 日韩精品一区二区三区视频播放 | 日本在线一区二区三区 | 伊人色综合久久天天五月婷 | 欧美成人综合 | 亚洲一级毛片 | а√天堂中文在线资源8 | 天天操天天干天天爽 | 亚洲福利一区二区 | 国产精品不卡 | 91久久夜色精品国产九色 | 日本久久99| 一本大道久久a久久精二百 亚洲欧美高清 | 日本精品在线 | 欧美高清dvd | 国产在线激情视频 | 97成人在线 | 国产高清久久 | 波多野结衣亚洲 | 国产精品久久av | 亚洲一一在线 | 麻豆色呦呦 | 精品在线视频一区 | 99精品九九 | 国产第一区二区三区 | 国产精品久久久久久久久久久免费看 | 超碰一区二区三区 | 欧美第8页 | 国产成人免费在线 | 91视频在线| 国产成人综合视频 | 超碰最新网址 | 91视频国产一区 | 欧美日韩a | 99这里只有精品视频 | 一区二区在线看 | 不卡欧美 | 亚洲97视频 | 日本在线黄色 | 亚洲一区久久 | 日韩欧美一区二区三区免费观看 | 国产精品99久久免费观看 | 国内精品一区二区 | 亚洲毛片在线观看 | 天天插天天射天天干 | 亚洲福利二区 | 日韩在线视频观看免费 | 碰碰视频 | 欧美福利电影在线观看 | 国产成人午夜 | 日韩在线中文 | 激情网在线观看 | 日本免费一区二区在线观看 | 日韩国产一区二区三区 | 精品国产成人 | 日韩在线中文字幕 | 人人干人人干 | 免费看一区二区三区 | 亚洲国产精品成人无久久精品 | 欧美亚洲国产一区 | 九九久久精品 | 成人二区| 武道仙尊动漫在线观看 | 毛片毛片毛片 | 日韩视频一区 | 成人网电影| 国产精品视频999 | 欧美视频在线免费 | 久久综合久 | 日韩av一区在线 | 三区在线观看 | 精品国产欧美一区二区三区成人 | 久草在线 | 国产欧美日韩在线观看 | 久久久久久综合 | 欧美人牲 | 久久色视频 | www.久久99 | eeuss国产一区二区三区四区 | 国产成人在线免费观看 | 成人性生交大片免费看中文带字幕 | 青青久久 | 五月天婷婷综合 | av免费在线观看网址 | 欧美日韩综合视频 | 中文字幕精品一区久久久久 | 在线视频国产一区 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产日韩欧美精品一区二区三区 | 亚洲 欧美 另类 综合 偷拍 | 国产精品美女久久久久久免费 | 国产成人午夜高潮毛片 | 成人精品国产 | 国产一区二区av在线 | 亚洲免费a | 男人天堂亚洲天堂 | 日批免费视频 | 国产中文在线 | 精品日韩欧美一区二区在线播放 | 91久久精品日日躁夜夜躁欧美 | 国产精品美女久久久久久久久久久 | 精久久久| 色欧美片视频在线观看 | 免费午夜电影 | 欧美成人高清视频 | www.一区二区 | 欧美aⅴ| 伊人在线| 国产永久免费 | 99精品一区二区 | 男人的天堂亚洲 | 欧美精品成人 | 国产精品一区二区三区av | 蜜桃视频一区二区三区 | 国产乡下妇女做爰视频 | 日韩成人av在线 | 久久久久久久久久久免费视频 | 国产精品精品视频一区二区三区 | 中文字幕亚洲欧美日韩在线不卡 | 久久只有精品 | 亚洲一区二区三区视频免费观看 | www.久草.com | 天堂动漫| 在线免费观看激情视频 | 久久99久久99精品 | 91大神免费观看 | 久久一区 | www.亚洲成人 | va在线观看 | 国产精品无码久久久久 | 97免费在线视频 | jizz国产免费 | 国产成人亚洲综合 | 亚洲一区日韩 | 黄色一级片 | 国产乱码久久久久久一区二区 | 日本不卡免费新一二三区 | 中国一级大毛片 | 亚洲h视频 | 亚洲欧美一级久久精品 | 国产丝袜一区二区三区免费视频 | 欧美二区三区 | 久久国产精品视频 | 国产精品毛片久久久久久 | 欧美日韩电影一区 | 久久久久久久久久久亚洲 | 精品免费一区 | 中文字幕在线观看 | 99视频网 | 日韩欧美一区二区三区四区 | 精品国产黄a∨片高清在线 99热婷婷 | 欧美日韩高清不卡 | 日韩电影a | 亚洲精品国产一区 | 簧片毛片 | 在线观看亚洲一区 | 欧美精品综合 | 久久国产精品99久久久久久老狼 | 日本成人中文字幕 | 亚洲午夜av | 亚洲欧美在线一区 | 亚洲免费视频网站 | 亚洲精品久久久一区二区三区 | www.国产精品.com | 国产伦精品一区二区三区在线 | 精品影院 | 欧美区亚洲区 | 免费黄色欧美 | 国产美女高潮 | 激情久久久久 | 不卡一区 | 狠狠躁夜夜躁人人爽天天高潮 | 久久少妇免费看 | 国产成人精品免高潮在线观看 | 欧美精品在线一区二区三区 | 亚州国产精品视频 | 中文一区二区 | 51ⅴ精品国产91久久久久久 | 久久99精品国产.久久久久 | 中文字幕一区二区三区乱码图片 | 来个毛片| 成人免费毛片高清视频 | 国产精品美女久久久久久久久久久 | 国产一区不卡 | 天天影视综合 | 欧美一区二区黄色片 | 日韩精品一区二区三区中文在线 | 日本久久久久久 | www免费网站在线观看 | 国产一区二区三区欧美 | av一区二区三区四区 | 中文字幕国产 | 国产高清一区 | 国产性一级片 | 亚洲成av人片在线观看 | 国产a一三三四区电影 | 亚洲高清免费视频 | 亚洲一级毛片 | 夜夜操天天干 | 欧洲成人午夜免费大片 | 正在播放国产精品 | 99免费在线观看视频 | 国产精品成人品 | 五月婷婷丁香在线 | 成人精品鲁一区一区二区 | 99久久精品免费看国产免费软件 | 影音先锋中文字幕在线 | av观看免费 | 欧美精品一区二区视频 | 最新日韩免费 | 国产精品免费av | 99爱免费观看| 999国内精品永久免费视频 | 国产精品国产精品国产专区不片 | 国产一区二区在线观看视频 | 亚洲一区欧美一区 | 国产综合精品 | 欧美一级免费 | 中文字幕一页二页 | 欧美久久成人 | 欧美激情性国产欧美无遮挡 | 91中文在线观看 | 久久久国产一区二区 | 日韩精品一区二区三区四区视频 | 久久三级视频 | 国精产品一区二区三区 | av影片在线 | 午夜电影av| 日韩一区二区免费视频 | av片在线观看 | 亚洲欧洲精品一区二区 | 亚洲激情在线播放 | 欧美成人精品一区二区三区 | 精品欧美乱码久久久久久 | 久久一区| 波多野结衣一区二区三区中文字幕 | 性视频网站免费 | 999国产一区二区三区四区 | 中文字幕免费看 | 日韩激情综合网 | 91成人免费看片 | 久国产| 91.com在线观看 | 欧美日韩精品一区二区 | 亚洲天堂第一页 | 久久国产精品久久久久久 | 欧美一极视频 | 久久激情综合 | 黄色片在线观看视频 | 九九色综合 | 午夜一级毛片 | 四色成人av永久网址 | 欧美日韩久久精品 | 欧美国产日韩一区 | 日本一区二区不卡 | 日韩欧美一区二区在线 | 亚洲免费在线视频 | 久草网在线视频 | 色资源| 久草热8精品视频在线观看 欧美全黄 | 国产成人精品综合 | 欧美精品xx | 亚洲第一av | 色婷婷一区二区三区四区 | 亚洲国产网站 | 亚洲 欧美 综合 | 中国妞videos高潮 | 欧美精品第十页 | 亚洲人成电影网 | 亚洲精品一区二区三区蜜桃久 | 男人的天堂视频 | 91久久夜色精品国产九色 | 一级毛片免费观看 | 国产精品久久久久久久久久久久冷 | 亚洲国产成人在线 | 一级毛片免费完整视频 | 国产精品一码二码三码在线 | 日韩视频中文字幕 | 中文字幕免费在线观看 | 成人一区二区在线 | 99re视频在线观看 | 亚洲国产二区 | 成人亚洲 | 国产亚洲成av人片在线观看桃 | 免费一二区 | 国产老头老太作爱视频 | 国产精品久久久久久吹潮 | 中文字幕一区二区不卡 | 99国产精品99久久久久久 | 国产美女永久免费无遮挡 | 欧日韩毛片 | 欧美日韩成人在线视频 | 久久精品亚洲精品国产欧美kt∨ | av免费网站在线观看 | 国产一级片 | av片免费| 91九色在线观看 | 四影虎影www4hu23cmo | 性人久久久 | 免费一区二区三区 | 国产91在线播放精品 | 亚洲精品久久久久久动漫 | 青青草亚洲 | 国产精品久久久久久亚洲调教 | 99久久视频 | 天堂中文网 | 亚洲一区二区三区视频 | 日韩手机在线观看 | 国产中文字幕一区 | 中文字幕在线免费视频 | 欧美夜夜爽| 亚洲国产精品视频 | 成年人在线看 | 91在线视频免费播放 | 一区二区三区视频免费在线观看 | 视频二区 | 欧美a级在线观看 | 久久久av | 欧美成人精品一区 | 免费看国产一级特黄aaaa大片 | 欧美久久视频 | 99成人| 三级免费网站 | 国产精品美女视频免费观看软件 | av三级| 欧美成年黄网站色视频 | 欧美日韩精品一区二区在线播放 | 国产欧美精品一区二区三区四区 | 日韩一区二区三区av | 九色91九色porny永久 | 亚洲欧美国产毛片在线 | 日韩国产欧美精品 | 久日精品 | 成人在线观看网站 | 成人精品久久久 | 亚洲天堂一区 | 黄色av网站在线观看 | 三级色网站 | 久久蜜桃av| 天天干网 | 男女免费在线观看视频 | 在线亚洲免费 | 久久久久久久久国产精品 | 日日噜| 欧美高清一区 | 国产剧情一区二区 | 亚洲欧美在线视频 | 精品久久网站 | 九九热欧美 | 亚洲天堂一区二区 | а√天堂资源中文最新版地址 | 久久久久久久久久久亚洲 | 91视频免费在线 | 国产中文在线 | 99久久电影 | 日韩视频一区二区三区在线观看 | 99在线免费观看 | 色婷婷av一区二区三区软件 | 中文av在线免费观看 | 操操日 | 黄色高清视频 | 亚洲中字在线 | 国产精品99久久久久久宅男 | 激情欧美日韩一区二区 | 欧美日韩久久精品 | 久久久久久网址 | 久在线看 | 大吊一区二区 | 日韩精品av一区二区三区 | 日韩高清中文字幕 | 96自拍视频 | 亚洲一区二区三区在线免费观看 | 国产精品美女久久久久aⅴ国产馆 | 在线精品亚洲欧美日韩国产 | 国产综合精品一区二区三区 |