黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL的InnoDB索引原理詳解

瀏覽:52日期:2023-10-17 12:32:59
摘要:

本篇介紹下Mysql的InnoDB索引相關(guān)知識,從各種樹到索引原理到存儲的細(xì)節(jié)。

InnoDB是Mysql的默認(rèn)存儲引擎(Mysql5.5.5之前是MyISAM,文檔)。本著高效學(xué)習(xí)的目的,本篇以介紹InnoDB為主,少量涉及MyISAM作為對比。

這篇文章是我在學(xué)習(xí)過程中總結(jié)完成的,內(nèi)容主要來自書本和博客(參考文獻(xiàn)會給出),過程中加入了一些自己的理解,描述不準(zhǔn)確的地方煩請指出。

1 各種樹形結(jié)構(gòu)

本來不打算從二叉搜索樹開始,因為網(wǎng)上已經(jīng)有太多相關(guān)文章,但是考慮到清晰的圖示對理解問題有很大幫助,也為了保證文章完整性,最后還是加上了這部分。

先看看幾種樹形結(jié)構(gòu):

1 搜索二叉樹:每個節(jié)點有兩個子節(jié)點,數(shù)據(jù)量的增大必然導(dǎo)致高度的快速增加,顯然這個不適合作為大量數(shù)據(jù)存儲的基礎(chǔ)結(jié)構(gòu)。

2 B樹:一棵m階B樹是一棵平衡的m路搜索樹。最重要的性質(zhì)是每個非根節(jié)點所包含的關(guān)鍵字個數(shù) j 滿足:┌m/2┐ - 1 <= j <= m - 1;一個節(jié)點的子節(jié)點數(shù)量會比關(guān)鍵字個數(shù)多1,這樣關(guān)鍵字就變成了子節(jié)點的分割標(biāo)志。一般會在圖示中把關(guān)鍵字畫到子節(jié)點中間,非常形象,也容易和后面的B+樹區(qū)分。由于數(shù)據(jù)同時存在于葉子節(jié)點和非葉子結(jié)點中,無法簡單完成按順序遍歷B樹中的關(guān)鍵字,必須用中序遍歷的方法。

3 B+樹:一棵m階B樹是一棵平衡的m路搜索樹。最重要的性質(zhì)是每個非根節(jié)點所包含的關(guān)鍵字個數(shù) j 滿足:┌m/2┐ - 1 <= j <= m;子樹的個數(shù)最多可以與關(guān)鍵字一樣多。非葉節(jié)點存儲的是子樹里最小的關(guān)鍵字。同時數(shù)據(jù)節(jié)點只存在于葉子節(jié)點中,且葉子節(jié)點間增加了橫向的指針,這樣順序遍歷所有數(shù)據(jù)將變得非常容易。

4 B*樹:一棵m階B樹是一棵平衡的m路搜索樹。最重要的兩個性質(zhì)是1每個非根節(jié)點所包含的關(guān)鍵字個數(shù) j 滿足:┌m2/3┐ - 1 <= j <= m;2非葉節(jié)點間添加了橫向指針。

MySQL的InnoDB索引原理詳解

MySQL的InnoDB索引原理詳解

MySQL的InnoDB索引原理詳解

B/B+/B*三種樹有相似的操作,比如檢索/插入/刪除節(jié)點。這里只重點關(guān)注插入節(jié)點的情況,且只分析他們在當(dāng)前節(jié)點已滿情況下的插入操作,因為這個動作稍微復(fù)雜且能充分體現(xiàn)幾種樹的差異。與之對比的是檢索節(jié)點比較容易實現(xiàn),而刪除節(jié)點只要完成與插入相反的過程即可(在實際應(yīng)用中刪除并不是插入的完全逆操作,往往只刪除數(shù)據(jù)而保留下空間為后續(xù)使用)。

先看B樹的分裂,下圖的紅色值即為每次新插入的節(jié)點。每當(dāng)一個節(jié)點滿后,就需要發(fā)生分裂(分裂是一個遞歸過程,參考下面7的插入導(dǎo)致了兩層分裂),由于B樹的非葉子節(jié)點同樣保存了鍵值,所以已滿節(jié)點分裂后的值將分布在三個地方:1原節(jié)點,2原節(jié)點的父節(jié)點,3原節(jié)點的新建兄弟節(jié)點(參考5,7的插入過程)。分裂有可能導(dǎo)致樹的高度增加(參考3,7的插入過程),也可能不影響樹的高度(參考5,6的插入過程)。

MySQL的InnoDB索引原理詳解

B+樹的分裂:當(dāng)一個結(jié)點滿時,分配一個新的結(jié)點,并將原結(jié)點中1/2的數(shù)據(jù)復(fù)制到新結(jié)點,最后在父結(jié)點中增加新結(jié)點的指針;B+樹的分裂只影響原結(jié)點和父結(jié)點,而不會影響兄弟結(jié)點,所以它不需要指向兄弟節(jié)點的指針。

MySQL的InnoDB索引原理詳解

B*樹的分裂:當(dāng)一個結(jié)點滿時,如果它的下一個兄弟結(jié)點未滿,那么將一部分?jǐn)?shù)據(jù)移到兄弟結(jié)點中,再在原結(jié)點插入關(guān)鍵字,最后修改父結(jié)點中兄弟結(jié)點的關(guān)鍵字(因為兄弟結(jié)點的關(guān)鍵字范圍改變了)。如果兄弟也滿了,則在原結(jié)點與兄弟結(jié)點之間增加新結(jié)點,并各復(fù)制1/3的數(shù)據(jù)到新結(jié)點,最后在父結(jié)點增加新結(jié)點的指針。可以看到B*樹的分裂非常巧妙,因為B*樹要保證分裂后的節(jié)點還要2/3滿,如果采用B+樹的方法,只是簡單的將已滿的節(jié)點一分為二,會導(dǎo)致每個節(jié)點只有1/2滿,這不滿足B*樹的要求了。所以B*樹采取的策略是在本節(jié)點滿后,繼續(xù)插入兄弟節(jié)點(這也是為什么B*樹需要在非葉子節(jié)點加一個兄弟間的鏈表),直到把兄弟節(jié)點也塞滿,然后拉上兄弟節(jié)點一起湊份子,自己和兄弟節(jié)點各出資1/3成立新節(jié)點,這樣的結(jié)果是3個節(jié)點剛好是2/3滿,達(dá)到B*樹的要求,皆大歡喜。

MySQL的InnoDB索引原理詳解

B+樹適合作為數(shù)據(jù)庫的基礎(chǔ)結(jié)構(gòu),完全是因為計算機(jī)的內(nèi)存-機(jī)械硬盤兩層存儲結(jié)構(gòu)。內(nèi)存可以完成快速的隨機(jī)訪問(隨機(jī)訪問即給出任意一個地址,要求返回這個地址存儲的數(shù)據(jù))但是容量較小。而硬盤的隨機(jī)訪問要經(jīng)過機(jī)械動作(1磁頭移動 2盤片轉(zhuǎn)動),訪問效率比內(nèi)存低幾個數(shù)量級,但是硬盤容量較大。典型的數(shù)據(jù)庫容量大大超過可用內(nèi)存大小,這就決定了在B+樹中檢索一條數(shù)據(jù)很可能要借助幾次磁盤IO操作來完成。如下圖所示:通常向下讀取一個節(jié)點的動作可能會是一次磁盤IO操作,不過非葉節(jié)點通常會在初始階段載入內(nèi)存以加快訪問速度。同時為提高在節(jié)點間橫向遍歷速度,真實數(shù)據(jù)庫中可能會將圖中藍(lán)色的CPU計算/內(nèi)存讀取優(yōu)化成二叉搜索樹(InnoDB中的page directory機(jī)制)。

MySQL的InnoDB索引原理詳解

真實數(shù)據(jù)庫中的B+樹應(yīng)該是非常扁平的,可以通過向表中順序插入足夠數(shù)據(jù)的方式來驗證InnoDB中的B+樹到底有多扁平。我們通過如下圖的CREATE語句建立一個只有簡單字段的測試表,然后不斷添加數(shù)據(jù)來填充這個表。通過下圖的統(tǒng)計數(shù)據(jù)(來源見參考文獻(xiàn)1)可以分析出幾個直觀的結(jié)論,這幾個結(jié)論宏觀的展現(xiàn)了數(shù)據(jù)庫里B+樹的尺度。

1 每個葉子節(jié)點存儲了468行數(shù)據(jù),每個非葉子節(jié)點存儲了大約1200個鍵值,這是一棵平衡的1200路搜索樹!

2 對于一個22.1G容量的表,也只需要高度為3的B+樹就能存儲了,這個容量大概能滿足很多應(yīng)用的需要了。如果把高度增大到4,則B+樹的存儲容量立刻增大到25.9T之巨!

3 對于一個22.1G容量的表,B+樹的高度是3,如果要把非葉節(jié)點全部加載到內(nèi)存也只需要少于18.8M的內(nèi)存(如何得出的這個結(jié)論?因為對于高度為2的樹,1203個葉子節(jié)點也只需要18.8M空間,而22.1G從良表的高度是3,非葉節(jié)點1204個。同時我們假設(shè)葉子節(jié)點的尺寸是大于非葉節(jié)點的,因為葉子節(jié)點存儲了行數(shù)據(jù)而非葉節(jié)點只有鍵和少量數(shù)據(jù)。),只使用如此少的內(nèi)存就可以保證只需要一次磁盤IO操作就檢索出所需的數(shù)據(jù),效率是非常之高的。

MySQL的InnoDB索引原理詳解

2 Mysql的存儲引擎和索引

可以說數(shù)據(jù)庫必須有索引,沒有索引則檢索過程變成了順序查找,O(n)的時間復(fù)雜度幾乎是不能忍受的。我們非常容易想象出一個只有單關(guān)鍵字組成的表如何使用B+樹進(jìn)行索引,只要將關(guān)鍵字存儲到樹的節(jié)點即可。當(dāng)數(shù)據(jù)庫一條記錄里包含多個字段時,一棵B+樹就只能存儲主鍵,如果檢索的是非主鍵字段,則主鍵索引失去作用,又變成順序查找了。這時應(yīng)該在第二個要檢索的列上建立第二套索引。 這個索引由獨(dú)立的B+樹來組織。有兩種常見的方法可以解決多個B+樹訪問同一套表數(shù)據(jù)的問題,一種叫做聚簇索引(clustered index ),一種叫做非聚簇索引(secondary index)。這兩個名字雖然都叫做索引,但這并不是一種單獨(dú)的索引類型,而是一種數(shù)據(jù)存儲方式。對于聚簇索引存儲來說,行數(shù)據(jù)和主鍵B+樹存儲在一起,輔助鍵B+樹只存儲輔助鍵和主鍵,主鍵和非主鍵B+樹幾乎是兩種類型的樹。對于非聚簇索引存儲來說,主鍵B+樹在葉子節(jié)點存儲指向真正數(shù)據(jù)行的指針,而非主鍵。

InnoDB使用的是聚簇索引,將主鍵組織到一棵B+樹中,而行數(shù)據(jù)就儲存在葉子節(jié)點上,若使用"where id = 14"這樣的條件查找主鍵,則按照B+樹的檢索算法即可查找到對應(yīng)的葉節(jié)點,之后獲得行數(shù)據(jù)。若對Name列進(jìn)行條件搜索,則需要兩個步驟:第一步在輔助索引B+樹中檢索Name,到達(dá)其葉子節(jié)點獲取對應(yīng)的主鍵。第二步使用主鍵在主索引B+樹種再執(zhí)行一次B+樹檢索操作,最終到達(dá)葉子節(jié)點即可獲取整行數(shù)據(jù)。

MyISM使用的是非聚簇索引,非聚簇索引的兩棵B+樹看上去沒什么不同,節(jié)點的結(jié)構(gòu)完全一致只是存儲的內(nèi)容不同而已,主鍵索引B+樹的節(jié)點存儲了主鍵,輔助鍵索引B+樹存儲了輔助鍵。表數(shù)據(jù)存儲在獨(dú)立的地方,這兩顆B+樹的葉子節(jié)點都使用一個地址指向真正的表數(shù)據(jù),對于表數(shù)據(jù)來說,這兩個鍵沒有任何差別。由于索引樹是獨(dú)立的,通過輔助鍵檢索無需訪問主鍵的索引樹。

為了更形象說明這兩種索引的區(qū)別,我們假想一個表如下圖存儲了4行數(shù)據(jù)。其中Id作為主索引,Name作為輔助索引。圖示清晰的顯示了聚簇索引和非聚簇索引的差異。

MySQL的InnoDB索引原理詳解

MySQL的InnoDB索引原理詳解

我們重點關(guān)注聚簇索引,看上去聚簇索引的效率明顯要低于非聚簇索引,因為每次使用輔助索引檢索都要經(jīng)過兩次B+樹查找,這不是多此一舉嗎?聚簇索引的優(yōu)勢在哪?

1 由于行數(shù)據(jù)和葉子節(jié)點存儲在一起,這樣主鍵和行數(shù)據(jù)是一起被載入內(nèi)存的,找到葉子節(jié)點就可以立刻將行數(shù)據(jù)返回了,如果按照主鍵Id來組織數(shù)據(jù),獲得數(shù)據(jù)更快。

2 輔助索引使用主鍵作為"指針" 而不是使用地址值作為指針的好處是,減少了當(dāng)出現(xiàn)行移動或者數(shù)據(jù)頁分裂時輔助索引的維護(hù)工作,使用主鍵值當(dāng)作指針會讓輔助索引占用更多的空間,換來的好處是InnoDB在移動行時無須更新輔助索引中的這個"指針"。也就是說行的位置(實現(xiàn)中通過16K的Page來定位,后面會涉及)會隨著數(shù)據(jù)庫里數(shù)據(jù)的修改而發(fā)生變化(前面的B+樹節(jié)點分裂以及Page的分裂),使用聚簇索引就可以保證不管這個主鍵B+樹的節(jié)點如何變化,輔助索引樹都不受影響。

3 Page結(jié)構(gòu)

如果說前面的內(nèi)容偏向于解釋原理,那后面就開始涉及具體實現(xiàn)了。

理解InnoDB的實現(xiàn)不得不提Page結(jié)構(gòu),Page是整個InnoDB存儲的最基本構(gòu)件,也是InnoDB磁盤管理的最小單位,與數(shù)據(jù)庫相關(guān)的所有內(nèi)容都存儲在這種Page結(jié)構(gòu)里。Page分為幾種類型,常見的頁類型有數(shù)據(jù)頁(B-tree Node)Undo頁(Undo Log Page)系統(tǒng)頁(System Page) 事務(wù)數(shù)據(jù)頁(Transaction System Page)等。單個Page的大小是16K(編譯宏UNIV_PAGE_SIZE控制),每個Page使用一個32位的int值來唯一標(biāo)識,這也正好對應(yīng)InnoDB最大64TB的存儲容量(16Kib * 2^32 = 64Tib)。一個Page的基本結(jié)構(gòu)如下圖所示:

MySQL的InnoDB索引原理詳解

每個Page都有通用的頭和尾,但是中部的內(nèi)容根據(jù)Page的類型不同而發(fā)生變化。Page的頭部里有我們關(guān)心的一些數(shù)據(jù),下圖把Page的頭部詳細(xì)信息顯示出來:

MySQL的InnoDB索引原理詳解

我們重點關(guān)注和數(shù)據(jù)組織結(jié)構(gòu)相關(guān)的字段:Page的頭部保存了兩個指針,分別指向前一個Page和后一個Page,頭部還有Page的類型信息和用來唯一標(biāo)識Page的編號。根據(jù)這兩個指針我們很容易想象出Page鏈接起來就是一個雙向鏈表的結(jié)構(gòu)。

MySQL的InnoDB索引原理詳解

再看看Page的主體內(nèi)容,我們主要關(guān)注行數(shù)據(jù)和索引的存儲,他們都位于Page的User Records部分,User Records占據(jù)Page的大部分空間,User Records由一條一條的Record組成,每條記錄代表索引樹上的一個節(jié)點(非葉子節(jié)點和葉子節(jié)點)。在一個Page內(nèi)部,單鏈表的頭尾由固定內(nèi)容的兩條記錄來表示,字符串形式的"Infimum"代表開頭,"Supremum"代表結(jié)尾。這兩個用來代表開頭結(jié)尾的Record存儲在System Records的段里,這個System Records和User Records是兩個平行的段。InnoDB存在4種不同的Record,它們分別是1主鍵索引樹非葉節(jié)點 2主鍵索引樹葉子節(jié)點 3輔助鍵索引樹非葉節(jié)點 4輔助鍵索引樹葉子節(jié)點。這4種節(jié)點的Record格式有一些差異,但是它們都存儲著Next指針指向下一個Record。后續(xù)我們會詳細(xì)介紹這4種節(jié)點,現(xiàn)在只需要把Record當(dāng)成一個存儲了數(shù)據(jù)同時含有Next指針的單鏈表節(jié)點即可。

MySQL的InnoDB索引原理詳解

User Record在Page內(nèi)以單鏈表的形式存在,最初數(shù)據(jù)是按照插入的先后順序排列的,但是隨著新數(shù)據(jù)的插入和舊數(shù)據(jù)的刪除,數(shù)據(jù)物理順序會變得混亂,但他們依然保持著邏輯上的先后順序。

MySQL的InnoDB索引原理詳解

把User Record的組織形式和若干Page組合起來,就看到了稍微完整的形式。

MySQL的InnoDB索引原理詳解

現(xiàn)在看下如何定位一個Record:

1 通過根節(jié)點開始遍歷一個索引的B+樹,通過各層非葉子節(jié)點最終到達(dá)一個Page,這個Page里存放的都是葉子節(jié)點。

2 在Page內(nèi)從"Infimum"節(jié)點開始遍歷單鏈表(這種遍歷往往會被優(yōu)化),如果找到該鍵則成功返回。如果記錄到達(dá)了"supremum",說明當(dāng)前Page里沒有合適的鍵,這時要借助Page的Next Page指針,跳轉(zhuǎn)到下一個Page繼續(xù)從"Infimum"開始逐個查找。

MySQL的InnoDB索引原理詳解

詳細(xì)看下不同類型的Record里到底存儲了什么數(shù)據(jù),根據(jù)B+樹節(jié)點的不同,User Record可以被分成四種格式,下圖種按照顏色予以區(qū)分。

1 主索引樹非葉節(jié)點(綠色)

1 子節(jié)點存儲的主鍵里最小的值(Min Cluster Key on Child),這是B+樹必須的,作用是在一個Page里定位到具體的記錄的位置。

2 最小的值所在的Page的編號(Child Page Number),作用是定位Record。

2 主索引樹葉子節(jié)點(黃色)

1 主鍵(Cluster Key Fields),B+樹必須的,也是數(shù)據(jù)行的一部分

2 除去主鍵以外的所有列(Non-Key Fields),這是數(shù)據(jù)行的除去主鍵的其他所有列的集合。

這里的1和2兩部分加起來就是一個完整的數(shù)據(jù)行。

3 輔助索引樹非葉節(jié)點非(藍(lán)色)

1 子節(jié)點里存儲的輔助鍵值里的最小的值(Min Secondary-Key on Child),這是B+樹必須的,作用是在一個Page里定位到具體的記錄的位置。

2 主鍵值(Cluster Key Fields),非葉子節(jié)點為什么要存儲主鍵呢?因為輔助索引是可以不唯一的,但是B+樹要求鍵的值必須唯一,所以這里把輔助鍵的值和主鍵的值合并起來作為在B+樹中的真正鍵值,保證了唯一性。但是這也導(dǎo)致在輔助索引B+樹中非葉節(jié)點反而比葉子節(jié)點多了4個字節(jié)。(即下圖中藍(lán)色節(jié)點反而比紅色多了4字節(jié))

3 最小的值所在的Page的編號(Child Page Number),作用是定位Record。

4 輔助索引樹葉子節(jié)點(紅色)

1 輔助索引鍵值(Secondary Key Fields),這是B+樹必須的。

2 主鍵值(Cluster Key Fields),用來在主索引樹里再做一次B+樹檢索來找到整條記錄。

MySQL的InnoDB索引原理詳解

下面是本篇最重要的部分了,結(jié)合B+樹的結(jié)構(gòu)和前面介紹的4種Record的內(nèi)容,我們終于可以畫出一幅全景圖。由于輔助索引的B+樹與主鍵索引有相似的結(jié)構(gòu),這里只畫出了主鍵索引樹的結(jié)構(gòu)圖,只包含了"主鍵非葉節(jié)點"和"主鍵葉子節(jié)點"兩種節(jié)點,也就是上圖的的綠色和黃色的部分。

MySQL的InnoDB索引原理詳解

把上圖還原成下面這個更簡潔的樹形示意圖,這就是B+樹的一部分。注意Page和B+樹節(jié)點之間并沒有一一對應(yīng)的關(guān)系,Page只是作為一個Record的保存容器,它存在的目的是便于對磁盤空間進(jìn)行批量管理,上圖中的編號為47的Page在樹形結(jié)構(gòu)上就被拆分成了兩個獨(dú)立節(jié)點。

MySQL的InnoDB索引原理詳解

至此本篇就算結(jié)束了,本篇只是對InnoDB索引相關(guān)的數(shù)據(jù)結(jié)構(gòu)和實現(xiàn)進(jìn)行了一些梳理總結(jié),并未涉及到Mysql的實戰(zhàn)經(jīng)驗。這主要是基于幾點原因:

1 原理是基石,只有充分了解InnoDB索引的工作方式,我們才有能力高效的使用好它。

2 原理性知識特別適合使用圖示,我個人非常喜歡這種表達(dá)方式。

3 關(guān)于InnoDB優(yōu)化,在《高性能Mysql》里有更加全面的介紹,對優(yōu)化Mysql感興趣的同學(xué)完全可以自己獲取相關(guān)知識,我自己的積累還未達(dá)到能分享這些內(nèi)容的地步。

另:對InnoDB實現(xiàn)有更多興趣的同學(xué)可以看看Jeremy Cole的博客(參考文獻(xiàn)三篇文章的來源),這位老兄曾先后在Mysql,Yahoo,Twitter,Google從事數(shù)據(jù)庫相關(guān)工作,他的文章非常棒!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 欧美综合视频在线观看 | 国产精品主播 | 久久久久国产综合av天堂 | 九九视频精品在线 | 国产精品999久久久 国产精品99精品 | 国产在线成人 | 99精品久久久久久久免费看蜜月 | 老妇肥熟凸凹丰满刺激 | 亚洲天堂五月天 | 黄色男人的天堂 | 国产亚洲精品久久久久久青梅 | 欧美日韩123 | 国产成人午夜高潮毛片男男爱 | 免费毛片大肚孕妇孕交av | 亚洲xxx视频 | 亚洲操图| 国产精品涩涩涩视频网站 | 国产98在线 | 免费、 | 里番本子纯肉侵犯肉全彩无码 | 欧美性在线视频 | 日韩精品免费一区二区三区竹菊 | 中文人妻熟女乱又乱精品 | 91色蝌蚪 | 亚洲欧美激情国产综合久久久 | 奇米婷婷 | 国产成人aaa | 红杏成av人影院在线观看 | 国产伦精品一区二区三区免.费 | 麻豆文化传媒精品一区 | 国产午夜福利100集发布 | 91视频xxx| 制服丝袜av无码专区 | 精久久久久 | 欧美一二三四五区 | 97国产精品久久久 | 日本五月天婷久久网站 | 国产国产精品久久久久 | 69亚洲| 夜夜爽爽 | 美女考逼 | 91网站免费在线观看 | 亚洲欧美中文日韩在线v日本 | 日本熟妇色xxxxx日本免费看 | 中国香蕉视频 | 久久av资源| 50一60岁老妇女毛片 | 在线不卡日本 | 久久国产日韩 | 懂色av一区二区三区免费观看 | 婷婷综合五月天 | 亚洲精品9999久久久久 | 亚洲第99页 | 国产页 | 精品国产乱码久久久久久88av | 在线看av网址 | 成年人午夜视频在线观看 | 激情综合网五月婷婷 | 成人黄色在线观看 | 国产精品乱码久久久久 | 岛国精品在线观看 | 夜夜精品视频 | 亚洲精品久久7777777 | 国产亚洲精品久久久久久久久久久久 | 欧美a级大胆视频 | 九一亚色视频 | 久久综合成人 | 亚洲国产精品综合久久网各 | 国产剧情av网站 | 亚洲中文字幕无码久久 | 中国少妇内射xxxhd免费 | 夜夜躁狠狠躁日日躁 | 韩日午夜在线资源一区二区 | 亚洲精品影视 | 国产精品一区二区毛片 | 亚洲天堂三区 | 一级片在线播放 | 日韩va在线| 欧美黑人又粗又大又爽免费 | 免费欧美一级片 | 成人黄色大片在线观看 | 精品无人区一区二区三区 | 99热6这里只有精品 99热99re6国产在线播放 | xxx一区二区 | 寂寞少妇让水电工爽了视频 | 精品国产乱码久久久久久免费 | 日本在线中文 | 成人aaa片一区国产精品 | 黄色的网站免费看 | 亚洲精品在线不卡 | 日韩永久免费 | 精品欧洲av无码一区二区 | 欧美黄色a视频 | 日韩av无码社区一区二区三区 | 激情伊人网 | 国产精品爽爽v在线观看无码 | 女人扒开腿让男人桶到爽 | 一性一交一摸一黄按摩精油视频 | 久久综合中文字幕 | 亚洲精品18 | 日韩精品亚洲一区 | 国产精品网站视频 | 色七七亚洲 | 国产高清在线观看 | 日韩人妻ol丝袜av一二区 | jizz在亚洲| 久青草国产在视频在线观看 | 强行18分钟处破痛哭av | 国产精品久久久久免费观看 | 日本视频高清一区二区三区 | 妺妺窝人体色www聚色窝 | 久久久毛片 | www.香蕉.com| 中文字幕丝袜精品久久 | 嫩草影院在线视频 | 色翁荡熄又大又硬又粗又动态图 | 国产主播啪啪 | 丁香八月婷婷 | 三级黄色免费网站 | 国产情侣主伺候绿帽男m | 日本午夜免费福利视频 | 粉嫩一区 | 羞羞色视频 | 免费国产又色又爽又黄的软件 | 九色琪琪久久综合网天天 | 久久精品国产精品青草 | 亚洲成av人片在线观看天堂无码 | 久久久久国产精品免费免费搜索 | 日韩精品人成在线播放 | 丰满少妇一级片 | 亚洲午夜福利在线观看 | 岛国在线免费视频 | 天天色天天色 | 狠狠色婷婷久久综合频道毛片 | 一本大道久久东京热无码av | 日日噜噜夜夜狠狠视频 | 人人草人 | а天堂中文在线官网在线 | 日韩av黄色片 | 91日韩视频| 欧美黄色特级视频 | 精品人伦一区二区三区四区蜜桃牛 | 深夜福利麻豆 | 国产精品h片在线播放 | 51综合区亚洲线观看 | 日韩一级免费视频 | 少妇扒开双腿自慰出白浆 | 2023年国产嫩草| 欧美日韩精品 | 国产破苞第一次 | 国模大尺度啪啪 | 国产精品三区四区 | 在线免费观看亚洲视频 | 亚洲免费网站在线观看 | 超清av在线 | 日韩中文在线字幕 | 免费无码又爽又黄又刺激网站 | 亚洲人成伊人成综合网小说 | 亚洲成av人片在线播放无码 | 亚洲欧美日韩国产手机在线 | 亚洲成人在线免费 | 成人黄色网 | 黄色一级带 | 91久久国产露脸精品国产闺蜜 | 日韩无套无码精品 | 99精品视频免费版的特色功能 | 国产精品自在线拍国产手机版 | 国产特级黄色录像 | 肉欲性毛片交38 | 乱辈侵犯中文字幕 | 爱情岛成人18 | 岛国av免费在线 | 少妇爆乳无码专区 | 黄色在线视频网址 | 日本淫片免费啪啪3 | 欧美一区二区久久久 | 久草在线最新视频 | 青青草伊人久久 | 67194成人 | 香蕉久久精品日日躁夜夜躁夏 | 67194午夜| 免费在线看黄视频 | 久久人妻少妇嫩草av | 国精产品乱码视频一区二区 | 风韵丰满熟妇啪啪区老老熟妇 | 欧美综合激情 | 香港一级淫片免费放 | 精品一区二区三区四区外站 | 福利资源在线 | 国产一区二区在线视频 | 日本理论片免费观看在线视频 | 日本公与丰满熄 | www.日韩在线 | 久久久18| 欧美激情欲高潮视频在线观看 | 日日碰狠狠丁香久燥 | 超碰日韩 | 超碰婷婷 | 欧美久久精品 | 国产一区二区av在线 | 老司机午夜在线 | 高h禁伦1v1公妇借种 | 国产91精品露脸国语对白 | 少妇激三级做爰在线观看 | 日本美女色视频 | 波多野结衣高清一区二区三区 | 欧美一区二区三区爽爽爽 | 黄色激情毛片 | 在线观看亚洲精品视频 | 国产va在线观看免费 | 在线欧美色| 天天射天天操天天干 | 377p欧洲日本亚洲大胆 | 成人在线视频一区二区 | 国产无遮挡a片又黄又爽 | 爆操欧美| 亚洲天堂中文 | 伊人久久久久久久久久久久久 | 久久婷婷五月国产色综合 | 黑人做爰xxxⅹ性少妇69小说 | 国产成人av综合色 | 男女高潮又爽又黄又无遮挡 | 丰满岳妇伦在线播放 | 奇米影视亚洲狠狠色 | 未满成年国产在线观看 | 18国产精品福利片久久婷 | 久久夜夜夜 | 亚洲男人的天堂在线 | 欧美一区2区三区4区贰佰公司 | 国产午夜不卡av免费 | 中国 免费 av | 男人的天堂av高清在线 | 国产高清在线精品一区二区三区 | 久久免费观看视频 | 亚洲女成人图区 | 欧美超碰在线观看 | 亚洲麻豆一区二区三区 | 国产精品久久久久久久久久久久久久久久 | 免费黄色片视频 | 国产婷婷色一区二区三区在线 | 欧美野外疯狂做受xxxx高潮 | 国产激情一区二区三区 | 非洲人与性动交ccoo | 日本打白嫩屁股视频 | 超碰97自拍 | www.色就是色 | 亚洲精品日韩av | 可以在线看黄的网站 | 夜夜爽久久精品91 | 无码少妇一区二区三区芒果 | 国产亚洲精品久久久久久 | 无码人妻精品一区二区三区夜夜嗨 | 99精品视频国产 | 午夜精品久久久内射近拍高清 | 主播粉嫩国产在线精品 | 免费av一区二区 | 亚洲激情精品 | 成人免费av在线播放 | 欧美精品久久久久久久久久 | 日韩视频在线观看一区二区三区 | 天天干天天色综合 | 特级黄色毛片 | 欧美日韩一区二区区别是什么 | 日韩一区二区三区射精 | 欧美精品videos性欧美 | 四虎影像 | 国产精品第一页在线观看 | 青青精品视频 | 男女啪啪做爰高潮www成人福利 | 逼逼av网站 | 日韩在线一区二区三区 | 亚洲天堂五月天 | 无人在线观看的免费高清视频 | 亚洲国产精品日韩av不卡在线 | 国产精品视频一 | 国产精品久久香蕉免费播放 | 国产亚洲精品久久久久久牛牛 | av色综合久久天堂av色综合在 | 日韩精品一区二区三区不卡 | 一本色道久久亚洲精品加勒比 | 亚洲欧洲色图 | 涩涩网站在线看 | 日本乱偷互换人妻中文字幕 | 成人精品网站在线观看 | 红猫大本营在线观看的 | 亚洲精品无吗 | 亚洲激情网 | av色资源| 美女黄色片子 | 99在线精品免费视频 | 久久婷婷五月综合色丁香 | 69国产精品| 久久久www成人免费毛片麻豆 | 波多野结衣 黑人 | 麻豆精品乱码一二三区别蜜臀在线 | 剧情av在线 | 色哟哟视频 | 99热91| 久久精品亚洲精品国产欧美kt∨ | 久久人妻无码一区二区 | 两根大肉大捧一进一出好爽视频 | 正在播放亚洲精品 | 国产乱了真实在线观看 | 国产精品乱码人妻一区二区三区 | 在线资源av | 国产女女 | 成人黄色免费视频 | 免费网站色 | 一本一道av无码中文字幕麻豆 | 国产第一草草影院 | 99国产偷伦视频在线观看 | 日韩中文字幕 | 国产免费无遮挡吸奶头视频 | 在线观看视频一区二区 | 欧美激情一二区 | 日本japanese丰满少妇 | 久久久久97国产精华液 | 无码国产精品一区二区免费式影视 | 国产区一二三 | 亚洲国产精品一区二区成人片国内 | 91成人福利在线 | .精品久久久麻豆国产精品 国产精品久久毛片 | 中文字字幕在线中文 | 欧美性猛交ⅹxxx乱大交妖精 | 日本欧美黄色 | 欧美日本韩国一区二区三区 | 在线观看日批 | 综合 欧美 亚洲日本 | www.68av蜜桃亚洲精品 | 国产精品sm | 免费在线观看污 | 噜噜噜在线观看免费视频日本 | 成人福利在线看 | 亚洲视屏在线观看 | 中国美女牲交视频 | 国精品无码一区二区三区左线 | 永久免费毛片在线播放 | 亚洲一区二区三区在线 | 国语精品对白露脸少妇网站 | 亚洲av成人精品毛片 | 国产在线精品无码二区 | 欧美日韩亚洲国产精品 | 四虎永久免费地址 | 亚洲精品ww久久久久久p站 | 另类 欧美 日韩 国产 在线 | 狠狠色狠狠色综合网 | 妇挑战三黑人4p日本中文字幕 | 亚洲东方av | 精品久久精品 | 日韩av在线不卡 | 午夜影院欧美 | 日本videos多次高潮 | 成人国产片 | 激情视频网站 | 一区二区三区乱码在线 | 欧洲 | av站| 色欲久久久天天天综合网精品 | 国产youjizz| 欧美日韩一区二区在线视频 | 国产在线精品播放 | 国产中年夫妇交换高潮呻吟 | 欧美精品一区二区三区在线 | 精品国精品国产自在久不卡 | 亚洲男女激情 | 300部国产真实乱 | 国产成人在线免费 | 天天综合网永久 | 青草视屏 | 香港三日三级少妇三级99 | 看黄色一级 | 久久夜色精品国产噜噜av | www.国产视频.com | 欧美视频xxx | 一区二区在线观看免费视频 | 精品亚洲一区二区三区在线观看 | 毛片无遮挡高清免费观看 | 国产白嫩护士被弄高潮 | 免费成人在线网站 | 好男人社区www在线观看 | 欧美真人做爰在线观看 | 99久久久无码国产精品免费 | 中文字幕无码精品亚洲资源网久久 | 亚洲丶国产丶欧美一区二区三区 | 日本一级少妇免费视频乌克兰裸体 | 手机在线看片福利 | 国产福利91 | 成人三级黄色片 | 国产伦精品一区二区三区高清 | 亚洲视频免费在线播放 | 色哟哟精品一区二区 | av二区在线| 人人看人人射 | 亚洲国产成人精品女人久久久 | 国产美女视频免费观看的软件 | 一级二级毛片 | 国产乱对白刺激在线视频 | 九九99久久 | 40岁干柴烈火少妇高潮不断 | 日本美女a级片 | 一区不卡在线观看 | 久热中文 | 国产乱淫片视频 | 欧美黑人大战白嫩在线 | 秋霞福利影院 | 日本六九视频69jzz | 漂亮人妻被中出中文字幕 | 久久精品视频国产 | 国产亚洲精品久久久久5区 国产亚洲精品久久久久久 国产亚洲精品久久久久久国模美 | 妻色成人网| 在线国产二区 | 日本欧美一区二区三区在线播放 | 麻豆精品一区二区综合av | 中文字幕av在线免费观看 | 欧美精品亚洲 | 日韩一区二区在线免费观看 | 久久亚洲精品国产亚洲老地址 | 午夜亚洲www湿好爽 2018天天拍拍天天爽视频 | 一二三区在线视频 | 韩国午夜三级 | 中文字幕精品av一区二区五区 | 免费黄色一级大片 | 久久国产欧美日韩精品图片 | 亚洲天堂麻豆 | 九一精品国产 | 欧美日韩69| 亚洲污视频 | 日本饥渴人妻欲求不满 | av网址免费在线观看 | caopor在线| 欧美激情一级 | 一卡二卡三卡四卡在线 | 国产婷婷久久 | 亚洲成av人片一区二区梦乃 | 天天操天天拍 | www亚洲视频com | 天天干天天摸天天操 | 天天操操夜夜操操 | 亚洲va成无码人在线观看天堂 | 亚洲国产欧美另类 | 日本人jizz | 在线射 | 国产美女作爱视频 | 久久999精品久久久有什么优势 | 99久久综合精品五月天 | 国产美女视频一区二区三区 | 国内少妇偷人精品视频免费 | 中文字幕日韩三级 | 午夜 国产 | 男女又爽又黄激情免费视频大 | 99久久精品久久久久久ai换脸 | 国产伦精品一区二区三区视频我 | 女同久久另类99精品国产 | 奇米四色777 | 91精品啪在线观看国产商店 | 又爽又黄axxx片免费观看 | 国产无遮挡一区二区三区毛片日本 | 偷拍各种高潮xxx | 国产乱码在线观看 | 国产日韩久久久久 | 羞羞的网站在线观看 | 国产一精品av一免费爽爽 | 深夜福利在线观看视频 | 五月婷婷丁香 | 成年人免费网站在线观看 | 国产成人久久精品77777的功能 | 日本精品婷婷久久爽一下 | 少妇人妻偷人精品一区二区 | 狠狠搞av| 日韩激情一区 | 美女胸又黄又水 | 三极片黄色 | 99精产国品一二三产区nba | www.色亚洲 | 男女做爰真人视频直播 | 91综合在线 | gav成人网免费免播放器播放 | 国产精品传媒在线观看 | 国产精品自拍在线观看 | 欧美一级色 | 男人的天堂你懂的 | 日韩性插 | 青青草视频网站 | 国产日韩网站 | 精品精品国产高清a毛片 | 99蜜桃臀精品视频在线观看 | 天堂中文在线播放 | 免费一级特黄3大片视频 | 日韩啊v | 真实国产老熟女粗口对白 | 成人免费大全 | 香蕉视频在线播放 | 丝袜视频一区 | 欧美九九 | 一区二区三区四区产品乱 | 宅男噜噜噜66网站在线观看 | 欧美性视频一区二区三区 | 美女视频黄a视频全免费 | 成人高清免费 | 久久久久九九九九 | 在线免费观看日本 | 韩国日本在线 | 日本人体一区 | 天天干夜夜草 | 成人亚洲国产精品一区不卡 | 波多野结衣乳巨码无在线观看 | 国产精品久久久久久久不卡 | 国产精品欧美一区二区三区不卡 | 国产色视频在线播放 | 波多野结衣乳喷高潮视频 | 久久精品国产99久久99久久久 | 国产动作大片中文字幕 | 久久亚洲私人国产精品va | 日本大胆人体视频 | 又嫩又硬又黄又爽的视频 | 国产精品美女乱子伦高 | 亚洲国产网址 | 91香焦视频 | 国产超高清麻豆精品传媒麻豆精品 | 古装做爰无遮挡三级聊斋艳谭 | 日韩精品视频免费 | av中文字幕潮喷人妻系列 | 少妇人妻综合久久中文字幕 | 天天躁日日躁狠狠躁 | 99在线视频精品 | 伊人毛片| 高清二区| 免费看黄色一级大片 | 日韩一二区 | 亚洲视频免费在线 | 日韩精品无 | 橘梨纱av一区二区三区在线观看 | 老司机一区二区 | 丝袜老师办公室里做好紧好爽 | 99re在线视频免费观看 | 久草免费在线播放 | 91ts国产人妖系列 | 中文字幕无码乱码人妻系列蜜桃 | 大香伊人 | 无码人妻精品一区二区三区9厂 | 免费一级做a爰片性色毛片 免费一级做a爰片性视频 | 狠狠躁天天躁无码中文字幕 | 毛片xxx | 最近日本免费观看高清视频 | av中文资源 | 成人高潮片免费视 | 女女女女女裸体处开bbb | 亚洲一区日韩在线 | 亚洲最大成人免费视频 | 手机av免费在线 | 成人午夜性影院 | 91精品国产综合久久国产大片 | 色婷婷狠狠五月综合天色拍 | 日日碰狠狠添天天爽超碰97久久 | www天堂在线| 黄网免费在线观看 | 香蕉视频网页版 | 成人黄色国产 | 性高湖久久久久久久久 | 亚洲h片 | 香港裸体三级aaaaa | 性一交一乱一乱视频 | 国产精品一级视频 | 欧美大片免费观看网址 | 欧美另类激情 | 日韩欧美久久精品 | 风间由美乳巨码无在线 | 国产欧美日韩成人 | 免费黄色毛片视频 | 日日摸夜夜添夜夜添国产2020 | 国内老熟妇对白hdxxxx | 中国一级簧色带免费看 | 欧美午夜一区 | 欧美香蕉在线 | 欧美成人免费一区二区三区视频 | 91精品一区二区三区在线观看 | 在线观看国产网站 | 欧美野外疯狂做受xxxx高潮 | 欧美性受xxxx黑人猛交 | 麻豆做爰免费观看 | 国产精品一区二区在线观看网站 | 欧美国产日韩亚洲中文 | 极品白嫩丰满美女无套 | 国产18精品乱码免费看 | 成人免费看吃奶视频网站 | 丰满婷婷久久香蕉亚洲新区 | 久久国产原创 | 色无极亚洲色图 | jzzijzzij日本成熟少妇 | 天天躁日日躁狠狠躁喷水 | 国产无套白浆一区二区 | 天天摸天天透天天添 | 浪荡受张腿灌满双性h男男 老妇肥熟凸凹丰满刺激小说 | 亚洲国产欧美精品 | 天天色天天草 | 人妻 丝袜美腿 中文字幕 | 亚洲精品在线免费看 | 免费看成人aa片无码视频羞羞网 | 小辣椒福利视频导航 | 亚洲第一成年免费网站 | 好大好硬好爽免费视频 | 免费网站看v片在线18禁无码 | 国产日韩视频在线观看 | 岛国一区二区 | √8天堂资源地址中文在线 √天堂 | 亚欧中文字幕 | 成人黄色激情视频 | www.国产二区| 亚洲人午夜精品 | 黄 色 软件 成 人在线 | 波多野结衣中文字幕一区二区三区 | 国色天香乱码区 | 天天做天天爱夜夜爽少妇 | 夫妻免费无码v看片 | 日b免费视频 | 国产av国片精品有毛 | 91精品又粗又猛又爽 |