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

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

MySQL的InnoDB索引原理詳解

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

本篇介紹下Mysql的InnoDB索引相關知識,從各種樹到索引原理到存儲的細節。

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

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

1 各種樹形結構

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

先看看幾種樹形結構:

1 搜索二叉樹:每個節點有兩個子節點,數據量的增大必然導致高度的快速增加,顯然這個不適合作為大量數據存儲的基礎結構。

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

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

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

MySQL的InnoDB索引原理詳解

MySQL的InnoDB索引原理詳解

MySQL的InnoDB索引原理詳解

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

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

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

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

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

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

MySQL的InnoDB索引原理詳解

2 Mysql的存儲引擎和索引

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

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

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

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

MySQL的InnoDB索引原理詳解

MySQL的InnoDB索引原理詳解

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

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

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

3 Page結構

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

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

MySQL的InnoDB索引原理詳解

每個Page都有通用的頭和尾,但是中部的內容根據Page的類型不同而發生變化。Page的頭部里有我們關心的一些數據,下圖把Page的頭部詳細信息顯示出來:

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

現在看下如何定位一個Record:

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

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

MySQL的InnoDB索引原理詳解

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

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

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

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

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

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

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

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

3 輔助索引樹非葉節點非(藍色)

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

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

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

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

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

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

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

MySQL的InnoDB索引原理詳解

至此本篇就算結束了,本篇只是對InnoDB索引相關的數據結構和實現進行了一些梳理總結,并未涉及到Mysql的實戰經驗。這主要是基于幾點原因:

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

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

3 關于InnoDB優化,在《高性能Mysql》里有更加全面的介紹,對優化Mysql感興趣的同學完全可以自己獲取相關知識,我自己的積累還未達到能分享這些內容的地步。

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

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 国产欧美精品一区二区三区 | 免费成人av | 亚洲高清视频一区二区 | 日韩中文字幕视频 | 久久99一区二区 | www久久精品 | 午夜免费片 | 九九热精品视频在线观看 | 91免费版在线观看 | 人人鲁人人莫一区二区三区 | 亚洲综合无码一区二区 | 在线播放一区二区三区 | 亚洲第一色片 | 在线精品亚洲欧美日韩国产 | 91精品国产自产精品男人的天堂 | 日韩一二三区在线观看 | 国产91在线观看 | 四季久久免费一区二区三区四区 | 欧美精品色网 | 亚洲成人av在线播放 | 国产美女一区二区 | 国产精品高清在线 | 欧美不卡一区二区 | 亚洲一区二区三区四区五区午夜 | 欧美男人天堂 | 日韩av免费在线播放 | 欧美成年黄网站色视频 | 国产一区精品在线 | 欧美日韩视频一区二区 | 日本一区二区高清不卡 | 成人精品一区二区 | 精品一区二区久久久久久久网站 | 黄色片网站在线免费观看 | 一级毛片在线 | 国产精品国产a级 | 成人国产精品免费观看 | 一区二区三区久久 | 成人免费淫片aa视频免费 | 亚洲一区电影 | 日韩国产 | 精品在线视频观看 | 亚洲男人的天堂在线 | 影音先锋亚洲精品 | 久久久亚洲一区 | 久在线视频 | 精品久久久一区 | 亚洲精区 | www.亚洲一区 | 亚洲成人国产精品 | а√天堂中文在线资源8 | 国产精品毛片无码 | 久久一区二区三区四区 | 日本日韩中文字幕 | 精品视频 | 亚洲一区二区三区 | 久久国产一区二区 | 亚洲精品综合 | 国产视频一二三区 | 97视频精品 | 99热免费在线| 在线播放亚洲 | 欧美日韩一级视频 | 欧美视频免费在线 | 精品日韩一区二区 | www国产成人免费观看视频,深夜成人网 | 狠狠操中文字幕 | www.久久99| av网站免费线看 | 亚洲午夜精品一区二区三区他趣 | 亚洲欧美日韩国产综合精品二区 | 国产精品久久精品 | 国产精品一品二区三区的使用体验 | 精品一区二区三区在线视频 | 在线观看精品自拍私拍 | 激情欧美日韩一区二区 | 欧美bbbxxx| 视频在线一区二区 | 操操网 | 午夜天堂精品久久久久 | 精品久久一区二区三区 | 青草福利| 欧美高清视频一区 | 日日摸夜夜添夜夜添高潮视频 | 国产大学生援交视频在线观看 | 日韩国产在线 | 免费爱爱视频 | 久久青青 | a级三四级黄大片 | 国产视频精品视频 | www日韩欧美 | 蜜桃视频网站在线观看 | 亚洲高清视频在线观看 | 亚洲视频在线播放 | 欧美极品一区 | 国产精品无码专区在线观看 | 一级黄色大片在线 | 蜜桃视频一区 | 久久午夜影院 | 国产乱码精品一区二区三区忘忧草 | 欧美激情a∨在线视频播放 中文字幕网在线 | 自拍偷拍亚洲视频 | 美女天天操 | 视频一区在线 | 国产宾馆自拍 | 亚洲一区中文字幕 | 国产中文字幕在线 | 国产精品日韩三级 | 伊人激情四射 | 黄色在线视频网 | 波多野结衣一二三 | www.亚洲| 欧美一级淫片免费视频黄 | 亚洲精品在线网站 | 不卡的一区二区 | 亚洲精品视频在线看 | 久久y| 欧美性网 | 亚洲国产精品一区 | 国产二区视频 | 最新黄色网页 | 精产国产伦理一二三区 | 麻豆产精国品免费入口 | 日本欧美久久久久免费播放网 | 一区视频 | 欧美福利专区 | 亚洲精选一区 | 国产一级纯肉体一级毛片 | 日韩一级电影在线 | av一区二区三区 | 日韩精品www | 精品视频在线观看 | 日韩中文字幕在线播放 | 伊人久久婷婷 | 精品国产依人香蕉在线精品 | h在线免费 | 日韩在线播放一区二区三区 | 色com | 国产精品毛片一区视频播 | 国产老女人精品毛片久久 | 羞羞午夜 | 91精品国产综合久久久久久软件 | 天天操导航 | 人人玩人人干 | 性培育学校羞耻椅子调教h 欧美精品网站 | 欧美日韩一区二区三区在线观看 | jjzz18国产| 亚洲国产精品人人爽夜夜爽 | 国产精品高潮呻吟av久久4虎 | 精品国产欧美 | 黄色一级毛片 | 91精品久久久久久久91蜜桃 | 黄色一级毛片在线观看 | 日韩成人精品 | 欧美午夜一区二区三区免费大片 | 亚洲视频自拍 | 午夜专区| 欧美日韩中文在线观看 | 一区二区三区四区免费看 | 成人影院在线 | 亚洲国产字幕 | 久久国产日韩 | 国产精品久久久久久久久久久久久久 | 日韩国产精品一区二区 | www.成人.com | 亚洲国产成人精品女人久久久 | 亚洲美女久久 | 看毛片软件 | 久久精品亚洲精品国产欧美kt∨ | 久草精品在线观看 | 亚洲精品美女久久久 | 99福利视频 | 日韩成人高清 | 欧美成人精品一区二区男人看 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 中文字幕一区二区三区在线视频 | 视频一区二区三区在线观看 | 国产成年免费视频 | 亚洲人人| 欧美一区二区在线免费观看 | 成人免费视频网址 | 中国一级大黄大黄大色毛片 | 黄色最新网站 | 日韩精品一区二区三区第95 | 中文字幕国产视频 | 91影院在线观看 | 国产又色又爽又黄 | 国产精品1区2区在线观看 | 日本一区二区三区在线视频 | 久久久久国产精品午夜一区 | 精品一区二区三区免费视频 | 国产一极片 | 精品久久久久久国产 | 国产成人免费视频网站高清观看视频 | 日本a在线| 麻豆免费短视频 | 最新日韩在线观看视频 | 99精品国产高清一区二区麻豆 | 国产亚洲一区二区三区在线观看 | 亚洲h视频| 亚洲在线视频 | 日韩精品在线免费 | 国产一区二区视频在线观看 | 精品国产一区二区在线 | 国产成人在线看 | 国产视频中文字幕 | 国产一区二区在线电影 | 国产日本欧美在线 | 久久天堂 | 福利午夜 | 日日摸天天爽天天爽视频 | 欧美一区二区三区xxxx监狱 | 久久国产精品久久久久久 | 一区二区三区不卡视频 | 成人在线网址 | 午夜日韩| 毛片一级| 美女国产精品 | 欧美精品三区 | 久久99精品久久久久久久青青日本 | 精品午夜久久久 | 日本不卡免费新一二三区 | 亚洲高清视频一区二区三区 | 男人的天堂久久 | 丝袜+亚洲+另类+欧美+变态 | 欧美综合一区二区 | 免费的一级黄色片 | 中文字幕一区二区三区四区 | 日本亚洲视频 | 亚洲一级毛片 | 午夜视频在线观看网站 | 91亚洲国产成人久久精品网站 | 久久成人精品一区二区三区 | 激情欧美日韩一区二区 | 国产丝袜一区二区三区免费视频 | 国产精品一区二区三区在线播放 | 禁果av一区二区三区 | 99久久99| 黄视频网站免费观看 | 日本久久精品一区二区 | 欧美一区永久视频免费观看 | 精品视频一区二区三区在线观看 | 国产伦精品久久久一区二区三区 | 亚洲成人av一区二区三区 | 国产精品亚洲一区 | 欧美日韩电影一区 | 久久91| 韩日av在线 | 国产毛片视频 | 色视频网站在线观看 | 50人群体交乱视频 | 国产精品久久久久久久久久免费 | 国产精品成人一区二区 | 国产一区高清 | 日韩欧美一级精品久久 | 中文字幕精品一区久久久久 | 在线观看国产精品一区 | 色中色综合 | 亚洲第一男人天堂 | 欧美国产在线观看 | 国产第一页在线播放 | 亚洲视频中文字幕 | cao视频| 久久久网站 | 可以看av的网站 | 国产精品入口麻豆www | 欧美伊人影院 | 在线国产一区二区 | 日韩成人精品 | 桃花久久 | 国产综合在线视频 | 国产ts人妖另类 | 国产精品黄网站在线观看 | www.一级电影 | 97久久精品午夜一区二区 | 日韩视频一区二区三区 | 夜添久久精品亚洲国产精品 | 91精品久久久久久久久中文字幕 | 国产成人免费视频网站高清观看视频 | 成人精品一区二区三区中文字幕 | 夜本色| 亚洲国产午夜视频 | av2014天堂网| 91丁香 | 在线日韩视频 | 色性视频 | 久久麻豆视频 | 欧美精品在线一区 | 日韩欧美精品 | 最近的中文字幕在线看视频 | 狠狠操天天干 | 一区二区久久 | 亚洲精品一区在线观看 | 国产日韩在线播放 | 精品国精品国产自在久不卡 | 成人黄色片网站 | 在线视频一区二区 | 欧美一级黄色影院 | 色香蕉久久 | 国产成人久久精品一区二区三区 | 欧美黄视频| 亚洲成人精品视频 | 一级欧美 | 热久久这里只有精品 | 国产目拍亚洲精品99久久精品 | 精品国产不卡一区二区三区 | 国产一区二区精品在线观看 | 91精品国产色综合久久 | 欧美一级高清在线 | 中文字幕成人免费视频 | 国产乱码精品一区二区三区手机版 | 久久这里只有精品首页 | 国产一区二区三区免费 | 精品视频免费在线 | 婷婷免费视频 | 久草福利在线视频 | 神马电影午夜 | 中文字幕 国产精品 | 成人练习生 | 日韩欧美一区二区三区四区 | 国产精品爱久久久久久久 | 99久久精品一区二区成人 | 欧美日韩美女 | 欧美成人二区 | 国产成人免费视频 | 中文字幕 亚洲一区 | 91国内外精品自在线播放 | 免费中文字幕 | 一区二区三区四区 | 欧美一级毛片免费观看 | 欧美日韩一区二区三区四区 | 久免费视频 | 午夜国产一级片 | 亚洲情欲网 | 能在线观看的黄色网址 | 亚洲国产高清视频 | 色综久久 | 一区二区免费在线观看 | 欧美视频在线观看一区 | 精品日韩一区二区 | 日韩欧美国产精品综合嫩v 国产高清av在线一区二区三区 | 欧美精产国品一二三区 | 欧美日韩综合在线 | 久久亚洲一区二区三区四区 | 亚洲精品视频免费看 | 国产精品久久久久久久天堂 | 日韩综合网 | 久久久在线视频 | 成人一区av | 一区二区三区在线免费观看 | 一级毛片免费在线 | 伊人激情av一区二区三区 | 日本福利视频网 | 国产女精品 | 九色在线观看 | 亚洲a网| 亚洲国产视频一区 | 呦一呦二在线精品视频 | 日韩欧美国产一区二区 | 久久综合久久久 | 国产久 | 成年人精品视频在线观看 | 一级黄色国产 | 天天操天天拍 | 中文字幕在线播放不卡 | 久久久国产视频 | 影音先锋久久 | 欧美一区二区三区xxxx监狱 | 国产三级电影 | 国产精品毛片久久久久久久 | 在线久草| 夫妻午夜影院 | 国产小视频网站 | 狠狠狠干| 国产视频一区二区在线 | 国产精国产精品 | 国产精品久久7777 | 国产xnxx| 亚洲欧美视频一区 | 日韩视频网 | 欧美成人免费在线视频 | 欧美一区日韩一区 | 欧美视频精品在线观看 | 国产三级电影 | 天堂成人av| 欧美大片一区二区 | 亚洲一区在线视频 | 91视频网址 | 日韩精品在线一区 | av综合站 | 7878www免费看片 | 日本末发育嫩小xxxx | 久久久久高清 | 成人av免费在线观看 | 天天干天天操 | 国产h片在线观看 | 国产精品18hdxxxⅹ在线 | 欧美日韩成人在线 | 欧美日韩视频 | 天天摸夜夜摸爽爽狠狠婷婷97 | 精品一区二区三区免费看 | 伊人激情综合 | 日韩在线无 | www.国产| 日韩色区 | 亚洲区视频 | 欧美在线视频一区二区 | 成人欧美一区二区三区 | 国产一区二区三区在线免费观看 | 成人免费视频网 | 精品国产一区二区三区久久久蜜月 | 中文字幕在线观看一区二区三区 | 国产精品欧美日韩在线观看 | 国产精品日本欧美一区二区三区 | 7799精品视频天天看 | 成人激情免费视频 | 五月天婷婷丁香 | 国产精品日日 | 欧美日韩国产精品久久久久 | 中文字幕日韩欧美一区二区三区 | 一区二区免费在线 | 精品一区二区av | 国产欧美日韩一区二区三区 | 国产欧美一区二区精品忘忧草 | 久久久精品一区 | 日本在线看 | 在线第一页 | 欧美一级艳情片免费观看 | 99精品国产在热久久 | 欧美日本韩国一区二区三区 | 偷拍自拍第一页 | 最新午夜综合福利视频 | 影音先锋中文字幕在线 | 久久精品视 | 性欧美大战久久久久久久免费观看 | 成人自拍视频 | 中文字幕第一页在线视频 | 精品欧美乱码久久久久久1区2区 | 欧美自拍一区 | 偷拍自拍网站 | 国产精品成人网 | 亚洲日韩中文字幕一区 | 美女操网站 | 国产欧美一区二区精品性色 | 精一区二区 | 中文字幕精品一区 | 欧美精品一区二区三区在线 | 亚洲欧美中文字幕 | 乱人伦xxxx国语对白 | 国产日韩精品视频 | 国产在线一区二区 | 欧美日韩一区二区不卡 | 亚洲视频欧美视频 | 日韩综合一区二区 | 亚洲成人一区二区三区 | 999这里只有是极品 免费的一级黄色片 | 成人性视频在线播放 | 在线观看日韩 | 欧美电影一区二区三区 | 中文字幕国产一区 | www.xxxx在线观看 | 国产香蕉97碰碰久久人人九色 | 国产精品视频一区二区三区 | 国产精品毛片一区视频播 | 久久男人天堂 | www.涩涩视频| 91精品国产91久久久久久久久久久久 | 天天干人人 | 另类 综合 日韩 欧美 亚洲 | 亚洲国产成人精品女人 | 黄色国产一级视频 | 美女又黄又免费 | 欧美精品一区二区蜜臀亚洲 | 欧美高潮 | 日韩免费精品 | 中文字幕1区 | 狠狠av| 午夜黄色影院 | 国产综合精品 | 精品亚洲综合 | 国产免费中文字幕 | 自拍偷拍小视频 | 色噜噜狠狠狠综合曰曰曰88av | 男女羞羞视频在线观看 | 国产精品国产 | 日韩在线观看视频一区二区 | 91高清视频| 91麻豆产精品久久久久久 | 亚洲中午字幕 | 久久亚洲综合 | 国产欧美综合一区二区三区 | 日韩精品视频在线播放 | 在线成人亚洲 | 亚洲高清视频在线 | 天天澡天天狠天天天做 | 国产成人午夜精品影院游乐网 | 亚洲伊人网站 | 久久久久久久 | 国产一区二区视频精品 | 久久久a | www.99re | 久久久av | 亚洲一区二区三区四区在线观看 | 欧美一区二区三区四区视频 | 在线碰 | 四虎最新影视 | 国产在线观看免费 | 精品国产乱码久久久久久1区2区 | 精品国产一区二区三区久久久蜜月 | 精品久久不卡 | 91免费国产 | 一级片免费视频 | 亚洲精品国产综合 | 久久www免费人成看片高清 | 精品久久久久久国产 | 亚洲精品三级 | 欧美精品免费在线观看 | 成人av片在线观看 | 久久99久久98精品免观看软件 | 欧美自拍网| av片在线观看网站 | 嫩草网站入口 | 精品久久久久久久 | 97视频精品 | 国产精品成人在线 | 免费观看的黄色 | 1000部精品久久久久久久久 | 精久久| 狠狠躁夜夜躁人人爽天天高潮 | 欧美1区2区3区 | 伊人av在线| 久操成人 | 国产艳妇av视国产精选av一区 | 国产专区一区二区三区 | 99精品欧美一区二区三区综合在线 | 日韩视频一区 | 久久久精彩视频 | 欧美成人h版在线观看 | 亚洲不卡视频在线 | 亚洲一区二区三区四区五区中文 | 性处破╳╳╳高清欧美 | 婷婷亚洲综合 | 中文成人在线 | 亚洲免费视频网站 | 成人国产在线观看 | 欧美日韩国产综合在线 | 男女视频在线观看 | 欧日韩不卡在线视频 | 精品久久久蜜桃 | 欧美日韩国产精品一区二区 | 精品无人乱码区1区2区3区 | 亚洲国产精品一区二区三区 | 91高清在线| 欧美激情一区二区 | 免费一区二区 | 日韩av成人| 99精品视频一区二区三区 | 免费v片在线观看 | av在线精品 | 国产成人61精品免费看片 | 中文字幕一区二区三区不卡 | 欧美成人高清视频 | 精品99久久久久久 | 亚洲一区二区在线播放 | 成人在线免费 | 国产成人亚洲综合 | 麻豆一区一区三区四区 | 精品久| 亚洲一区二区免费看 | 午夜久久久久 | 精品伊人久久 | 久久高清毛片 | 国产精品一区二区三区免费视频 | 在线精品亚洲欧美日韩国产 | 久久二 | 亚洲视频精品 | 亚洲人成人一区二区在线观看 | 亚洲日韩中文字幕一区 | a∨在线观看 | 成人欧美一区二区 | 亚洲欧美电影 | 久久99操 | 国产 亚洲 网红 主播 | 欧美日韩在线精品 | 亚洲大片69999 | 亚洲欧美日韩在线一区 | 91精品综合久久久久久五月天 | 精品一区二区在线观看 | 亚洲成人一区二区三区 | 一区二区三区在线 | 欧 | 视频一区在线 | 欧美精品综合在线 | 成人精品久久久 | 91国内视频在线观看 | 毛片日韩 | 国产精品美女 | 日韩成人tv | 亚洲欧美第一页 | 91精品国产综合久久久久久蜜月 | 国产精品久久精品 | www.亚洲成人 | 亚洲精品乱码久久久久久国产主播 | 亚洲精品电影在线观看 | 视频一区二区国产 | 国产欧美久久一区二区三区 | 麻豆专区一区二区三区四区五区 | 日韩精品中文字幕在线播放 | 色约约精品免费看视频 | 久久精品久久久久久 | 中文字幕1区 | 中文字幕一二三 | 精品1区2区| 中文字幕乱码一区二区三区 | 日韩6699人妻熟女毛片 | a久久久 | 91麻豆精品国产91久久久更新资源速度超快 |