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

再有人問你為什么MySQL用B+樹做索引,就把這篇文章發(fā)給她

企業(yè)動(dòng)態(tài)
索引這個(gè)詞,相信大多數(shù)人已經(jīng)相當(dāng)熟悉了,很多人都知道MySQL的索引主要以B+樹為主,但是要問到為什么用B+樹,恐怕很少有人能把前因后果講述的很完整。本文就來從頭到尾介紹下數(shù)據(jù)庫的索引。

[[281358]]

索引這個(gè)詞,相信大多數(shù)人已經(jīng)相當(dāng)熟悉了,很多人都知道MySQL的索引主要以B+樹為主,但是要問到為什么用B+樹,恐怕很少有人能把前因后果講述的很完整。本文就來從頭到尾介紹下數(shù)據(jù)庫的索引。

索引是一種數(shù)據(jù)結(jié)構(gòu),用于幫助我們?cè)诖罅繑?shù)據(jù)中快速定位到我們想要查找的數(shù)據(jù)。 索引最形象的比喻就是圖書的目錄了。注意這里的大量,數(shù)據(jù)量大了索引才顯得有意義,如果我想要在[1,2,3,4]中找到4這個(gè)數(shù)據(jù),直接對(duì)全數(shù)據(jù)檢索也很快,沒有必要費(fèi)力氣建索引再去查找。索引在mysql數(shù)據(jù)庫中分三類:

B+樹索引、Hash索引、全文索引

我們今天要介紹的是工作開發(fā)中最常接觸到innodb存儲(chǔ)引擎中的的B+樹索引。

要介紹B+樹索引,就不得不提二叉查找樹,平衡二叉樹和B樹這三種數(shù)據(jù)結(jié)構(gòu)。B+樹就是從他們仨演化來的。

二叉查找樹

首先,讓我們先看一張圖:

從圖中可以看到,我們?yōu)閡ser表(用戶信息表)建立了一個(gè)二叉查找樹的索引。圖中的圓為二叉查找樹的節(jié)點(diǎn),節(jié)點(diǎn)中存儲(chǔ)了鍵(key)和數(shù)據(jù)(data)。

鍵對(duì)應(yīng)user表中的id,數(shù)據(jù)對(duì)應(yīng)user表中的行數(shù)據(jù)。二叉查找樹的特點(diǎn)就是任何節(jié)點(diǎn)的左子節(jié)點(diǎn)的鍵值都小于當(dāng)前節(jié)點(diǎn)的鍵值,右子節(jié)點(diǎn)的鍵值都大于當(dāng)前節(jié)點(diǎn)的鍵值。 頂端的節(jié)點(diǎn)我們稱為根節(jié)點(diǎn),沒有子節(jié)點(diǎn)的節(jié)點(diǎn)我們稱之為葉節(jié)點(diǎn)。

如果我們需要查找id=12的用戶信息,利用我們創(chuàng)建的二叉查找樹索引,查找流程如下:

  • 1. 將根節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),把12與當(dāng)前節(jié)點(diǎn)的鍵值10比較,12大于10,接下來我們把當(dāng)前節(jié)點(diǎn)>的右子節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn)。
  • 2. 繼續(xù)把12和當(dāng)前節(jié)點(diǎn)的鍵值13比較,發(fā)現(xiàn)12小于13,把當(dāng)前節(jié)點(diǎn)的左子節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn)。
  • 3. 把12和當(dāng)前節(jié)點(diǎn)的鍵值12對(duì)比,12等于12,滿足條件,我們從當(dāng)前節(jié)點(diǎn)中取出data,即id=1>2,name=xm。

利用二叉查找樹我們只需要3次即可找到匹配的數(shù)據(jù)。如果在表中一條條的查找的話,我們需要6次才能找到。

平衡二叉樹

上面我們講解了利用二叉查找樹可以快速的找到數(shù)據(jù)。但是,如果上面的二叉查找樹是這樣的構(gòu)造:

 

這個(gè)時(shí)候可以看到我們的二叉查找樹變成了一個(gè)鏈表。

如果我們需要查找id=17的用戶信息,我們需要查找7次,也就相當(dāng)于全表掃描了。

導(dǎo)致這個(gè)現(xiàn)象的原因其實(shí)是二叉查找樹變得不平衡了,也就是高度太高了,從而導(dǎo)致查找效率的不穩(wěn)定。

為了解決這個(gè)問題,我們需要保證二叉查找樹一直保持平衡,就需要用到平衡二叉樹了。

平衡二叉樹又稱AVL樹,在滿足二叉查找樹特性的基礎(chǔ)上,要求每個(gè)節(jié)點(diǎn)的左右子樹的高度不能超過1。

下面是平衡二叉樹和非平衡二叉樹的對(duì)比:

由平衡二叉樹的構(gòu)造我們可以發(fā)現(xiàn)第一張圖中的二叉樹其實(shí)就是一棵平衡二叉樹。

平衡二叉樹保證了樹的構(gòu)造是平衡的,當(dāng)我們插入或刪除數(shù)據(jù)導(dǎo)致不滿足平衡二叉樹不平衡時(shí),平衡二叉樹會(huì)進(jìn)行調(diào)整樹上的節(jié)點(diǎn)來保持平衡。具體的調(diào)整方式這里就不介紹了。

平衡二叉樹相比于二叉查找樹來說,查找效率更穩(wěn)定,總體的查找速度也更快。

B樹

因?yàn)閮?nèi)存的易失性。一般情況下,我們都會(huì)選擇將user表中的數(shù)據(jù)和索引存儲(chǔ)在磁盤這種外圍設(shè)備中。

但是和內(nèi)存相比,從磁盤中讀取數(shù)據(jù)的速度會(huì)慢上百倍千倍甚至萬倍,所以,我們應(yīng)當(dāng)盡量減少從磁盤中讀取數(shù)據(jù)的次數(shù)。 另外,從磁盤中讀取數(shù)據(jù)時(shí),都是按照磁盤塊來讀取的,并不是一條一條的讀。

如果我們能把盡量多的數(shù)據(jù)放進(jìn)磁盤塊中,那一次磁盤讀取操作就會(huì)讀取更多數(shù)據(jù),那我們查找數(shù)據(jù)的時(shí)間也會(huì)大幅度降低。

如果我們用樹這種數(shù)據(jù)結(jié)構(gòu)作為索引的數(shù)據(jù)結(jié)構(gòu),那我們每查找一次數(shù)據(jù)就需要從磁盤中讀取一個(gè)節(jié)點(diǎn),也就是我們說的一個(gè)磁盤塊,我們都知道平衡二叉樹可是每個(gè)節(jié)點(diǎn)只存儲(chǔ)一個(gè)鍵值和數(shù)據(jù)的。

那說明什么?

說明每個(gè)磁盤塊僅僅存儲(chǔ)一個(gè)鍵值和數(shù)據(jù)!

那如果我們要存儲(chǔ)海量的數(shù)據(jù)呢?

可以想象到二叉樹的節(jié)點(diǎn)將會(huì)非常多,高度也會(huì)及其高,我們查找數(shù)據(jù)時(shí)也會(huì)進(jìn)行很多次磁盤IO,我們查找數(shù)據(jù)的效率將會(huì)極低!

為了解決平衡二叉樹的這個(gè)弊端,我們應(yīng)該尋找一種單個(gè)節(jié)點(diǎn)可以存儲(chǔ)多個(gè)鍵值和數(shù)據(jù)的平衡樹。也就是我們接下來要說的B樹。

B樹(Balance Tree)即為平衡樹的意思,下圖即是一顆B樹。

圖中的p節(jié)點(diǎn)為指向子節(jié)點(diǎn)的指針,二叉查找樹和平衡二叉樹其實(shí)也有,因?yàn)閳D的美觀性,被省略了。- 圖中的每個(gè)節(jié)點(diǎn)稱為頁,頁就是我們上面說的磁盤塊,在mysql中數(shù)據(jù)讀取的基本單位都是頁,所以我們這里叫做頁更符合mysql中索引的底層數(shù)據(jù)結(jié)構(gòu)。

從上圖可以看出,B樹相對(duì)于平衡二叉樹,每個(gè)節(jié)點(diǎn)存儲(chǔ)了更多的鍵值(key)和數(shù)據(jù)(data),并且每個(gè)節(jié)點(diǎn)擁有更多的子節(jié)點(diǎn),子節(jié)點(diǎn)的個(gè)數(shù)一般稱為階,上述圖中的B樹為3階B樹,高度也會(huì)很低。 基于這個(gè)特性,B樹查找數(shù)據(jù)讀取磁盤的次數(shù)將會(huì)很少,數(shù)據(jù)的查找效率也會(huì)比平衡二叉樹高很多。

假如我們要查找id=28的用戶信息,那么我們?cè)谏蠄DB樹中查找的流程如下:

1. 先找到根節(jié)點(diǎn)也就是頁1,判斷28在鍵值17和35之間,我們那么我們根據(jù)頁1中的指針p2找到頁3。

2. 將28和頁3中的鍵值相比較,28在26和30之間,我們根據(jù)頁3中的指針p2找到頁8。

3. 將28和頁8中的鍵值相比較,發(fā)現(xiàn)有匹配的鍵值28,鍵值28對(duì)應(yīng)的用戶信息為(28,bv)。

B+樹

B+樹是對(duì)B樹的進(jìn)一步優(yōu)化。讓我們先來看下B+樹的結(jié)構(gòu)圖:

根據(jù)上圖我們來看下B+樹和B樹有什么不同。 

1. B+樹非葉子節(jié)點(diǎn)上是不存儲(chǔ)數(shù)據(jù)的,僅存儲(chǔ)鍵值,而B樹節(jié)點(diǎn)中不僅存儲(chǔ)鍵值,也會(huì)存儲(chǔ)數(shù)據(jù)。之所以這么做是因?yàn)樵跀?shù)據(jù)庫中頁的大小是固定的,innodb中頁的默認(rèn)大小是16KB。如果不存儲(chǔ)數(shù)據(jù),那么就會(huì)存儲(chǔ)更多的鍵值,相應(yīng)的樹的階數(shù)(節(jié)點(diǎn)的子節(jié)點(diǎn)樹)就會(huì)更大,樹就會(huì)更矮更胖,如此一來我們查找數(shù)據(jù)進(jìn)行磁盤的IO次數(shù)有會(huì)再次減少,數(shù)據(jù)查詢的效率也會(huì)更快。另外,B+樹的階數(shù)是等于鍵值的數(shù)量的,如果我們的B+樹一個(gè)節(jié)點(diǎn)可以存儲(chǔ)1000個(gè)鍵值,那么3層B+樹可以存儲(chǔ)1000×1000×1000=10億個(gè)數(shù)據(jù)。一般根節(jié)點(diǎn)是常駐內(nèi)存的,所以一般我們查找10億數(shù)據(jù),只需要2次磁盤IO。

2. 因?yàn)锽+樹索引的所有數(shù)據(jù)均存儲(chǔ)在葉子節(jié)點(diǎn),而且數(shù)據(jù)是按照順序排列的。那么B+樹使得范圍查找,排序查找,分組查找以及去重查找變得異常簡(jiǎn)單。而B樹因?yàn)閿?shù)據(jù)分散在各個(gè)節(jié)點(diǎn),要實(shí)現(xiàn)這一點(diǎn)是很不容易的。 有心的讀者可能還發(fā)現(xiàn)上圖B+樹中各個(gè)頁之間是通過雙向鏈表連接的,葉子節(jié)點(diǎn)中的數(shù)據(jù)是通過單向鏈表連接的。其實(shí)上面的B樹我們也可以對(duì)各個(gè)節(jié)點(diǎn)加上鏈表。其實(shí)這些不是它們之前的區(qū)別,是因?yàn)樵趍ysql的innodb存儲(chǔ)引擎中,索引就是這樣存儲(chǔ)的。也就是說上圖中的B+樹索引就是innodb中B+樹索引真正的實(shí)現(xiàn)方式,準(zhǔn)確的說應(yīng)該是聚集索引(聚集索引和非聚集索引下面會(huì)講到)。通過上圖可以看到,在innodb中,我們通過數(shù)據(jù)頁之間通過雙向鏈表連接以及葉子節(jié)點(diǎn)中數(shù)據(jù)之間通過單向鏈表連接的方式可以找到表中所有的數(shù)據(jù)。

MyISAM中的B+樹索引實(shí)現(xiàn)與innodb中的略有不同。在MyISAM中,B+樹索引的葉子節(jié)點(diǎn)并不存儲(chǔ)數(shù)據(jù),而是存儲(chǔ)數(shù)據(jù)的文件地址。

聚集索引 VS 非聚集索引

在上節(jié)介紹B+樹索引的時(shí)候,我們提到了圖中的索引其實(shí)是聚集索引的實(shí)現(xiàn)方式。那什么是聚集索引呢?在MySQL中,B+樹索引按照存儲(chǔ)方式的不同分為聚集索引和非聚集索引。這里我們著重介紹innodb中的聚集索引和非聚集索引。1. 聚集索引(聚簇索引):以innodb作為存儲(chǔ)引擎的表,表中的數(shù)據(jù)都會(huì)有一個(gè)主鍵,即使你不創(chuàng)建主鍵,系統(tǒng)也會(huì)幫你創(chuàng)建一個(gè)隱式的主鍵。這是因?yàn)閕nnodb是把數(shù)據(jù)存放在B+樹中的,而B+樹的鍵值就是主鍵,在B+樹的葉子節(jié)點(diǎn)中,存儲(chǔ)了表中所有的數(shù)據(jù)。這種以主鍵作為B+樹索引的鍵值而構(gòu)建的B+樹索引,我們稱之為聚集索引。 2. 非聚集索引(非聚簇索引):以主鍵以外的列值作為鍵值構(gòu)建的B+樹索引,我們稱之為非聚集索引。非聚集索引與聚集索引的區(qū)別在于非聚集索引的葉子節(jié)點(diǎn)不存儲(chǔ)表中的數(shù)據(jù),而是存儲(chǔ)該列對(duì)應(yīng)的主鍵,想要查找數(shù)據(jù)我們還需要根據(jù)主鍵再去聚集索引中進(jìn)行查找,這個(gè)再根據(jù)聚集索引查找數(shù)據(jù)的過程,我們稱為回表。

明白了聚集索引和非聚集索引的定義,我們應(yīng)該明白這樣一句話:數(shù)據(jù)即索引,索引即數(shù)據(jù)。

利用聚集索引和非聚集索引查找數(shù)據(jù)

前面我們講解B+樹索引的時(shí)候并沒有去說怎么在B+樹中進(jìn)行數(shù)據(jù)的查找,主要就是因?yàn)檫€沒有引出聚集索引和非聚集索引的概念。下面我們通過講解如何通過聚集索引以及非聚集索引查找數(shù)據(jù)表中數(shù)據(jù)的方式介紹一下B+樹索引查找數(shù)據(jù)方法。

利用聚集索引查找數(shù)據(jù)

還是這張B+樹索引圖,現(xiàn)在我們應(yīng)該知道這就是聚集索引,表中的數(shù)據(jù)存儲(chǔ)在其中。現(xiàn)在假設(shè)我們要查找id>=18并且id<40的用戶數(shù)據(jù)。對(duì)應(yīng)的sql語句為select * from user where id>=18 and id <40,其中id為主鍵。具體的查找過程如下: 

1. 一般根節(jié)點(diǎn)都是常駐內(nèi)存的,也就是說頁1已經(jīng)在內(nèi)存中了,此時(shí)不需要到磁盤中讀取數(shù)據(jù),直接從內(nèi)存中讀取即可。

從內(nèi)存中讀取到頁1,要查找這個(gè)id>=18 and id <40或者范圍值,我們首先需要找到id=18的鍵值。

從頁1中我們可以找到鍵值18,此時(shí)我們需要根據(jù)指針p2,定位到頁3。

2. 要從頁3中查找數(shù)據(jù),我們就需要拿著p2指針去磁盤中進(jìn)行讀取頁3。

從磁盤中讀取頁3后將頁3放入內(nèi)存中,然后進(jìn)行查找,我們可以找到鍵值18,然后再拿到頁3中的指針p1,定位到頁8。

3. 同樣的頁8頁不在內(nèi)存中,我們需要再去磁盤中將頁8讀取到內(nèi)存中。

將頁8讀取到內(nèi)存中后。

因?yàn)轫撝械臄?shù)據(jù)是鏈表進(jìn)行連接的,而且鍵值是按照順序存放的,此時(shí)可以根據(jù)二分查找法定位到鍵值18。

此時(shí)因?yàn)橐呀?jīng)到數(shù)據(jù)頁了,此時(shí)我們已經(jīng)找到一條滿足條件的數(shù)據(jù)了,就是鍵值18對(duì)應(yīng)的數(shù)據(jù)。

因?yàn)槭欠秶檎遥掖藭r(shí)所有的數(shù)據(jù)又都存在葉子節(jié)點(diǎn),并且是有序排列的,那么我們就可以對(duì)頁8中的鍵值依次進(jìn)行遍歷查找并匹配滿足條件的數(shù)據(jù)。

我們可以一直找到鍵值為22的數(shù)據(jù),然后頁8中就沒有數(shù)據(jù)了,此時(shí)我們需要拿著頁8中的p指針去讀取頁9中的數(shù)據(jù)。

4. 因?yàn)轫?不在內(nèi)存中,就又會(huì)加載頁9到內(nèi)存中,并通過和頁8中一樣的方式進(jìn)行數(shù)據(jù)的查找,直到將頁12加載到內(nèi)存中,發(fā)現(xiàn)41大于40,此時(shí)不滿足條件。

那么查找到此終止。

最終我們找到滿足條件的所有數(shù)據(jù)為:

(18,kl),(19,kl),(22,hj),(24,io),(25,vg),(29,jk),(31,jk),(33,rt),(34,ty),(35,yu),(37,rt),(39,rt)。

總共12條記錄。

下面看下具體的查找流程圖:

利用非聚集索引查找數(shù)據(jù)

讀者看到這張圖的時(shí)候可能會(huì)蒙,這是啥東西啊?怎么都是數(shù)字。如果有這種感覺,請(qǐng)仔細(xì)看下圖中紅字的解釋。什么?還看不懂?那我再來解釋下吧。首先,這個(gè)非聚集索引表示的是用戶幸運(yùn)數(shù)字的索引(為什么是幸運(yùn)數(shù)字?一時(shí)興起想起來的:-)),此時(shí)表結(jié)構(gòu)是這樣的。idnameluckyNum 

在葉子節(jié)點(diǎn)中,不在存儲(chǔ)所有的數(shù)據(jù)了,存儲(chǔ)的是鍵值和主鍵。對(duì)于葉子節(jié)點(diǎn)中的x-y,比如1-1。左邊的1表示的是索引的鍵值,右邊的1表示的是主鍵值。如果我們要找到幸運(yùn)數(shù)字為33的用戶信息,對(duì)應(yīng)的sql語句為select * from user where luckNum=33。查找的流程跟聚集索引一樣,這里就不詳細(xì)介紹了。我們最終會(huì)找到主鍵值47,找到主鍵后我們需要再到聚集索引中查找具體對(duì)應(yīng)的數(shù)據(jù)信息,此時(shí)又回到了聚集索引的查找流程。 下面看下具體的查找流程圖:

在MyISAM中,聚集索引和非聚集索引的葉子節(jié)點(diǎn)都會(huì)存儲(chǔ)數(shù)據(jù)的文件地址。

總結(jié)

本篇文從二叉查找樹,詳細(xì)說明了為什么mysql用B+樹作為數(shù)據(jù)的索引,以及在innodb中數(shù)據(jù)庫如何通過B+樹索引來存儲(chǔ)數(shù)據(jù)以及查找數(shù)據(jù)。我們一定要記住這就話:數(shù)據(jù)即索引,索引即數(shù)據(jù)。參考資料:

《Mysql必知必會(huì)》

《MySQL技術(shù)內(nèi)幕InnoDB存儲(chǔ)引擎第2版》

https://www.cnblogs.com/vianzhang/p/7922426.html

http://blog.codinglabs.org/articles/theory-of-mysql-index.html

【本文是51CTO專欄作者Hollis的原創(chuàng)文章,作者微信公眾號(hào)Hollis(ID:hollischuang)】 

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2019-11-04 15:00:50

MySQL索引B+樹

2018-08-07 16:01:32

synchronizevolatilefinal

2022-09-26 10:09:08

MVCC控制并發(fā)

2021-02-22 13:32:19

MySQLSQL索引

2018-07-03 14:54:25

Java內(nèi)存模型

2020-12-11 08:23:06

JavaMemory Mode內(nèi)存模型

2018-12-07 09:31:52

分布式鎖服務(wù)框架分布式系統(tǒng)

2021-05-31 09:42:48

MySQL隔離級(jí)別

2022-11-08 09:33:36

訂單系統(tǒng)電商

2019-09-19 14:03:32

B樹節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)

2022-05-23 09:41:27

分庫分表數(shù)據(jù)庫算法

2021-03-08 10:25:37

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

2021-03-08 12:47:42

MySQL查詢數(shù)據(jù)

2022-10-21 16:39:56

JDK優(yōu)化

2022-03-28 08:24:52

MySQL聚簇索引非聚簇索引

2019-09-24 09:33:53

MySQLB+樹InnoDB

2023-12-11 08:32:58

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

2024-05-22 09:01:53

InnoDBB+索引

2025-11-03 16:30:44

2020-04-20 13:11:21

HashMap底層存儲(chǔ)
點(diǎn)贊
收藏

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

中文字幕剧情在线观看一区| 97免费在线视频| 日本免费色视频| 在线看女人毛片| 成人一道本在线| 4438全国亚洲精品在线观看视频| 在哪里可以看毛片| 欧美国产亚洲精品| 欧美性生交大片免网| 午夜免费电影一区在线观看| 国产老妇伦国产熟女老妇视频| 欧美日韩国产欧| 亚洲国产精品高清久久久| 日本熟妇人妻中出| 久久www人成免费看片中文| 国产亚洲一区二区三区| 99理论电影网| 中文 欧美 日韩| 亚洲另类自拍| 美女视频黄免费的亚洲男人天堂| 屁屁影院国产第一页| 久久影视精品| 欧美性猛交xxxx久久久| 亚洲爆乳无码精品aaa片蜜桃| 欧美日韩视频精品二区| 国产成人午夜视频| 日本成人激情视频| 国产乡下妇女做爰毛片| 99精品综合| 亚洲人成电影网站色xx| 在线观看国产免费视频| 欧美日韩中出| 欧美色网一区二区| 99久久久无码国产精品6| 美足av综合网| 亚洲免费色视频| 亚洲精品一区二区三区四区五区 | 91高清视频在线| xxxx18hd亚洲hd捆绑| 亚洲卡一卡二| 亚洲人123区| 在线免费观看成人| 色综合久久影院| 中文字幕乱码久久午夜不卡| 免费日韩电影在线观看| 视频福利在线| 成人中文字幕在线| av噜噜色噜噜久久| av男人天堂网| 国产一区二区在线观看免费| 国产欧美亚洲视频| 在线亚洲欧美日韩| 久久精品国产秦先生| 国产精品久久久久久久久久尿| 久久久久久久久影院| 亚洲国产日本| 97在线视频免费播放| 成人精品在线看| 午夜在线一区二区| 国产97在线亚洲| 波多野结衣二区三区| 日韩高清电影一区| 国产精品午夜国产小视频| 亚洲视频久久久| 极品少妇一区二区| 91成人免费在线观看| 不卡的日韩av| 97精品视频在线观看自产线路二| 久久久精品国产一区二区三区| 污视频在线免费观看| 91理论电影在线观看| 欧美极品色图| 黄色网页在线观看| 亚洲第一精品在线| 久久久久狠狠高潮亚洲精品| 日韩av首页| 91精品国产综合久久久久久久久久 | 在线观看福利片| 三上亚洲一区二区| 欧美激情第三页| 天天综合天天干| 免费看欧美美女黄的网站| 亚洲一区二区三区四区在线播放| 亚洲国产欧美另类| 26uuu久久天堂性欧美| 亚洲成人自拍| 啦啦啦中文在线观看日本| 福利精品视频在线| 五月花丁香婷婷| 久久久精品国产**网站| 在线观看久久久久久| 免费在线黄色网| 另类图片国产| 亚洲xxx视频| 精品视频一二区| 亚洲最大成人综合| 亚洲一二三区av| 精品中文在线| 国产亚洲欧洲高清| 久久无码精品丰满人妻| 久久婷婷麻豆| 9a蜜桃久久久久久免费| 超碰免费97在线观看| 亚洲一区二区美女| 在线免费视频一区| 久久中文资源| 久久福利视频网| а中文在线天堂| 99综合电影在线视频| 一区二区三区欧美成人| 亚洲一二三四| 精品少妇一区二区三区 | 热久久天天拍国产| 久久久久久久999| 国产精品爽爽久久久久久| 久久影音资源网| 青青草综合在线| 久久女人天堂| 亚洲欧美日韩一区在线| 国产在线视频你懂的| 久久精品国产一区二区| 日本一区二区三区视频在线播放 | 草逼视频免费看| 国产精品美日韩| 国产精品欧美激情在线观看| ccyy激情综合| 九九精品在线播放| 国产精品国产av| 久久九九久久九九| 欧美日韩黄色一级片| 99久久香蕉| 久久国产精品久久久久久久久久| 最近中文在线观看| 久久久777精品电影网影网| 免费看的黄色大片| 欧美精品密入口播放| 欧美激情一区二区三区成人 | 国产精品66部| 99热一区二区三区| 91丨精品丨国产| 国产午夜精品全部视频在线播放 | 欧美亚洲国产怡红院影院| 国产亚洲无码精品| 久久久久欧美精品| 日本视频一区在线观看| 欧美www.| 一区二区在线免费视频| 亚洲欧美一二三区| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美视频在线播放| 国产日产在线观看| 久久精品国产网站| 国产女主播av| a看欧美黄色女同性恋| 久久免费国产视频| 色呦呦中文字幕| 欧美视频13p| 受虐m奴xxx在线观看| 久久综合九色| 亚洲五月六月| 国产精品白丝久久av网站| 久久综合九色九九| 欧美 日韩 国产 在线| 午夜电影一区二区| 男女做爰猛烈刺激| 久久成人羞羞网站| 精品久久久无码人妻字幂| 9国产精品午夜| 国产91精品不卡视频| 美女欧美视频在线观看免费| 日本久久一区二区三区| 免费成人深夜蜜桃视频| 国内不卡的二区三区中文字幕| 欧美日韩视频免费| 老汉色老汉首页av亚洲| 国产精品1区2区在线观看 | 国产精品久久久久一区二区三区 | 麻豆国产va免费精品高清在线| 国产人妖在线播放| 天天免费综合色| av在线播放中文字幕| 国产精品一卡二卡| 欧美女人性生活视频| 日韩精品欧美激情一区二区| 99久热re在线精品996热视频| 中文一区一区三区高中清不卡免费| 亚洲少妇中文在线| 亚洲av综合色区无码一二三区| 狠狠爱在线视频一区| 操她视频在线观看| 91麻豆国产福利精品| 国产精品嫩草影院8vv8| 99精品久久久| 中国 免费 av| 免费精品国产| 国产精品一区视频网站| 欧美成人aaa| 韩剧1988在线观看免费完整版| 韩国中文字幕2020精品| 精品国免费一区二区三区| 国产九色91回来了| 亚洲成av人片| 欧美第一页在线观看| 久久午夜电影网| 俄罗斯女人裸体性做爰| 日本不卡在线视频| 欧洲精品在线播放| 久久一区二区三区喷水| 九九99久久| 日韩视频一二区| 国产欧美中文字幕| 欧美成人精品一区二区男人小说| 欧美精品第一页在线播放| 日韩伦理在线观看| 国产一区二区三区精品久久久| 高h震动喷水双性1v1| 欧美美女喷水视频| 超碰在线观看91| 五月婷婷综合在线| 久久艹精品视频| 亚洲嫩草精品久久| 日本黄色片免费观看| 国产精品水嫩水嫩| 99久久精品免费视频 | 国产一区在线观看免费| 久久亚洲精精品中文字幕早川悠里 | 一区二区日本| 成人中文在线| 亚洲国产精品www| 精品福利久久久| 欧美极品jizzhd欧美| 欧美激情极品| 久久伦理网站| 全国精品免费看| 国产成人自拍高清视频在线免费播放| 国产伦精品一区二区三区四区免费 | 头脑特工队2免费完整版在线观看| 欧美一三区三区四区免费在线看| 午夜一区二区三区四区| 欧美性猛交xxxxx水多| 国产欧美日韩另类| 亚洲成av人片在www色猫咪| 久久免费精彩视频| 亚洲一区自拍偷拍| 精品无码久久久久久久久| 亚洲黄色免费电影| 国产乱码久久久久久| 亚洲一区二区三区国产| 日韩精品一区二区av| 天天av天天翘天天综合网| 日本视频免费在线| 一本大道综合伊人精品热热 | av电影免费在线观看| 久久夜色精品国产欧美乱| 国产黄色小视频在线| 久久精品久久精品亚洲人| 二区三区四区高清视频在线观看| 久久综合色88| caoprom在线| 青青a在线精品免费观看| 欧美最新精品| 国产啪精品视频| 涩涩屋成人免费视频软件| av免费观看久久| 在线成人动漫av| 亚洲午夜久久久影院伊人| 国产精品毛片久久| 99久久免费观看| 亚洲综合国产激情另类一区| 黄色av免费在线播放| 久久国产生活片100| 亚洲国产欧美日韩在线| 成人免费毛片嘿嘿连载视频| 蜜臀av一区二区三区有限公司| 国产亚洲美州欧州综合国| 中文字幕资源站| 亚洲大片免费看| 一级特黄免费视频| 欧美一级在线免费| 青青草免费观看免费视频在线| 国产一区二区三区视频免费| 久久bbxx| 日本欧美在线视频| 国产一区精品二区| 美乳视频一区二区| 外国成人激情视频| 欧美黄网站在线观看| 老鸭窝一区二区久久精品| 免费观看污网站| 国产日产亚洲精品系列| 欧美成人精品欧美一级私黄| 欧美视频裸体精品| 国产女人爽到高潮a毛片| 亚洲精品999| 国产小视频在线观看| 欧美日韩成人在线观看| 久久精品女人天堂av免费观看 | 亚洲视频在线一区二区| av中文在线播放| 在线综合视频播放| 岛国在线视频免费看| 久久久亚洲网站| 天天综合在线观看| 日本不卡久久| 激情视频一区二区三区| www.久久av.com| 国产清纯白嫩初高生在线观看91 | 免费日韩精品中文字幕视频在线| 五月天中文字幕在线| 2020国产精品| 久久久一二三区| 欧美精品v国产精品v日韩精品| 亚洲av电影一区| 欧美人与性动交a欧美精品| 欧美性片在线观看| 欧美成人第一区| 亚洲国产片色| 人妻互换一二三区激情视频| 国产精品福利电影一区二区三区四区 | a级大片免费看| 国产精品国产三级国产a| 成人h动漫精品一区二区下载| 亚洲国内精品在线| 久久av色综合| 风间由美一区二区三区| 亚洲精品二区三区| 自拍偷拍一区二区三区四区| 久久精品一区二区三区四区 | 欧美性极品少妇| 免费一级毛片在线观看| 97成人精品视频在线观看| 哺乳一区二区三区中文视频| 法国空姐在线观看免费| 精品一区二区三区免费毛片爱| 成年人在线免费看片| 一本色道久久综合亚洲91| 日韩av地址| 日本精品一区二区三区在线播放视频| 国内精品免费| 日本丰满少妇xxxx| av在线播放不卡| 国产成人在线播放视频| 精品一区二区三区四区在线| 国产拍在线视频| 久久精品午夜一区二区福利| 最新亚洲视频| 中文字幕5566| 色播五月激情综合网| 免费一级在线观看| 国产精品电影网站| 五月天久久久| 9191在线视频| 五月激情综合网| 九色在线视频蝌蚪| 国产精品一区二区久久久| 水蜜桃久久夜色精品一区| 在线观看免费视频高清游戏推荐| 国产精品久久久久久一区二区三区 | 99国产精品视频免费观看一公开| 中文字幕在线免费看线人| 色香蕉成人二区免费| 福利片在线看| 亚洲一区二区中文| 亚洲精品美女91| 蜜桃av免费看| 在线不卡免费欧美| 国内在线免费视频| 日本高清中文字幕二区在线| 日本成熟性欧美| 色一区二区三区四区| 亚洲一级片免费观看| 亚洲自拍偷拍综合| 四虎在线免费观看| 国产精品羞羞答答| 国产字幕视频一区二区| 免费观看一级一片| 欧美日韩视频第一区| 色婷婷av在线| 欧美日韩在线观看一区二区三区| 免费不卡在线观看| 精品在线视频观看| 亚洲天堂久久av| 日韩成人在线看| 大香煮伊手机一区| 亚洲综合在线免费观看| 欧美日韩在线中文字幕| 91久久国产婷婷一区二区| 99在线|亚洲一区二区| 欧美极品jizzhd欧美18| 精品国产亚洲在线| 日韩欧国产精品一区综合无码| 丰满少妇大力进入| 中文字幕精品一区| 天堂在线资源库| 成人黄色免费看| 久久精品女人天堂| 久久一区二区三| 色偷偷888欧美精品久久久| 久久精品福利| 男人操女人下面视频|