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

數據庫兩大必備神器:索引和鎖底層原理是什么!

數據庫 MySQL
本文主要介紹了數據庫中的兩個比較重要的知識點:索引和鎖。他倆可以說息息相關的,鎖會涉及到很多關于索引的知識。

 一、索引

在之前,我對索引有以下的認知:

  •  索引可以加快數據庫的檢索速度;
  •  表經常進行INSERT/UPDATE/DELETE操作就不要建立索引了,換言之:索引會降低插入、刪除、修改等維護任務的速度;
  •  索引需要占物理和數據空間;
  •  了解過索引的最左匹配原則;
  •  知道索引的分類:聚集索引和非聚集索引;
  •  Mysql支持Hash索引和B+樹索引兩種;

看起來好像啥都知道,但面試讓你說的時候可能就GG了:

  •  使用索引為什么可以加快數據庫的檢索速度啊?
  •  為什么說索引會降低插入、刪除、修改等維護任務的速度;
  •  索引的最左匹配原則指的是什么?
  •  Hash索引和B+樹索引有什么區別?主流的使用哪一個比較多?InnoDB存儲都支持嗎?
  •  聚集索引和非聚集索引有什么區別?
  •  .......

1、聊聊索引的基礎知識

首先Mysql的基本存儲結構是頁(記錄都存在頁里邊):

  •  各個數據頁可以組成一個雙向鏈表;
  •  而每個數據頁中的記錄又可以組成一個單向鏈表;
  •  每個數據頁都會為存儲在它里邊兒的記錄生成一個頁目錄,在通過主鍵查找某條記錄的時候可以在頁目錄中使用二分法快速定位到對應的槽,然后再遍歷該槽對應分組中的記錄即可快速找到指定的記錄;
  •  以其他列(非主鍵)作為搜索條件:只能從最小記錄開始依次遍歷單鏈表中的每條記錄。

所以說,如果我們寫select * from user where username = 'Java3y'這樣沒有進行任何優化的sql語句,默認會這樣做:

  •  定位到記錄所在的頁
  •  需要遍歷雙向鏈表,找到所在的頁
  •  從所在的頁內中查找相應的記錄
  •  由于不是根據主鍵查詢,只能遍歷所在頁的單鏈表了

很明顯,在數據量很大的情況下這樣查找會很慢!

2、索引提高檢索速度

索引做了些什么可以讓我們查詢加快速度呢?

其實就是將無序的數據變成有序(相對):

要找到id為8的記錄簡要步驟:

很明顯的是:沒有用索引我們是需要遍歷雙向鏈表來定位對應的頁,現在通過"目錄"就可以很快地定位到對應的頁上了!

其實底層結構就是B+樹,B+樹作為樹的一種實現,能夠讓我們很快地查找出對應的記錄。

3、索引降低增刪改的速度

如果一棵普通的樹在極端的情況下,是能退化成鏈表的(樹的優點就不復存在了)

B+樹是平衡樹的一種,是不會退化成鏈表的,樹的高度都是相對比較低的(基本符合矮矮胖胖(均衡)的結構)【這樣一來我們檢索的時間復雜度就是O(logn)】!從上一節的圖我們也可以看見,建立索引實際上就是建立一顆B+樹。

  •  B+樹是一顆平衡樹,如果我們對這顆樹增刪改的話,那肯定會破壞它的原有結構;
  •  要維持平衡樹,就必須做額外的工作。正因為這些額外的工作開銷,導致索引會降低增刪改的速度;

4、哈希索引

除了B+樹之外,還有一種常見的是哈希索引。

哈希索引就是采用一定的哈希算法,把鍵值換算成新的哈希值,檢索時不需要類似B+樹那樣從根節點到葉子節點逐級查找,只需一次哈希算法即可立刻定位到相應的位置,速度非常快。

  •  本質上就是把鍵值換算成新的哈希值,根據這個哈希值來定位。

看起來哈希索引很牛逼啊,但其實哈希索引有好幾個局限(根據他本質的原理可得):

  •  哈希索引也沒辦法利用索引完成排序;
  •  不支持最左匹配原則;
  •  在有大量重復鍵值情況下,哈希索引的效率也是極低的---->哈希碰撞問題;
  •  不支持范圍查詢;

5、InnoDB支持哈希索引嗎?

主流的還是使用B+樹索引比較多,對于哈希索引,InnoDB是自適應哈希索引的(hash索引的創建由InnoDB存儲引擎引擎自動優化創建,我們干預不了)!

6、聚集和非聚集索引

簡單概括:

  •  聚集索引就是以主鍵創建的索引;
  •  非聚集索引就是以非主鍵創建的索引;

區別:

  •  聚集索引在葉子節點存儲的是表中的數據;
  •  非聚集索引在葉子節點存儲的是主鍵和索引列;
  •  使用非聚集索引查詢出數據時,拿到葉子上的主鍵再去查到想要查找的數據。(拿到主鍵再查找這個過程叫做回表)

非聚集索引也叫做二級索引,不用糾結那么多名詞,將其等價就行了~

非聚集索引在建立的時候也未必是單列的,可以多個列來創建索引。

  •  此時就涉及到了哪個列會走索引,哪個列不走索引的問題了(最左匹配原則-->后面有說)
  •  創建多個單列(非聚集)索引的時候,會生成多個索引樹(所以過多創建索引會占用磁盤空間)

[[246173]]

在創建多列索引中也涉及到了一種特殊的索引-->覆蓋索引

  •  我們前面知道了,如果不是聚集索引,葉子節點存儲的是主鍵+列值
  •  最終還是要“回表”,也就是要通過主鍵再查找一次。這樣就會比較慢
  •  覆蓋索引就是把要查詢出的列和索引是對應的,不做回表操作!

比如說:

  •  現在我創建了索引(username,age),在查詢數據的時候:select username , age from user where username = 'Java3y' and age = 20。
  •  很明顯地知道,我們上邊的查詢是走索引的,并且,要查詢出的列在葉子節點都存在!所以,就不用回表了~

  •  所以,能使用覆蓋索引就盡量使用吧~

7、索引最左匹配原則

最左匹配原則:

  •  索引可以簡單如一個列(a),也可以復雜如多個列(a, b, c, d),即聯合索引。
  •  如果是聯合索引,那么key也由多個列組成,同時,索引只能用于查找key是否存在(相等),遇到范圍查詢(>、<、between、like左匹配)等就不能進一步匹配了,后續退化為線性查找。
  •  因此,列的排列順序決定了可***索引的列數。

例子:

  •  如有索引(a, b, c, d),查詢條件a = 1 and b = 2 and c > 3 and d = 4,則會在每個節點依次***a、b、c,無法***d。(很簡單:索引***只能是相等的情況,不能是范圍匹配)

8、=、in自動優化順序

不需要考慮=、in等的順序,mysql會自動優化這些條件的順序,以匹配盡可能多的索引列。

例子:

  •  如有索引(a, b, c, d),查詢條件c > 3 and b = 2 and a = 1 and d < 4與a = 1 and c > 3 and b = 2 and d < 4等順序都是可以的,MySQL會自動優化為a = 1 and b = 2 and c > 3 and d < 4,依次***a、b、c。

9、索引總結

索引在數據庫中是一個非常重要的知識點!上面談的其實就是索引最基本的東西,要創建出好的索引要顧及到很多的方面:

    1,最左前綴匹配原則。這是非常重要、非常重要、非常重要(重要的事情說三遍)的原則,MySQL會一直向右匹配直到遇到范圍查詢(>,<,BETWEEN,LIKE)就停止匹配。

    3,盡量選擇區分度高的列作為索引,區分度的公式是 COUNT(DISTINCT col) / COUNT(*)。表示字段不重復的比率,比率越大我們掃描的記錄數就越少。

    4,索引列不能參與計算,盡量保持列“干凈”。比如,FROM_UNIXTIME(create_time) = '2016-06-06' 就不能使用索引,原因很簡單,B+樹中存儲的都是數據表中的字段值,但是進行檢索時,需要把所有元素都應用函數才能比較,顯然這樣的代價太大。所以語句要寫成 : create_time = UNIX_TIMESTAMP('2016-06-06')。

    5,盡可能的擴展索引,不要新建立索引。比如表中已經有了a的索引,現在要加(a,b)的索引,那么只需要修改原來的索引即可。

    6,單個多列組合索引和多個單列索引的檢索查詢效果不同,因為在執行SQL時,MySQL只能使用一個索引,會從多個單列索引中選擇一個限制最為嚴格的索引。

二、鎖

在mysql中的鎖看起來是很復雜的,因為有一大堆的東西和名詞:排它鎖,共享鎖,表鎖,頁鎖,間隙鎖,意向排它鎖,意向共享鎖,行鎖,讀鎖,寫鎖,樂觀鎖,悲觀鎖,死鎖。這些名詞有的博客又直接寫鎖的英文的簡寫--->X鎖,S鎖,IS鎖,IX鎖,MMVC...

鎖的相關知識又跟存儲引擎,索引,事務的隔離級別都是關聯的....

這就給初學數據庫鎖的人帶來不少的麻煩~~~于是我下面就簡單整理一下數據庫鎖的知識點,希望大家看完會有所幫助。

1、為什么需要學習數據庫鎖知識

不少人在開發的時候,應該很少會注意到這些鎖的問題,也很少會給程序加鎖(除了庫存這些對數量準確性要求極高的情況下)

一般也就聽過常說的樂觀鎖和悲觀鎖,了解過基本的含義之后就沒了~~~

定心丸:即使我們不會這些鎖知識,我們的程序在一般情況下還是可以跑得好好的。因為這些鎖數據庫隱式幫我們加了:

  •  對于UPDATE、DELETE、INSERT語句,InnoDB會自動給涉及數據集加排他鎖(X);
  •  MyISAM在執行查詢語句SELECT前,會自動給涉及的所有表加讀鎖,在執行更新操作(UPDATE、DELETE、INSERT等)前,會自動給涉及的表加寫鎖,這個過程并不需要用戶干預;

只會在某些特定的場景下才需要手動加鎖,學習數據庫鎖知識就是為了:

  •  能讓我們在特定的場景下派得上用場
  •  更好把控自己寫的程序
  •  在跟別人聊數據庫技術的時候可以搭上幾句話
  •  構建自己的知識庫體系!在面試的時候不虛

2、表鎖簡單介紹

首先,從鎖的粒度,我們可以分成兩大類:

  •  表鎖開銷小,加鎖快;不會出現死鎖;鎖定力度大,發生鎖沖突概率高,并發度***;
  •  行鎖開銷大,加鎖慢;會出現死鎖;鎖定粒度小,發生鎖沖突的概率低,并發度高;

不同的存儲引擎支持的鎖粒度是不一樣的:

  •  InnoDB行鎖和表鎖都支持!
  •  MyISAM只支持表鎖!

InnoDB只有通過索引條件檢索數據才使用行級鎖,否則,InnoDB將使用表鎖

  •  也就是說,InnoDB的行鎖是基于索引的!

表鎖下又分為兩種模式:

  •  表讀鎖(Table Read Lock)
  •  表寫鎖(Table Write Lock)
  •  從下圖可以清晰看到,在表讀鎖和表寫鎖的環境下:讀讀不阻塞,讀寫阻塞,寫寫阻塞!
  •  讀讀不阻塞:當前用戶在讀數據,其他的用戶也在讀數據,不會加鎖
  •  讀寫阻塞:當前用戶在讀數據,其他的用戶不能修改當前用戶讀的數據,會加鎖!
  •  寫寫阻塞:當前用戶在修改數據,其他的用戶不能修改當前用戶正在修改的數據,會加鎖!

從上面已經看到了:讀鎖和寫鎖是互斥的,讀寫操作是串行。

  •  如果某個進程想要獲取讀鎖,同時另外一個進程想要獲取寫鎖。在mysql里邊,寫鎖是優先于讀鎖的!
  •  寫鎖和讀鎖優先級的問題是可以通過參數調節的:max_write_lock_count和low-priority-updates

值得注意的是: 

  •   MyISAM可以支持查詢和插入操作的并發進行。可以通過系統變量concurrent_insert來指定哪種模式,在MyISAM中它默認是:如果MyISAM表中沒有空洞(即表的中間沒有被刪除的行),MyISAM允許在一個進程讀表的同時,另一個進程從表尾插入記錄。
  •  但是InnoDB存儲引擎是不支持的!

3、樂觀鎖和悲觀鎖

無論是Read committed還是Repeatable read隔離級別,都是為了解決讀寫沖突的問題。

單純在Repeatable read隔離級別下我們來考慮一個問題:

此時,用戶李四的操作就丟失掉了:

  •  丟失更新:一個事務的更新覆蓋了其它事務的更新結果。

(ps:暫時沒有想到比較好的例子來說明更新丟失的問題,雖然上面的例子也是更新丟失,但一定程度上是可接受的..不知道有沒有人能想到不可接受的更新丟失例子呢...)

解決的方法:

  •  使用Serializable隔離級別,事務是串行執行的!
  •  樂觀鎖
  •  悲觀鎖
  •  樂觀鎖是一種思想,具體實現是,表中有一個版本字段,***次讀的時候,獲取到這個字段。處理完業務邏輯開始更新的時候,需要再次查看該字段的值是否和***次的一樣。如果一樣更新,反之拒絕。之所以叫樂觀,因為這個模式沒有從數據庫加鎖,等到更新的時候再判斷是否可以更新。
  •  悲觀鎖是數據庫層面加鎖,都會阻塞去等待鎖。

3.1、悲觀鎖

所以,按照上面的例子。我們使用悲觀鎖的話其實很簡單(手動加行鎖就行了):

  •  select * from xxxx for update

在select 語句后邊加了 for update相當于加了排它鎖(寫鎖),加了寫鎖以后,其他的事務就不能對它修改了!需要等待當前事務修改完之后才可以修改.

  •  也就是說,如果張三使用select ... for update,李四就無法對該條記錄修改了~

3.2、樂觀鎖

樂觀鎖不是數據庫層面上的鎖,是需要自己手動去加的鎖。一般我們添加一個版本字段來實現:

具體過程是這樣的:

張三select * from table --->會查詢出記錄出來,同時會有一個version字段

李四select * from table --->會查詢出記錄出來,同時會有一個version字段

李四對這條記錄做修改:update A set Name=lisi,version=version+1 where ID=#{id} and version=#{version},判斷之前查詢到的version與現在的數據的version進行比較,同時會更新version字段

此時數據庫記錄如下:

張三也對這條記錄修改:update A set Name=lisi,version=version+1 where ID=#{id} and version=#{version},但失敗了!因為當前數據庫中的版本跟查詢出來的版本不一致!

4、間隙鎖GAP

當我們用范圍條件檢索數據而不是相等條件檢索數據,并請求共享或排他鎖時,InnoDB會給符合范圍條件的已有數據記錄的索引項加鎖;對于鍵值在條件范圍內但并不存在的記錄,叫做“間隙(GAP)”。InnoDB也會對這個“間隙”加鎖,這種鎖機制就是所謂的間隙鎖。

值得注意的是:間隙鎖只會在Repeatable read隔離級別下使用~

例子:假如emp表中只有101條記錄,其empid的值分別是1,2,...,100,101

Select * from emp where empid > 100 for update;

上面是一個范圍查詢,InnoDB不僅會對符合條件的empid值為101的記錄加鎖,也會對empid大于101(這些記錄并不存在)的“間隙”加鎖。

InnoDB使用間隙鎖的目的有兩個:

  •  為了防止幻讀(上面也說了,Repeatable read隔離級別下再通過GAP鎖即可避免了幻讀)
  •  滿足恢復和復制的需要MySQL的恢復機制要求:在一個事務未提交前,其他并發事務不能插入滿足其鎖定條件的任何記錄,也就是不允許出現幻讀

5、死鎖

并發的問題就少不了死鎖,在MySQL中同樣會存在死鎖的問題。

但一般來說MySQL通過回滾幫我們解決了不少死鎖的問題了,但死鎖是無法完全避免的,可以通過以下的經驗參考,來盡可能少遇到死鎖:

    1)以固定的順序訪問表和行。比如對兩個job批量更新的情形,簡單方法是對id列表先排序,后執行,這樣就避免了交叉等待鎖的情形;將兩個事務的sql順序調整為一致,也能避免死鎖。

    2)大事務拆小。大事務更傾向于死鎖,如果業務允許,將大事務拆小。

    3)在同一個事務中,盡可能做到一次鎖定所需要的所有資源,減少死鎖概率。

    4)降低隔離級別。如果業務允許,將隔離級別調低也是較好的選擇,比如將隔離級別從RR調整為RC,可以避免掉很多因為gap鎖造成的死鎖。

    5)為表添加合理的索引。可以看到如果不走索引將會為表的每一行記錄添加上鎖,死鎖的概率大大增大。

6、鎖總結

上面說了一大堆關于MySQL數據庫鎖的東西,現在來簡單總結一下。

表鎖其實我們程序員是很少關心它的:

  •  在MyISAM存儲引擎中,當執行SQL語句的時候是自動加的。
  •  在InnoDB存儲引擎中,如果沒有使用索引,表鎖也是自動加的。

現在我們大多數使用MySQL都是使用InnoDB,InnoDB支持行鎖:

  •  共享鎖--讀鎖--S鎖
  •  排它鎖--寫鎖--X鎖

在默認的情況下,select是不加任何行鎖的~事務可以通過以下語句顯示給記錄集加共享鎖或排他鎖。

  •  共享鎖(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE。
  •  排他鎖(X):SELECT * FROM table_name WHERE ... FOR UPDATE。

InnoDB基于行鎖還實現了MVCC多版本并發控制,MVCC在隔離級別下的Read committed和Repeatable read下工作。MVCC能夠實現讀寫不阻塞!

InnoDB實現的Repeatable read隔離級別配合GAP間隙鎖已經避免了幻讀!

  •  樂觀鎖其實是一種思想,正如其名:認為不會鎖定的情況下去更新數據,如果發現不對勁,才不更新(回滾)。在數據庫中往往添加一個version字段來實現。
  •  悲觀鎖用的就是數據庫的行鎖,認為數據庫會發生并發沖突,直接上來就把數據鎖住,其他事務不能修改,直至提交了當前事務

三、總結

本文主要介紹了數據庫中的兩個比較重要的知識點:索引和鎖。他倆可以說息息相關的,鎖會涉及到很多關于索引的知識~

 

責任編輯:龐桂玉 來源: Java后端技術
相關推薦

2020-11-10 22:46:41

圖形數據庫數據庫擴展

2025-03-27 04:00:00

2023-06-08 07:25:56

數據庫索引數據結構

2023-03-17 16:47:23

索引開發大數據

2018-08-08 17:29:23

數據庫索引磁盤存取

2025-04-02 01:22:44

MySQL樂觀鎖數據

2018-08-26 15:39:03

數據庫MySQL索引

2021-05-19 09:01:37

Pythonurllib庫requests庫

2022-01-10 22:06:41

機器人AI人工智能

2017-02-08 11:00:50

數據庫索引類型

2019-07-03 09:16:30

數據庫原理二叉樹

2010-04-21 15:06:37

負載均衡算法

2010-05-04 14:30:45

Oracle數據

2014-07-21 09:16:45

WiFi11ax

2015-09-17 11:04:07

KindleDropbox資料同步

2020-11-20 15:04:27

數據庫云數據庫安全

2019-10-16 08:55:32

DBA免費數據庫監控

2021-05-17 08:00:00

數據庫工具Flyway

2010-06-07 13:30:15

點贊
收藏

51CTO技術棧公眾號

日韩五码电影| 欧美成人视屏| 日韩制服丝袜av| 中文字幕免费精品一区| 欧美激情第3页| 羞羞的视频在线观看| 成人av免费在线观看| 日本国产一区二区三区| xxxxx99| 精品视频一区二区三区| 欧美视频在线免费看| 亚洲欧美日韩国产成人综合一二三区| av中文字幕播放| 欧美一级专区| 欧美国产中文字幕| 婷婷色一区二区三区| 中文无码日韩欧| 色诱亚洲精品久久久久久| 麻豆一区二区三区在线观看| 日本中文字幕电影在线观看 | 国产精品日韩精品在线播放| 午夜影院久久久| 中文字幕一区二区三区四区五区 | 亚洲欧美在线磁力| 日本黄色一级网站| 狠狠久久伊人中文字幕| 精品久久中文字幕久久av| 亚洲自拍偷拍一区二区三区| 你懂得在线网址| 成人午夜在线免费| 成人激情电影一区二区| 免费黄色小视频在线观看| 在线成人www免费观看视频| 久久久av网站| 香蕉久久久久久久| 国产精品美女久久久久久不卡| 日韩欧美中文字幕制服| 亚洲国产高清av| 欧美成人免费电影| 调教+趴+乳夹+国产+精品| 国产一区二区三区播放| 免费av在线| 国产精品久久久久久户外露出| 欧美日韩一区二区三区免费| 日韩性xxxx| 成人视屏免费看| 国产99视频精品免费视频36| 精品欧美在线观看| 国产麻豆欧美日韩一区| 成人黄色激情网| 中文字幕乱码视频| 手机精品视频在线观看| 欧美专区在线播放| 69视频免费在线观看| 国产美女一区| 欧美在线精品免播放器视频| 日韩不卡视频在线| 一本一本久久| 91高潮在线观看| 国产一级片毛片| 美女91精品| 国产精品成久久久久三级| 在线免费一区二区| 日本欧美韩国一区三区| 国产精品久久久久久久久久尿 | 国产亚洲无码精品| 天堂在线精品| 亚洲色图国产精品| 人妻无码一区二区三区免费| 欧美残忍xxxx极端| 久久成人人人人精品欧| 免费网站看av| 日韩午夜在线| 国产成人精品午夜| 这里只有久久精品视频| 精品一区二区三区在线播放视频| 国产女精品视频网站免费| 国产精品永久久久久久久久久| 国产一区欧美二区| 粉嫩av一区二区三区免费观看| 秋霞欧美在线观看| 久久综合色8888| 亚洲永久一区二区三区在线| av免费在线免费观看| 午夜伊人狠狠久久| 久久久精品麻豆| 精品一区二区三区中文字幕| 亚洲第一福利网站| xxx在线播放| 五月天综合网站| 欧美精品电影免费在线观看| 国产成人免费看| 久久精品国产亚洲aⅴ| 亚洲自拍偷拍视频| 蜜桃视频在线观看视频| 亚洲视频一区二区在线| 人妻av中文系列| 成人黄色免费观看| 日韩欧美第一区| 91成年人网站| 欧美人与禽猛交乱配视频| 欧美在线视频观看| 国产福利小视频| 久久精品视频一区二区三区| 91免费国产精品| 免费观看成人性生生活片 | 人妻少妇精品无码专区| 久久精品水蜜桃av综合天堂| 大陆极品少妇内射aaaaaa| **在线精品| 精品三级在线看| 337人体粉嫩噜噜噜| 国产一区视频在线观看免费| 国产精品免费一区豆花| 老熟妇高潮一区二区高清视频| 国产女人aaa级久久久级| 国产肉体ⅹxxx137大胆| 久久人体av| 亚洲美女久久久| 国产亚洲第一页| 激情六月婷婷综合| 日本免费高清一区二区| 波多野一区二区| 欧美一区二区日韩一区二区| 大胸美女被爆操| 男人的天堂亚洲| 国产一区视频观看| 色图在线观看| 欧美一区二区三区免费大片| 国产一二三四区在线| 国产精品入口66mio| 亚洲综合在线做性| 在线播放毛片| 欧美中文字幕亚洲一区二区va在线| av黄色一级片| 国产精品av一区二区| 91九色综合久久| 在线观看精品一区二区三区| 色国产精品一区在线观看| 天天插天天射天天干| 国产主播一区| 91久久精品一区二区别 | 久久久久在线观看| 精品区在线观看| 一区二区三区国产精品| 涩多多在线观看| 91精品国产成人观看| 成人福利在线视频| 一级毛片视频在线| 欧美日韩国产天堂| 妖精视频在线观看免费| 欧美aⅴ一区二区三区视频| 四虎影视永久免费在线观看一区二区三区| 国产免费不卡| 一区二区三区美女xx视频| 中文永久免费观看| 国产精品嫩草久久久久| 亚洲黄色小视频在线观看| 日韩成人免费| 成人免费xxxxx在线观看| 黄色片免费在线观看| 欧美一区二区在线不卡| 精品小视频在线观看| 成人精品小蝌蚪| 日韩小视频在线播放| 美国成人xxx| 国产精品福利网站| 老司机99精品99| 欧美videos中文字幕| 日本熟妇乱子伦xxxx| 91麻豆国产自产在线观看| 激情网站五月天| 三级电影一区| 51国偷自产一区二区三区的来源| 波多野结衣中文字幕久久| 亚洲精品日韩欧美| 一区二区视频免费| 一区二区三区影院| 97人妻精品一区二区三区免| 免费成人在线观看视频| 激情视频小说图片| 欧美中文一区| 国产日韩在线看| 丁香花高清在线观看完整版| 亚洲色图13p| 精品国产av一区二区三区| 天天色图综合网| 超薄肉色丝袜一二三| 激情小说亚洲一区| 日本精品免费在线观看| 日韩中文首页| 精品久久久久久乱码天堂| 国产成人精品一区二区三区视频| 九九久久久久99精品| 青草久久伊人| 欧美一区二区三区成人| www.国产com| 亚洲免费av观看| 亚洲一级中文字幕| 国产成人综合在线播放| 成年人黄色片视频| 日韩在线欧美| 久久视频在线观看中文字幕| 在线视频成人| 国产99久久久欧美黑人| 三级福利片在线观看| 一区二区三区黄色| 亚洲日本在线播放| 欧美一区二区久久久| 欧美激情一区二区三区免费观看| 亚洲成人av一区二区| 日本黄色片免费观看| 国产校园另类小说区| 永久免费未满蜜桃| 国产资源精品在线观看| 少妇性l交大片| 亚洲精品资源| 亚洲精品少妇一区二区| 久久理论电影| 日韩欧美亚洲区| 久久男人av| 9a蜜桃久久久久久免费| 麻豆久久久久| 欧美性做爰毛片| 四虎亚洲精品| 美女扒开尿口让男人操亚洲视频网站| 第一福利在线| 亚洲精品中文字| 污污网站免费在线观看| 欧美成人精精品一区二区频| 91尤物国产福利在线观看| 91久久精品午夜一区二区| 国产欧美日韩另类| 亚洲成人免费电影| 久久久久久久久久久久国产| 最新欧美精品一区二区三区| www.日本高清视频| 国产日韩欧美精品一区| 国产福利短视频| 成人av电影在线网| 在线看黄色的网站| 国产成人av电影| 九色91porny| 国产一区二区三区黄视频 | 在线观看一区二区三区三州| 欧美激情在线精品一区二区三区| 精品伦精品一区二区三区视频| 国产精品巨作av| 好吊色欧美一区二区三区 | 欧美变态口味重另类| 成人激情四射网| 亚洲成人免费网站| 天天射,天天干| 日韩精品免费观看| 性xxxfllreexxx少妇| 亚洲国产欧美一区二区丝袜黑人 | 日韩电影免费观看在线观看| 日本高清视频在线| 亚洲精品一区av在线播放| 狠狠狠综合7777久夜色撩人| 亚洲欧洲国产精品| 777电影在线观看| 精品国偷自产在线视频| 中文字幕免费高清电视剧网站在线观看 | 亚洲一区二区高清| 久热这里只有精品6| 日韩人体视频一二区| 五月天中文字幕| 欧美一级专区免费大片| 亚洲av无码国产综合专区| 亚洲成人999| 免费一级在线观看播放网址| 在线播放亚洲激情| 怡红院在线观看| 69视频在线免费观看| 性高爱久久久久久久久| 成人黄色中文字幕| 理论片一区二区在线| 品久久久久久久久久96高清| 日韩在线不卡| 欧美无砖专区免费| 老司机一区二区三区| 欧美wwwwwww| 99久久久无码国产精品| 91麻豆精品国产91久久综合| 一区二区三区在线观看国产| www.国产com| 717成人午夜免费福利电影| 亚洲av无码专区在线| 亚洲免费视频在线观看| 大片免费在线看视频| 8x拔播拔播x8国产精品| 日韩综合久久| 欧美成人在线免费观看| 欧美不卡在线| 国产精品人人妻人人爽人人牛| 国产一区二区剧情av在线| 在线观看国产免费视频| 亚洲欧美日韩国产手机在线 | 色诱视频网站一区| 国产日韩在线观看一区| 精品亚洲一区二区三区| 成人三级网址| 国产精品毛片a∨一区二区三区|国 | 69久久精品无码一区二区| 91蜜桃传媒精品久久久一区二区| 黄色香蕉视频在线观看| 日韩欧美一区二区三区久久| 精品国产一级片| 中文字幕日韩av综合精品| 国产高潮在线| 成人做爽爽免费视频| 中文字幕中文字幕精品| www.好吊操| 国产一区二区91| 国产123在线| 精品国产乱码久久久久久婷婷| 国产男男gay体育生网站| 亚洲日韩欧美视频| 蜜臀久久精品| 成人av影视在线| 国产精品久久久久久久免费观看| 黄色影院一级片| 成人小视频在线观看| 91九色丨porny丨极品女神| 欧美日韩一区三区四区| 精品久久av| 欧美亚洲另类激情另类| 97青娱国产盛宴精品视频| 国产精品夜夜夜爽张柏芝| 日本欧洲一区二区| 人妻视频一区二区| 色域天天综合网| 可以直接在线观看的av| 欧美一二三视频| 日韩福利视频一区| 男女激情无遮挡| 成人av在线资源网站| 免费日韩在线视频| 精品伦理精品一区| heyzo高清国产精品| 99久久精品久久久久久ai换脸| 女人香蕉久久**毛片精品| av在线免费看片| 亚洲蜜臀av乱码久久精品| 国产精品久久久久久免费播放| 精品国内自产拍在线观看| 成人网av.com/| 美女黄色片网站| 国产成人自拍网| 九九久久免费视频| 亚洲电影av在线| a天堂资源在线| 精品国产第一页| 亚洲永久免费精品| 99久久久无码国产精品衣服| 在线观看视频91| 浮生影视网在线观看免费| 国产精品久久久久久影视| 99国产精品一区二区| 爱豆国产剧免费观看大全剧苏畅| 自拍偷拍国产精品| 不卡视频免费在线观看| 午夜精品一区二区三区在线| 任我爽精品视频在线播放| 免费在线激情视频| 久久精品亚洲乱码伦伦中文| 夜夜狠狠擅视频| 欧美猛男性生活免费| 国产福利资源一区| 免费在线观看的毛片| 国产精品护士白丝一区av| 国产美女免费视频| 久久久女人电视剧免费播放下载 | 黄色资源网久久资源365| 久久成人国产精品入口| 亚洲国产精品va在看黑人| 亚洲天堂一区二区| 色呦呦网站入口| www.日韩在线| 一区二区乱子伦在线播放| 美女国内精品自产拍在线播放| 卡通动漫精品一区二区三区| 天天爽天天爽夜夜爽| 亚洲免费观看在线观看| 四虎永久在线观看| 国产精品美女www| 欧美日韩国产在线一区| 色欲av无码一区二区三区| 777欧美精品| 国产精欧美一区二区三区蓝颜男同| 亚洲在线播放电影| av高清不卡在线| 国产又色又爽又黄又免费| 97国产suv精品一区二区62| 久久在线电影| 国内精品久久99人妻无码| 欧美一卡二卡在线观看| 日韩电影网站| 国产精品videossex国产高清 |