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

詳解MySQL的鎖機(jī)制

數(shù)據(jù)庫(kù) MySQL
鎖機(jī)制用于管理對(duì)共享資源的并發(fā)訪(fǎng)問(wèn),是對(duì)數(shù)據(jù)庫(kù)的一種保護(hù)機(jī)制,也是數(shù)據(jù)庫(kù)在事務(wù)操作中保證事務(wù)數(shù)據(jù)一致性和完整性的一種機(jī)制。

一、Mysql為什么要加鎖

鎖機(jī)制用于管理對(duì)共享資源的并發(fā)訪(fǎng)問(wèn),是對(duì)數(shù)據(jù)庫(kù)的一種保護(hù)機(jī)制,也是數(shù)據(jù)庫(kù)在事務(wù)操作中保證事務(wù)數(shù)據(jù)一致性和完整性的一種機(jī)制。當(dāng)有多個(gè)用戶(hù)并發(fā)的去存取數(shù)據(jù)時(shí),在數(shù)據(jù)庫(kù)中就可能會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)去操作一行數(shù)據(jù)的情況,如果我們不對(duì)此類(lèi)并發(fā)操作不加以控制的話(huà),就可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù),最終破壞了數(shù)據(jù)的一致性;下面請(qǐng)看一種典型的并發(fā)更新數(shù)據(jù)所產(chǎn)生的數(shù)據(jù)丟失更新問(wèn)題: 

  1. | 事務(wù)A |事務(wù)B  |  
  2. |--|--|  
  3. | begin A |  |  
  4. ||begin B|  
  5. |select salary form tb where id=1(查詢(xún)結(jié)果為1000)||  
  6. ||select salary form tb where id=1(查詢(xún)結(jié)果為1000)|  
  7. |update tb set salary=1100 where id=1||  
  8. ||update tb set salary=1200 where id=1 
  9. |commit A||  
  10. ||commit B| 

異常結(jié)果:表中salary字段id為1員工的工資更新為了1200,但是實(shí)際上針對(duì)該員工的工資進(jìn)行了兩次的修改操作,由于事務(wù)B在事務(wù)A之后提交,所以首先提交的事務(wù)A的更新操作被丟失了,所以我們就需要鎖機(jī)制來(lái)保證這種情況不會(huì)發(fā)生,保證事務(wù)中數(shù)據(jù)的一致性。

二、鎖類(lèi)型

表鎖:開(kāi)銷(xiāo)小,加鎖快;不會(huì)出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突概率高,并發(fā)度最低;

行鎖:開(kāi)銷(xiāo)大,加鎖慢;會(huì)出現(xiàn)死鎖;鎖定粒度小;發(fā)生鎖沖突的概率低,并發(fā)度高;

三、MyISAM存儲(chǔ)引擎:

表級(jí)鎖的鎖模式: 表級(jí)鎖有兩種模式:表共享讀鎖(Table Read Lock)和表獨(dú)占寫(xiě)鎖(Table Write Lock);對(duì)于MyISAM表的讀操作,不會(huì)阻塞其他用戶(hù)對(duì)同一個(gè)表的讀請(qǐng)求,但是會(huì)阻塞對(duì)同一個(gè)表的寫(xiě)請(qǐng)求;對(duì)MyISAM表的寫(xiě)操作,則會(huì)阻塞其他用戶(hù)對(duì)同一個(gè)表的讀和寫(xiě)操作;MyISAM表的讀操作與寫(xiě)操作之間,以及寫(xiě)操作與寫(xiě)操作之間時(shí)串行的。

并發(fā)插入(Concurrent Inserts):MyISAM表的讀和寫(xiě)是串行的,但這是就總體而言的,在一定的條件下,MyISAM表也可以支持查詢(xún)和插入操作的并發(fā)進(jìn)行;MyISAM存儲(chǔ)引擎有一個(gè)系統(tǒng)變量concurrent_insert,專(zhuān)門(mén)用以控制其并發(fā)插入的行為,其值分為可以為0、1/2。當(dāng)concurrent_insert設(shè)置為0時(shí),則不允許并發(fā)插入;當(dāng)concurrent_insert設(shè)置為1時(shí),如果MyISAM表中沒(méi)有空洞(即表的中間沒(méi)有被刪除的行),MyISAM允許在一個(gè)進(jìn)程讀表的同時(shí),另一個(gè)進(jìn)程從表尾插入記錄,這也是MySQL的默認(rèn)設(shè)置;當(dāng)concurrent_insert設(shè)置為2時(shí),無(wú)論MyISAM表中有沒(méi)有空洞,都允許在表尾并發(fā)插入記錄。可以利用MyISAM存儲(chǔ)引擎此并發(fā)插入特性,來(lái)解決應(yīng)用中對(duì)同一個(gè)表查詢(xún)和插入的鎖爭(zhēng)用。例如:將concurrent_insert變量的值設(shè)為2,總是允許并發(fā)插入操作,同時(shí)通過(guò)定期在系統(tǒng)空閑時(shí)段執(zhí)行OPTIMIZE TABLE語(yǔ)句來(lái)整理空間碎片,回收因刪除記錄而產(chǎn)生的中間空洞。

MyISAM引擎的鎖調(diào)度: MyISAM存儲(chǔ)引擎的讀鎖和寫(xiě)鎖是互斥的,讀寫(xiě)操作時(shí)串行的。一個(gè)進(jìn)程請(qǐng)求某個(gè)MyISAM表的讀鎖,同時(shí)另一個(gè)進(jìn)程也請(qǐng)求同一個(gè)表的寫(xiě)鎖,寫(xiě)的優(yōu)先級(jí)比讀的優(yōu)先級(jí)更高,所以寫(xiě)進(jìn)程會(huì)先獲得鎖,即使讀請(qǐng)求先到鎖的等待隊(duì)列中,寫(xiě)請(qǐng)求后到鎖的等待隊(duì)列中,寫(xiě)鎖頁(yè)回插入到讀鎖請(qǐng)求之前執(zhí)行;我們可以通過(guò)一些設(shè)置來(lái)調(diào)節(jié)MyISAM的調(diào)度行為,通過(guò)指定啟動(dòng)參數(shù)low-priority-updates,使MyISAM引擎默認(rèn)給予讀請(qǐng)求以?xún)?yōu)先的權(quán)利;通過(guò)執(zhí)行命令SET LOW_PRIORITY_UPDATE=1,使該連接發(fā)出的更新請(qǐng)求優(yōu)先級(jí)降低;通過(guò)指定INSERT、UPDATE、DELETE語(yǔ)句的LOW_PRIORITY屬性,降低該語(yǔ)句的優(yōu)先級(jí)。另外,MySQL也提供了一種折中的辦法來(lái)調(diào)節(jié)讀寫(xiě)沖突,即給系統(tǒng)參數(shù)max_write_lock_count設(shè)置一個(gè)合適的值,當(dāng)一個(gè)表的讀鎖達(dá)到這個(gè)值后,MySQL就暫時(shí)將寫(xiě)請(qǐng)求的優(yōu)先級(jí)降低,給讀進(jìn)程一定的獲得鎖的機(jī)會(huì)。

四、InnoDB存儲(chǔ)引擎:

 

樂(lè)觀(guān)鎖與悲觀(guān)鎖是兩種并發(fā)控制的思想,可用于解決丟失更新的問(wèn)題:樂(lè)觀(guān)鎖會(huì)"樂(lè)觀(guān)的"假定大概率不會(huì)發(fā)生并發(fā)更新沖突,訪(fǎng)問(wèn)、處理數(shù)據(jù)過(guò)程中不加鎖,只在更新數(shù)據(jù)時(shí)再根據(jù)版本號(hào)或時(shí)間戳判斷是否有沖突,有則處理,無(wú)則提交事務(wù);悲觀(guān)鎖會(huì)"悲觀(guān)的"假定大概率會(huì)發(fā)生并發(fā)更新沖突,訪(fǎng)問(wèn)、處理數(shù)據(jù)前就加排他鎖,在整個(gè)數(shù)據(jù)處理過(guò)程中鎖定數(shù)據(jù),事務(wù)提交或回滾后才釋放鎖;

InnoDB存儲(chǔ)引擎標(biāo)準(zhǔn)的行級(jí)鎖:共享鎖(S Lock):讀鎖,允許事務(wù)讀一行數(shù)據(jù);    排他鎖(X Lock):寫(xiě)鎖,允許事務(wù)刪除或更新一行數(shù)據(jù);  

                

  1. ## 事務(wù)1  
  2. MariaDB [test]> show variables  like "autocommit";  
  3. +---------------+-------+  
  4. | Variable_name | Value |  
  5. +---------------+-------+  
  6. | autocommit    | OFF   |  
  7. +---------------+-------+  
  8. 1 row in set (0.00 sec)  
  9. MariaDB [test]> begin;  
  10. Query OK, 0 rows affected (0.00 sec)  
  11. MariaDB [test]> update tb1  set   name="aaa"  where id=1 
  12. Query OK, 1 row affected (0.00 sec)  
  13. Rows matched: 1  Changed: 1  Warnings: 0  
  14. MariaDB [test]> commit;  
  15. Query OK, 0 rows affected (0.00 sec)  
  16. ## 事務(wù)2:  
  17. MariaDB [test]> show variables like "autocommit";  
  18. +---------------+-------+  
  19. | Variable_name | Value |  
  20. +---------------+-------+  
  21. | autocommit    | OFF   |  
  22. +---------------+-------+  
  23. 1 row in set (0.00 sec)  
  24. MariaDB [test]> begin;  
  25. Query OK, 0 rows affected (0.00 sec)  
  26. MariaDB [test]> update tb1  set  name="haha"  where id=1 
  27. Query OK, 1 row affected (12.89 sec)  
  28. Rows matched: 1  Changed: 1  Warnings: 0  
  29. MariaDB [test]> rollback;  
  30. Query OK, 0 rows affected (0.00 sec)  
  31. MariaDB [test]> select *   from     tb1 where id=1 
  32. +----+------+  
  33. | id | name |  
  34. +----+------+  
  35. |  1 | aaa  |  
  36. +----+------+  
  37. 1 row in set (0.00 sec) 

InnoDB行鎖的實(shí)現(xiàn)方式:   

InnoDB行鎖是通過(guò)給索引上的索引項(xiàng)加鎖的,InnoDB這種行鎖實(shí)現(xiàn)特點(diǎn)意味著:只有通過(guò)索引條件檢索數(shù)據(jù),InnoDB才使用行級(jí)鎖,否則InnoDB將使用表鎖。在不通過(guò)索引條件查詢(xún)的時(shí)候,InnoDB確實(shí)是使用表鎖而不是行鎖;由于MySQL的行鎖是針對(duì)索引加的鎖,不是針對(duì)記錄加的鎖,所以雖然是訪(fǎng)問(wèn)不同行的記錄,但是如果是使用相同的索引鍵,是會(huì)出現(xiàn)鎖沖突的;當(dāng)表有多個(gè)索引的時(shí)候,不同的事務(wù)可以使用不同的索引鎖定不同的行,另外,無(wú)論是使用主鍵索引、唯一索引或普通索引,InnoDB都會(huì)使用行鎖來(lái)對(duì)數(shù)據(jù)加鎖;即便是在條件中使用了索引字段,但是否使用索引來(lái)檢索數(shù)據(jù)是由MySQL通過(guò)判斷不同執(zhí)行計(jì)劃的代價(jià)來(lái)決定的,如果MySQL認(rèn)為全表掃描效率更高,比如對(duì)一些很小的表,它就不會(huì)使用索引,這種情況下InnoDB將使用表鎖而不是行鎖。

意向鎖: 意向共享鎖(IS Lock):事務(wù)想要獲得一張表中某幾行的共享鎖; 意向排他鎖(IX Lock):事務(wù)想要獲得一張表中某幾行的排它鎖; 查看InnoDB存儲(chǔ)引擎的鎖信息: 

  1. MariaDB [test]> show  engine innodb status\G;  
  1. MariaDB [test]> show  engine innodb status\G;  
  1. MariaDB [test]> select * from information_schema.innodb_trx\G;  
  2. *************************** 1. row ***************************  
  3.                     trx_id: 1266629  
  4.                  trx_state: RUNNING  
  5.                trx_started: 2020-01-08 16:24:50  
  6.      trx_requested_lock_id: NULL  
  7.           trx_wait_started: NULL  
  8.                 trx_weight: 0  
  9.        trx_mysql_thread_id: 36696  
  10.                  trx_query: select * from information_schema.innodb_trx  
  11.        trx_operation_state: NULL  
  12.          trx_tables_in_use: 0  
  13.          trx_tables_locked: 0  
  14.           trx_lock_structs: 0  
  15.      trx_lock_memory_bytes: 376  
  16.            trx_rows_locked: 0  
  17.          trx_rows_modified: 0  
  18.    trx_concurrency_tickets: 0  
  19.        trx_isolation_level: REPEATABLE READ  
  20.          trx_unique_checks: 1  
  21.     trx_foreign_key_checks: 1  
  22. trx_last_foreign_key_error: NULL  
  23.  trx_adaptive_hash_latched: 0  
  24.  trx_adaptive_hash_timeout: 10000  
  25. 1 row in set (0.00 sec) 

 

  1. MariaDB [test]> select * from information_schema.innodb_locks\G;  
  2. Empty set (0.00 sec) 

 

  1. MariaDB [test]> select * from information_schema.innodb_lock_waits\G;  
  2. Empty set (0.00 sec) 

一致性的非鎖定讀(Consistent Nonlocking Read):   是指InnoDB存儲(chǔ)引擎通過(guò)很多個(gè)版本控制(multi versioning)的方式來(lái)讀取當(dāng)前執(zhí)行時(shí)間數(shù)據(jù)庫(kù)中的行的數(shù)據(jù)。如果讀取的行正在執(zhí)行DELETE或UPDATE操作,這時(shí)讀取操作不會(huì)因此去等待行上的鎖的釋放;相反,InnoDB存儲(chǔ)引擎會(huì)去讀取行的一個(gè)快照數(shù)據(jù),快照數(shù)據(jù)是指該行的之前的版本的數(shù)據(jù),該實(shí)現(xiàn)是通過(guò)undo段來(lái)完成的。而undo用來(lái)事務(wù)中國(guó)回滾數(shù)據(jù),因此快照數(shù)據(jù)本身是沒(méi)有額外的開(kāi)銷(xiāo)。此外,讀取快照數(shù)據(jù)是不需要上鎖的,因?yàn)闆](méi)有事務(wù)需要對(duì)歷史數(shù)據(jù)進(jìn)行修改操作。然而在不同的事務(wù)隔離級(jí)別下,對(duì)于快照數(shù)據(jù),非一致性讀總是讀取被鎖定行的最新一份快照數(shù)據(jù),而在REPEATABLE READ事務(wù)隔離級(jí)別下,對(duì)于快照數(shù)據(jù),非一致性讀總是讀取事務(wù)開(kāi)始時(shí)的行數(shù)據(jù)版本。

一致性的鎖定讀: 顯示地對(duì)數(shù)據(jù)庫(kù)讀取操作進(jìn)行加鎖以保證數(shù)據(jù)邏輯的一致性;  SELECT ... FOR UPDATE:對(duì)讀取的行記錄加一個(gè)X鎖,其他事務(wù)不能對(duì)已鎖定的行加任何的鎖;SELECT ... LOCK IN SHARE MODE:對(duì)讀取的行記錄加一個(gè)S鎖,其他事務(wù)可以向被鎖定的行加S鎖,但是如果加X(jué)鎖,則會(huì)被阻塞; 

  1. ## 事務(wù)1  
  2. MariaDB [test]> begin;  
  3. Query OK, 0 rows affected (0.00 sec)  
  4. MariaDB [test]> select  * from   tb1 where id=1 for update;  
  5. +----+------+  
  6. | id | name |  
  7. +----+------+  
  8. |  1 | aaa  |  
  9. +----+------+  
  10. 1 row in set (0.00 sec)  
  11. MariaDB [test]> rollback;  
  12. Query OK, 0 rows affected (0.00 sec)  
  13. ## 事務(wù)2  
  14. MariaDB [test]> begin;  
  15. Query OK, 0 rows affected (0.00 sec)  
  16. MariaDB [test]> select * from tb1 where id=1 lock in share mode;  
  17. +----+------+  
  18. | id | name |  
  19. +----+------+  
  20. |  1 | aaa  |  
  21. +----+------+  
  22. 1 row in set (11.55 sec)  
  23. MariaDB [test]> rollback;  
  24. Query OK, 0 rows affected (0.00 sec) 

鎖算法:

五、死鎖

死鎖是指兩個(gè)或兩個(gè)以上的事務(wù)在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象;MyISAM表鎖是Deadlock Free的,這時(shí)因?yàn)镸yISAM總是一次獲得所需的全部鎖,要么全部滿(mǎn)足,要么等待,因此不會(huì)出現(xiàn)死鎖。但在InnoDB中,除單個(gè)SQL組成的事務(wù)外,鎖是逐步獲得的,這就決定了在InnoDB中發(fā)生死鎖是可能的。發(fā)生死鎖后,InnoDB一般都能自動(dòng)檢測(cè)到,并使一個(gè)事務(wù)釋放鎖并回退,另外一個(gè)事務(wù)獲得鎖,繼續(xù)完成事務(wù)。但在涉及外部鎖,或涉及表鎖的情況下,InnoDB并不能完全自動(dòng)檢測(cè)到死鎖,這需要通過(guò)設(shè)置鎖等待超時(shí)參數(shù)innodb_lock_wait_timeout來(lái)解決,需要說(shuō)明的是,這個(gè)參數(shù)并不是用來(lái)解決死鎖問(wèn)題,在并發(fā)訪(fǎng)問(wèn)比較高的情況下,如果大量事務(wù)因無(wú)法立即獲得所需的鎖而掛起,會(huì)占用大量計(jì)算機(jī)資源,造成嚴(yán)重性能問(wèn)題,甚至拖垮數(shù)據(jù)庫(kù)。我們通過(guò)設(shè)置合適的鎖等待超時(shí)閾值,可以避免這種情況的發(fā)生。 

  1. ## 事務(wù)1  
  2. MariaDB [test]> begin;  
  3. Query OK, 0 rows affected (0.00 sec)  
  4. MariaDB [test]> update tb1  set   name="jyy"  where id=1 
  5. Query OK, 1 row affected (0.00 sec)  
  6. Rows matched: 1  Changed: 1  Warnings: 0  
  7. MariaDB [test]> update tb1  set   name="xixi"  where id=2 
  8. Query OK, 1 row affected (8.25 sec)  
  9. Rows matched: 1  Changed: 1  Warnings: 0  
  10. MariaDB [test]> commit;  
  11. Query OK, 0 rows affected (0.00 sec)  
  12. MariaDB [test]> select * from    tb1  where id in(1,2);  
  13. +----+------+  
  14. | id | name |  
  15. +----+------+  
  16. |  1 | jyy  |  
  17. |  2 | xixi |  
  18. +----+------+  
  19. 2 rows in set (0.00 sec)  
  20. ## 事務(wù)2  
  21. MariaDB [test]> begin;  
  22. Query OK, 0 rows affected (0.00 sec)  
  23. MariaDB [test]> update tb1  set  name="haha"  where id=2 
  24. Query OK, 1 row affected (0.00 sec)  
  25. Rows matched: 1  Changed: 1  Warnings: 0  
  26. MariaDB [test]> update tb1  set  name="heihei"  where id=1 
  27. ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction 

避免死鎖的常用方法:   

1)在應(yīng)用中,如果不同的程序會(huì)并發(fā)存取多個(gè)表,應(yīng)該盡量約定以相同的順序來(lái)訪(fǎng)問(wèn)表,這樣可以大大降低產(chǎn)生死鎖的機(jī)會(huì)。在上面的例子中,由于兩個(gè)session訪(fǎng)問(wèn)表的順序不同,發(fā)生死鎖的機(jī)會(huì)就非常高,但是如果以相同的順序來(lái)訪(fǎng)問(wèn),死鎖就可以避免;

2)在程序以批量方式處理數(shù)據(jù)的時(shí)候,如果事先對(duì)數(shù)據(jù)排序,保證每個(gè)線(xiàn)程按固定的順序來(lái)處理記錄,也可以大大降低出現(xiàn)死鎖的可能; 

3)在事務(wù)中,如果要更新記錄,應(yīng)該直接申請(qǐng)足夠級(jí)別的鎖,即排他鎖,而不應(yīng)該先申請(qǐng)共享鎖,從而造成鎖沖突,甚至死鎖;  

4)在REPEATABLE-READ隔離級(jí)別下,如果兩個(gè)線(xiàn)程同時(shí)對(duì)相同條件記錄用SELECT...FOR UPDATE加排他鎖,在沒(méi)有符合該條件記錄情況下,兩個(gè)線(xiàn)程都會(huì)加鎖成功。程序發(fā)現(xiàn)記錄尚不存在,就試圖插入一條記錄,如果兩個(gè)線(xiàn)程都這么做,就會(huì)出現(xiàn)死鎖,這種情況下,將隔離級(jí)別READ COMMITTED就可以避免問(wèn)題;  

5)當(dāng)隔離級(jí)別為READ COMMITTED時(shí),如果兩個(gè)線(xiàn)程都先執(zhí)行SELECT...FOR UPDATE,判斷是否存在符合條件的記錄,如果沒(méi)有,就插入記錄。此時(shí),只有一個(gè)線(xiàn)程能插入成功,另外一個(gè)線(xiàn)程就會(huì)出現(xiàn)鎖等待,當(dāng)?shù)谝粋€(gè)線(xiàn)程提交后,第二個(gè)線(xiàn)程會(huì)因?yàn)橹麈I沖突出錯(cuò),但雖然這個(gè)線(xiàn)程出錯(cuò)了,卻會(huì)獲得一個(gè)排他鎖,這時(shí)如果有第三個(gè)線(xiàn)程又來(lái)申請(qǐng)排它鎖,也會(huì)出現(xiàn)死鎖。 

6)如果出現(xiàn)了死鎖,可以使用上面的檢查鎖信息的SQL命令來(lái)確定最后一個(gè)死鎖產(chǎn)生的原因。返回結(jié)果中國(guó)包括死鎖相關(guān)的事務(wù)的詳細(xì)信息,如引發(fā)死鎖的SQL語(yǔ)句,事務(wù)已經(jīng)獲得的鎖,正在等待什么鎖,以及被回滾的事務(wù)等。據(jù)此可以分析死鎖產(chǎn)生的原因和改進(jìn)措施。 

 

責(zé)任編輯:龐桂玉 來(lái)源: 數(shù)據(jù)庫(kù)開(kāi)發(fā)
相關(guān)推薦

2024-12-18 07:40:50

MySQL機(jī)制

2024-12-16 00:52:26

MySQL數(shù)據(jù)庫(kù)并發(fā)

2019-10-17 08:51:00

Java悲觀(guān)鎖Monitor

2021-09-06 18:55:57

MySQLCheckpoint機(jī)制

2022-05-11 08:53:13

MySQL鎖機(jī)制

2010-11-22 14:18:32

MySQL鎖機(jī)制

2023-11-09 09:26:22

MySQL存儲(chǔ)引擎

2010-06-07 13:30:15

2023-10-13 13:30:00

MySQL鎖機(jī)制

2025-10-31 02:00:00

2011-03-30 13:44:45

MySQL數(shù)據(jù)庫(kù)鎖機(jī)制

2023-10-31 10:51:56

MySQLMVCC并發(fā)性

2022-03-11 09:12:06

MySQLMDL

2020-10-20 13:50:47

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

2021-04-01 10:51:55

MySQL鎖機(jī)制數(shù)據(jù)庫(kù)

2023-11-29 07:40:12

分布式

2022-03-29 10:52:08

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

2025-06-13 10:00:00

JavaJUC 包

2009-09-23 16:30:01

Hibernate f

2011-05-26 15:23:34

JavaReflection
點(diǎn)贊
收藏

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

av在线免费播放| 久久国产精品二区| 日韩黄色碟片| 亚洲精品国产a久久久久久| 999在线观看免费大全电视剧| 久久午夜无码鲁丝片| 亚洲精品蜜桃乱晃| 欧美视频一区在线观看| 国产美女作爱全过程免费视频| 亚州视频一区二区三区| 日本成人在线电影网| 欧美成人精品h版在线观看| 免费黄色三级网站| 99久久99九九99九九九| 精品久久久视频| 国产精品无码乱伦| 欧美日韩免费做爰大片| 日韩黄色片在线观看| 欧美黑人视频一区| 国产三级精品三级观看| 日韩黄色免费观看| 成人性生交大片免费网站| 午夜精品久久久久久久蜜桃| 精品一区二区三区中文字幕| 狠狠色狠狠色综合日日五| av动漫免费观看| 欧美捆绑视频| 高清不卡一区二区在线| 国产精品国产福利国产秒拍| 日本一区二区网站| 小处雏高清一区二区三区| 亚洲免费伊人电影在线观看av| aaaaaaaa毛片| 黄色日韩网站| 色欧美片视频在线观看 | 亚洲精品合集| 欧美mv日韩mv亚洲| 中文字幕第22页| 亚洲日本在线观看视频| 精品国产成人av| 人妻互换免费中文字幕| a级网站在线播放| 国产精品乱人伦| 免费成人深夜夜行视频| 粉嫩小泬无遮挡久久久久久| 国内外成人在线| 国产精品视频久久久久| 91精品国产高清一区二区三密臀| 亚洲伦伦在线| 欧美大荫蒂xxx| 国产大学生自拍| 欧美一区二区三区久久精品茉莉花| 一级做a爰片久久毛片美女图片| 在线免费观看a级片| 99精品中文字幕在线不卡 | 欧美极品在线观看| 亚洲黄页视频免费观看| 催眠调教后宫乱淫校园| 大陆精大陆国产国语精品| 精品国产第一区二区三区观看体验 | 18性欧美xxxⅹ性满足| 国产精品suv一区二区69| 亚洲午夜电影| 韩国v欧美v日本v亚洲| 日本一级淫片免费放| 一区二区国产在线观看| 456国产精品| 国产一级免费视频| 日本欧美大码aⅴ在线播放| 国产精品久久久久久久久久久久| 精品久久久久久久久久久国产字幕| 久久激情久久| 国产精品一二三在线| 在线观看免费观看在线| 精品一区二区免费视频| av一本久道久久波多野结衣| 欧美一区二区黄片| 久久久亚洲精品石原莉奈| 日韩精品国内| 黄网站app在线观看| 亚洲一区二区美女| 国产免费一区二区三区视频| 日韩精选视频| 欧美日韩国产另类一区| 性一交一黄一片| 精品深夜福利视频| 国产亚洲a∨片在线观看| 午夜成人亚洲理伦片在线观看| 亚洲经典一区| 国内免费精品永久在线视频| 九九九国产视频| 天堂久久久久va久久久久| 91精品国产综合久久香蕉| 亚洲第一精品网站| 久久久久综合网| 日韩不卡一二区| 九色porny自拍视频在线播放| 色噜噜狠狠色综合欧洲selulu| 中文字幕国产免费| 久久悠悠精品综合网| 国产午夜精品视频免费不卡69堂| 91在线播放观看| 老司机一区二区三区| 91久久精品一区| 亚洲欧美综合在线观看| 亚洲丝袜精品丝袜在线| 日韩欧美国产免费| 久久久久久久性潮| 亚洲激情视频网站| 日韩精品一区二区亚洲av性色| 欧美久久影院| 国产噜噜噜噜久久久久久久久| 亚洲国产精彩视频| 国产精品电影院| 91猫先生在线| 人人爱人人干婷婷丁香亚洲| 亚洲天堂影视av| 日本亚洲色大成网站www久久| 六月丁香婷婷色狠狠久久| 国产在线欧美日韩| 18videosex性欧美麻豆| 欧美亚洲图片小说| 国产乱了高清露脸对白| 午夜久久一区| 国产精品中文久久久久久久| 深夜福利在线观看直播| 亚洲综合一二三区| 日韩高清在线一区二区| 精品久久电影| 欧美孕妇毛茸茸xxxx| 亚洲精品18p| 老司机凹凸av亚洲导航| 麻豆成全视频免费观看在线看| jizz日韩| 欧美电影在线观看一区| 日韩欧美国产高清| 精品手机在线视频| 丝袜亚洲精品中文字幕一区| 国产综合av一区二区三区| 中文字幕资源网在线观看| 欧美日韩国产一级| 国产精品久久久视频| 六月丁香综合| 欧美精品一区二区三区在线看午夜| 四虎影院观看视频在线观看 | 中文字幕在线日本| 久久一区二区三区四区| 欧美国产亚洲一区| 女仆av观看一区| 97国产精品久久| 国产精品国模大尺度私拍| 欧美一级片免费| 亚洲成人动漫在线观看| 白嫩情侣偷拍呻吟刺激| 在线日韩av| 风间由美一区二区三区| 岛国毛片av在线| 亚洲电影免费观看高清完整版在线观看 | 无码一区二区三区在线观看| xfplay精品久久| 一本大道熟女人妻中文字幕在线| 狠狠一区二区三区| 91国语精品自产拍在线观看性色| 人人妻人人澡人人爽人人欧美一区| 一级日本不卡的影视| 少妇伦子伦精品无吗| 亚洲成人在线| 免费成人看片网址| 日韩制服诱惑| 色青青草原桃花久久综合| 国产精品视频在线观看免费| 亚洲欧美日韩国产另类专区 | 国产一级片免费视频| 中文字幕av一区二区三区高| www.色就是色.com| 亚洲小说欧美另类社区| 激情小说综合区| 成人在线爆射| 久久精品亚洲热| 蜜桃av中文字幕| 日韩欧亚中文在线| 182在线观看视频| 国产大片一区二区| 成人免费观看毛片| 99久久亚洲精品蜜臀| 高清不卡一区二区三区| 第84页国产精品| 久久久精品在线观看| 亚洲精品人妻无码| 在线观看91视频| 中文字幕影音先锋| 久久亚洲精品国产精品紫薇| 久久久久久久高清| 野花国产精品入口| 亚洲一一在线| 另类春色校园亚洲| 国产精品视频精品视频| 成人影院在线播放| 最新91在线视频| av在线无限看| 91综合国产| 欧美高清videos高潮hd| 国产在线视频福利| 日韩欧美一级片| 国产成人a v| 888久久久| 4438全国亚洲精品在线观看视频| h视频在线免费| 精品美女在线播放| 中文字幕在线观看视频一区| 亚洲成人av一区二区三区| 成年人视频软件| 97成人超碰视| 性一交一黄一片| 麻豆91在线看| 三级4级全黄60分钟| 欧美私人啪啪vps| 一区二区不卡视频| 伊甸园亚洲一区| 超碰97在线人人| 在线高清欧美| 国产精品美乳一区二区免费| 国产免费拔擦拔擦8x高清在线人| 久久夜精品香蕉| 日本三级视频在线播放| 亚洲深夜福利网站| 日韩在线免费播放| 亚洲高清在线观看| www日本高清视频| 91精品国产麻豆| 亚洲一卡二卡在线| 精品视频一区二区三区免费| 特级西西444www大精品视频免费看| 亚洲一卡二卡三卡四卡无卡久久 | 国产精品成人免费在线| 欧美做受xxxxxⅹ性视频| zzijzzij亚洲日本少妇熟睡| 国产乱国产乱老熟300部视频| 国内一区二区视频| 极品粉嫩美女露脸啪啪| 精品一区二区免费看| 欧美黄色性生活| 男人的j进女人的j一区| 日本va中文字幕| 日韩成人一级大片| 亚洲视频在线a| 日本亚洲天堂网| 热久久精品免费视频| 久久久天天操| 国产一区二区视频免费在线观看| 性xx色xx综合久久久xx| 国产xxxxx在线观看| 新67194成人永久网站| 日本成人在线免费视频| 日韩成人一区二区| 国内国产精品天干天干| 精品一区二区三区蜜桃| 日韩精品xxx| 成人三级在线视频| 噜噜噜在线视频| 久久久久成人黄色影片| 日韩免费成人av| 中文字幕一区av| 欧美激情一区二区视频| 亚洲国产一区二区a毛片| 日本一区二区网站| 色偷偷一区二区三区| 中文字幕第99页| 日韩一区二区在线播放| 欧美一级特黄aaaaaa大片在线观看| 亚洲精品久久久久国产| 九九热视频在线观看| 色黄久久久久久| 欧美亚洲天堂| 日韩av电影在线网| 男女啪啪999亚洲精品| 亚洲自拍偷拍色图| 国内精品麻豆美女在线播放视频| 麻豆亚洲一区| 97精品视频在线看| 隔壁人妻偷人bd中字| 国产乱码精品| 日本美女视频一区| 国产.欧美.日韩| 蜜桃无码一区二区三区| 中文字幕亚洲精品在线观看| 久久精品国产亚洲av无码娇色 | 一级片视频免费| 精品国产一区二区三区忘忧草 | 欧美激情中文不卡| av成人免费网站| 欧美午夜电影在线| 国产精品女人久久久| 精品亚洲一区二区三区在线播放 | 欧美日韩国产成人| 亚洲成av在线| 国产高清在线一区二区| 精品国产一区二区三区久久久蜜臀| 喜爱夜蒲2在线| 视频在线观看一区二区三区| 熟妇无码乱子成人精品| 久久网这里都是精品| 欧美做爰爽爽爽爽爽爽| 日韩欧美在线第一页| www.天堂在线| 中文字幕亚洲欧美日韩2019| sm久久捆绑调教精品一区| 国产免费成人av| 秋霞在线一区| 一级性生活视频| 美女mm1313爽爽久久久蜜臀| 人妻无码中文久久久久专区| 中文字幕一区二区三区在线不卡| 亚洲天堂av片| 亚洲成人激情在线| 成人欧美在线| 国产女精品视频网站免费| 亚洲精品播放| 日韩小视频在线播放| 国产一区二区三区不卡在线观看| 免费看裸体网站| 欧美丝袜美女中出在线| 天天操天天操天天操| 欧美精品午夜视频| 伊人久久精品| 一区二区三区精品国产| 日本系列欧美系列| 国产精品无码久久久久一区二区| 亚洲大片免费看| 亚洲国产精品久久人人爱潘金莲 | 在线观看美女av| 欧美体内she精视频| 久久久久久久影视| 欧美在线视频免费播放| 日韩精品久久久久久久软件91| 一本久道久久综合狠狠爱亚洲精品| 另类亚洲自拍| 成人精品999| 色哟哟一区二区| 青春草在线观看| 欧美怡春院一区二区三区| 丝袜久久网站| 国产特级淫片高清视频| 波多野结衣一区二区三区| 妺妺窝人体色www婷婷| 日韩欧美一二三区| 日本片在线看| 国产精品乱码视频| 在线欧美亚洲| theav精尽人亡av| 色婷婷综合在线| 大胆av不用播放器在线播放| 国产精品电影观看| 不卡一区2区| 免费精品99久久国产综合精品应用| 国产精品美女久久久久久久久久久| 中文字幕欧美人妻精品| 最新的欧美黄色| 精品国产伦一区二区三区观看说明 | 隣の若妻さん波多野结衣| 免费不卡在线观看av| 亚洲精品一区在线| 国产午夜福利100集发布| 久久综合九色综合97婷婷| 9i精品福利一区二区三区| 宅男66日本亚洲欧美视频| 国产成年精品| 日本中文字幕在线视频观看| 99久免费精品视频在线观看| 少妇高潮av久久久久久| 视频直播国产精品| 亚洲日本va午夜在线电影| 欧美日韩性生活片| 日本一区二区综合亚洲| 国产免费不卡av| 久久久久久18| 国产成人3p视频免费观看| 中文字幕中文在线| 亚洲风情在线资源站| 久久米奇亚洲| 51成人做爰www免费看网站| 一区二区黄色| 国产调教在线观看| 日韩欧美成人午夜| 国产免费不卡| 四虎4hu永久免费入口| 99久久精品一区二区| 伊人网中文字幕| 国内外成人免费激情在线视频| 日韩成人激情| 国产一级免费片| 欧美日韩一区二区三区高清| 金瓶狂野欧美性猛交xxxx| 视频在线观看成人| 成人福利电影精品一区二区在线观看| 日韩在线 中文字幕| 美日韩精品视频免费看| 精品视频黄色| 国产一级黄色录像| 欧美日韩在线观看一区二区 |