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

MySQL技術(shù)內(nèi)幕:InnoDB索引技術(shù)

數(shù)據(jù)庫 MySQL
本文主要介紹MySQL InnoDB存儲引擎的索引技術(shù),包含其支持的類型,語法,查看方式,優(yōu)化方式以及對于其中B+ Tree索引的原理和代碼進(jìn)行詳細(xì)的解讀。

0.簡介

本文主要介紹MySQL InnoDB存儲引擎的索引技術(shù),包含其支持的類型,語法,查看方式,優(yōu)化方式以及對于其中B+ Tree索引的原理和代碼進(jìn)行詳細(xì)的解讀。

1.MySQL索引類型介紹

1.1 數(shù)據(jù)結(jié)構(gòu)分類

1)B+ Tree索引:其是基于B+樹數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),支持范圍查詢和排序操作。

CREATE INDEX index_name ON table_name (column_name);

2)哈希索引:使用hash table實(shí)現(xiàn),支持等值的查詢。

CREATE INDEX index_name ON table_name (column_name) USING HASH;

3)全文索引:全文索引是通過倒排索引來實(shí)現(xiàn),用以支持全文搜索。

CREATE FULLTEXT INDEX index_name ON table_name (column_name);

4)R-Tree索引:其基于R-Tree數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),支持空間數(shù)據(jù)查詢。

CREATE SPATIAL INDEX index_name ON table_name (column_name);

1.2 功能分類

1)主鍵索引:唯一標(biāo)識表中每一行數(shù)據(jù),不允許出現(xiàn)null值。

CREATE TABLE table_name (
    id INT PRIMARY KEY,
    ...
);

2)唯一索引:確保索引列的值唯一,允許出現(xiàn)null值。

CREATE UNIQUE INDEX index_name ON table_name (column_name);

3)普通索引:最基本的索引類型,沒有任何約束。

CREATE INDEX index_name ON table_name (column_name);

4)組合索引:基于多個(gè)列創(chuàng)建的索引,其遵循最左前綴索引。

CREATE INDEX index_name ON table_name (column1, column2, ...);

1.3 存儲方式分類

1)聚簇索引:索引的葉子節(jié)點(diǎn)存儲完整的行數(shù)據(jù),一個(gè)表只能有一個(gè),就是主鍵索引。

2)非聚簇索引:索引的葉子節(jié)點(diǎn)存儲主鍵的值或者行指針,一個(gè)表能包含很多的非聚簇索引、非主鍵索引。

2.索引管理

2.1 查看索引

SHOW INDEX FROM table_name;

2.2 刪除索引

DROP INDEX index_name ON table_name;

2.3 修改索引

MySQL對于修改索引沒有支持,可以先刪除再創(chuàng)建。
DROP INDEX index_name ON table_name;
CREATE INDEX new_index_name ON table_name (column_name);

3.索引建立和設(shè)計(jì)原則

3.1 如何判斷是否需要索引

    索引建立的判斷可以分兩步進(jìn)行考慮:1.是否建立索引:主要考慮索引的資源占用,對插入和更新的影響以及備份恢復(fù)的影響;2.索引類型選擇:考慮創(chuàng)建索引以及使用查詢的速度,索引大小,索引支持的類型等。

3.2 設(shè)計(jì)原則

圖片圖片

4. B+ Tree索引原理解讀

4.1 B+ Tree的產(chǎn)生

    建立支持快速范圍查找和排序操作的索引其本質(zhì)上就是建立一個(gè)有序的結(jié)構(gòu),通過使用它來縮小數(shù)據(jù)范圍,將隨機(jī)事件變?yōu)轫樞蚴录D敲磳τ趯?shí)現(xiàn)來說如何快速縮小范圍,最容易想到的是分段和二分查找,但就分段來說,其無法確定分段范圍;而對于二分查找定位,常見的結(jié)構(gòu)是二叉搜索樹,有了搜索方式,接下來就是考慮操作成本,對于數(shù)據(jù)庫系統(tǒng)來說,數(shù)據(jù)在磁盤存儲,所以需要考慮磁盤io,二叉搜索樹作為索引可能面臨多次io(不斷通過指針跳到不同頁面)。

    有了上述操作成本問題,接下來就對于二叉搜索樹進(jìn)行改良,第一個(gè)版本是B樹,其特點(diǎn)和結(jié)構(gòu)如下,可以看到一個(gè)元素就是一個(gè)數(shù)據(jù):

1)多路平衡:每個(gè)節(jié)點(diǎn)可以包含多個(gè)鍵(key)和子節(jié)點(diǎn)。

2)數(shù)據(jù)有序:節(jié)點(diǎn)之間是有序的。

3)平衡:到葉子節(jié)點(diǎn)的各個(gè)路徑深度是符合平衡要求的。

圖片圖片

image.pngimage.png

    可以看到B樹數(shù)據(jù)和key存在一起,這樣一個(gè)頁面存儲的索引信息就會極大減少,同時(shí)范圍掃描要不斷回到父節(jié)點(diǎn),造成更多的磁盤io,B+樹對于這兩點(diǎn)進(jìn)行了改進(jìn),其結(jié)構(gòu)如下:

圖片圖片

圖片圖片

    可以看到,B+樹只有葉子節(jié)點(diǎn)存儲數(shù)據(jù),這樣大大減小了查找數(shù)據(jù)時(shí)的磁盤io,可以看一個(gè)例子,假設(shè)一條記錄為1k,一個(gè)葉子節(jié)點(diǎn)(一個(gè)頁)可以存儲16條記錄,對于非葉子節(jié)點(diǎn)來說,以bigint為索引的話一個(gè)節(jié)點(diǎn)就占用8+6(在innodb中指針為6字節(jié)),這樣一共就是14字節(jié),一頁可以存儲16k/14=1170個(gè)非葉子節(jié)點(diǎn),樹為三層時(shí)就能存儲1170*1170*16,也就是兩千萬左右的數(shù)據(jù)。

4.2 InnoDB聚簇和非聚簇索引查找原理和源碼解析

    聚簇索引的結(jié)構(gòu)就和上一節(jié)圖中一致,可以直接查找到數(shù)據(jù);而非聚簇索引在葉子節(jié)點(diǎn)只記錄主鍵值,獲取數(shù)據(jù)的話再根據(jù)主鍵值進(jìn)行查找。

image.pngimage.png

4.2.1 核心結(jié)構(gòu)和流程

1)數(shù)據(jù)結(jié)構(gòu)
//核心結(jié)構(gòu)如下
/** Persistent cursor */
struct btr_pcur_t;
/** B-tree cursor */
struct btr_cur_t;
/** B-tree search information for the adaptive hash index */
struct btr_search_t;
2)插入:其核心流程包含兩步:1.查找插入位置;2.有空間就直接插入,沒有空間就分裂節(jié)點(diǎn)遞歸插入
/** Tries to perform an insert to a page in an index tree, next to cursor.
 It is assumed that mtr holds an x-latch on the page. The operation does
 not succeed if there is too little space on the page. If there is just
 one record on the page, the insert will always succeed; this is to
 prevent trying to split a page with just one record.
 @return DB_SUCCESS, DB_WAIT_LOCK, DB_FAIL, or error number */
dberr_t btr_cur_optimistic_insert(
    ulint flags,         /*!< in: undo logging and locking flags: if not
                         zero, the parameters index and thr should be
                         specified */
    btr_cur_t *cursor,   /*!< in: cursor on page after which to insert;
                         cursor stays valid */
    ulint **offsets,     /*!< out: offsets on *rec */
    mem_heap_t **heap,   /*!< in/out: pointer to memory heap, or NULL */
    dtuple_t *entry,     /*!< in/out: entry to insert */
    rec_t **rec,         /*!< out: pointer to inserted record if
                         succeed */
    big_rec_t **big_rec, /*!< out: big rec vector whose fields have to
                         be stored externally by the caller, or
                         NULL */
    que_thr_t *thr,      /*!< in: query thread or NULL */
    mtr_t *mtr)          /*!< in/out: mini-transaction;
                         if this function returns DB_SUCCESS on
                         a leaf page of a secondary index in a
                         compressed tablespace, the caller must
                         mtr_commit(mtr) before latching
                         any further pages */
3)查找:其從根節(jié)點(diǎn)逐層向下查找,最后返回匹配的游標(biāo)。
/** Searches an index tree and positions a tree cursor on a given level.
 NOTE: n_fields_cmp in tuple must be set so that it cannot be compared
 to node pointer page number fields on the upper levels of the tree!
 Note that if mode is PAGE_CUR_LE, which is used in inserts, then
 cursor->up_match and cursor->low_match both will have sensible values.
 If mode is PAGE_CUR_GE, then up_match will a have a sensible value.
 If mode is PAGE_CUR_LE , cursor is left at the place where an insert of the
 search tuple should be performed in the B-tree. InnoDB does an insert
 immediately after the cursor. Thus, the cursor may end up on a user record,
 or on a page infimum record. */
void btr_cur_search_to_nth_level(
    dict_index_t *index,   /*!< in: index */
    ulint level,           /*!< in: the tree level of search */
    const dtuple_t *tuple, /*!< in: data tuple; NOTE: n_fields_cmp in
                           tuple must be set so that it cannot get
                           compared to the node ptr page number field! */
    page_cur_mode_t mode,  /*!< in: PAGE_CUR_L, ...;
                           Inserts should always be made using
                           PAGE_CUR_LE to search the position! */
    ulint latch_mode,      /*!< in: BTR_SEARCH_LEAF, ..., ORed with
                       at most one of BTR_INSERT, BTR_DELETE_MARK,
                       BTR_DELETE, or BTR_ESTIMATE;
                       cursor->left_block is used to store a pointer
                       to the left neighbor page, in the cases
                       BTR_SEARCH_PREV and BTR_MODIFY_PREV;
                       NOTE that if has_search_latch
                       is != 0, we maybe do not have a latch set
                       on the cursor page, we assume
                       the caller uses his search latch
                       to protect the record! */
    btr_cur_t *cursor,     /*!< in/out: tree cursor; the cursor page is
                           s- or x-latched, but see also above! */
    ulint has_search_latch,
    /*!< in: info on the latch mode the
    caller currently has on search system:
    RW_S_LATCH, or 0 */
    const char *file, /*!< in: file name */
    ulint line,       /*!< in: line where called */
    mtr_t *mtr)       /*!< in: mtr */
4)刪除:其核心操作如下:查找刪除位置;如果刪除后節(jié)點(diǎn)仍然滿足最小鍵值數(shù)量要求,直接刪除(樂觀刪除),如果刪除后節(jié)點(diǎn)不滿足最小鍵值數(shù)量要求,合并節(jié)點(diǎn)并遞歸刪除(悲觀刪除)。
/** Removes the record on which the tree cursor is positioned on a leaf page.
 It is assumed that the mtr has an x-latch on the page where the cursor is
 positioned, but no latch on the whole tree.
 @param[in] cursor cursor on leaf page, on the record to delete; cursor stays
 valid: if deletion succeeds, on function exit it points to the successor of the
 deleted record
 @param[in] flags BTR_CREATE_FLAG or 0
 @param[in] mtr if this function returns true on a leaf page of a secondary
 index, the mtr must be committed before latching any further pages
 @return true if success, i.e., the page did not become too empty */
inline bool btr_cur_optimistic_delete(btr_cur_t *cursor,
                                      ulint flags [[maybe_unused]],
                                      mtr_t *mtr) {
  return btr_cur_optimistic_delete_func(cursor, IF_DEBUG(flags, ) mtr);
}
責(zé)任編輯:武曉燕 來源: 程序員學(xué)習(xí)隨筆
相關(guān)推薦

2020-06-02 16:33:52

Serverless 云函數(shù)Node

2014-11-10 16:56:40

2009-02-06 16:23:30

UAC漏洞提權(quán)

2024-05-28 09:12:10

2021-07-23 13:34:50

MySQL存儲InnoDB

2009-06-11 17:44:24

綠壩黃色圖片技術(shù)內(nèi)幕

2019-09-18 11:03:01

數(shù)據(jù)存儲數(shù)據(jù)庫

2019-05-24 09:22:45

JavaWebCRUD

2010-01-12 14:52:00

C++技術(shù)

2017-06-04 23:58:08

TiDB數(shù)據(jù)庫存儲

2017-06-04 23:57:10

TiDBSQL存儲數(shù)據(jù)

2017-06-09 08:00:38

TiDB調(diào)度數(shù)據(jù)庫

2025-10-28 04:11:00

MCPHTTP 協(xié)議Bearer 認(rèn)證

2021-04-12 10:52:10

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

2021-11-01 23:57:03

數(shù)據(jù)庫哈希索引

2017-08-07 20:30:56

MySQL線程池worker線程

2021-11-30 21:10:19

數(shù)據(jù)庫B樹索引

2015-05-14 09:12:05

谷歌開發(fā)人員谷歌云

2019-10-10 11:20:22

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

2021-11-12 05:00:00

數(shù)據(jù)庫索引技術(shù)
點(diǎn)贊
收藏

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

亚洲人体偷拍| 久久综合偷偷噜噜噜色| 亚洲国产成人一区二区三区| 成人激情视频在线| 久久久久久久久久久网| 中文有码一区| 日韩亚洲欧美成人一区| 凹凸国产熟女精品视频| 在线观看av的网站| 99热在这里有精品免费| 国产精品久久久久久久久粉嫩av | 在线观看不卡av| 亚洲av毛片在线观看| 欧美大片高清| 一卡二卡三卡日韩欧美| 日本10禁啪啪无遮挡免费一区二区| 亚洲天堂国产精品| 免费视频久久| 久久国产精彩视频| www色com| 欧美一性一交| 日韩一区二区在线观看| 免费在线观看的毛片| 污污影院在线观看| 欧美激情在线一区二区| 国内外成人免费视频| 国产一区二区在线不卡| 免费视频一区二区三区在线观看| 久久成人亚洲精品| 欧美丰满美乳xxⅹ高潮www| 国产精品调教视频| 欧美一区二区三区视频免费播放| 美女福利视频在线| 超清av在线| 亚洲精品一二三四区| 色综合影院在线观看| 偷拍自拍在线视频| 成人免费av网站| 亚洲综合社区网| 97免费观看视频| 另类综合日韩欧美亚洲| 国产精品爱啪在线线免费观看| 日韩xxx高潮hd| 国产综合亚洲精品一区二| 日韩网站免费观看高清| 国产精品av久久久久久无| 亚洲动漫在线观看| 亚洲黄色在线观看| 中文字幕一区三区久久女搜查官| 日本超碰一区二区| 欧美影视一区| 久久人体大胆视频| 日韩在线一卡二卡| 99热国内精品| 日韩视频免费大全中文字幕| 18啪啪污污免费网站| 精品国产一区二区三区小蝌蚪| 精品亚洲精品福利线在观看| 日本黄色动态图| 欧美丝袜足交| 精品视频在线观看日韩| 国产精品无码一区二区三区免费 | 女人高潮被爽到呻吟在线观看| 夜夜揉揉日日人人青青一国产精品| 亚洲综合激情五月| a在线免费观看| 亚洲在线观看免费| 精品无码一区二区三区爱欲| 国产剧情av在线播放| 欧美日韩国产影院| 97公开免费视频| 黑人一区二区三区| 日韩一区二区三区观看| 亚洲av成人片无码| 亚洲美女久久| 日韩最新在线视频| 精品少妇一二三区| 亚洲一区二区三区四区五区午夜 | 91丝袜国产在线播放| 欧美另类一区| 日本在线www| 亚洲综合丝袜美腿| 国产l精品国产亚洲区久久| 美女福利一区二区| 51精品秘密在线观看| 日本中文字幕精品| 午夜精品影视国产一区在线麻豆| 一区二区三区四区在线观看视频 | 亚洲精品tv久久久久久久久久| 欧美裸体xxxx极品少妇| 天堂中文在线网| 老司机午夜精品| 国产精品久久久久av福利动漫| 青青草视频在线免费观看| 国产精品天天看| 人妻激情另类乱人伦人妻| 女人让男人操自己视频在线观看| 欧美唯美清纯偷拍| 一级黄色片毛片| 欧美限制电影| 久久欧美在线电影| 一级特黄aaaaaa大片| fc2成人免费人成在线观看播放| 欧美日韩一区二区三区在线观看免| 在线观看av的网站| 欧美视频国产精品| 亚洲天堂小视频| 欧美码中文字幕在线| 欧美激情综合色| 国产精品午夜一区二区| 不卡区在线中文字幕| 亚洲一区二区在线观| 黄视频网站在线观看| 91麻豆精品国产91久久久久| aaaaa一级片| 中文字幕免费一区二区| 国产精品久久电影观看| 国产成人手机在线| 成人免费在线观看入口| 日韩av资源在线| 超碰一区二区三区| 久久精品视频免费播放| 免费在线不卡av| 97se亚洲国产综合在线| 2022中文字幕| 久久精品国产福利| 国产一区二区三区精品久久久| 精品无码人妻一区二区三| 精品一区在线看| 日韩三级电影网站| 亚洲一区二区三区四区| 日韩精品久久久久久福利| 久草免费在线视频观看| 久久se这里有精品| 亚洲欧美日产图| 精品国模一区二区三区| 亚洲免费电影一区| 国产又大又黄视频| av综合在线播放| 国产精彩视频一区二区| 成人高潮视频| 欧美日本啪啪无遮挡网站| 国产精品久久久久久久免费| 国产色综合一区| 亚洲熟妇av一区二区三区| 琪琪久久久久日韩精品| 久久久久久久久久久91| 亚洲av无码一区二区乱子伦| 一区二区在线观看免费| wwwxxx色| 好看不卡的中文字幕| 97在线资源站| 暖暖在线中文免费日本| 日韩欧美高清一区| 免费中文字幕在线观看| 成人夜色视频网站在线观看| 国产一级片91| 91蜜桃臀久久一区二区| 久久久视频在线| 午夜国产在线视频| 狠狠色狠色综合曰曰| 亚洲a v网站| 日本不卡免费在线视频| 亚洲丰满在线| 91成人精品观看| 欧美成人久久久| 亚洲美女综合网| 午夜免费久久看| 91精品人妻一区二区| 久久亚洲一区| 香蕉精品视频在线| 日韩成人久久| 97视频在线看| 大胆av不用播放器在线播放| 欧美日韩极品在线观看一区| 国产稀缺精品盗摄盗拍| 成人免费视频免费观看| 国产熟女高潮视频| 日韩欧美高清| 国产伦精品一区二区三毛| 在线天堂资源| 日韩网站免费观看| 免费观看国产精品| 在线这里只有精品| 美女的奶胸大爽爽大片| av动漫一区二区| 国产精品v日韩精品v在线观看| 综合av在线| 美国av一区二区三区| 成人一区视频| 久久琪琪电影院| 午夜在线视频播放| 亚洲精品电影久久久| 一区二区视频播放| 亚洲高清三级视频| 日本成人午夜影院| 成人综合婷婷国产精品久久蜜臀 | 国内精品久久久久影院薰衣草| wwwwww欧美| 欧美精选一区二区三区| 成人av影视在线| www.26天天久久天堂| 久久久久亚洲精品国产| 在线播放日本| 亚洲欧美激情一区| 国产成人三级在线播放| 日本高清无吗v一区| 麻豆chinese极品少妇| 国产日韩欧美麻豆| 中文字幕一区二区人妻电影丶| 日本中文字幕不卡| 国产女大学生av| 欧美日本久久| 一区二区三区四区不卡| 蜜桃国内精品久久久久软件9| 亚洲xxxxx电影| 成人国产一区二区三区精品麻豆| 亚洲18私人小影院| 日本精品600av| 日韩有码在线观看| 国产片在线观看| 国产偷国产偷亚洲清高网站| 亚洲美女性生活| 日韩一区二区三| 91成人在线免费| 欧美午夜精品一区| 视频一区二区三区四区五区| 亚洲一区中文在线| 2021亚洲天堂| 亚洲男人的天堂在线观看| 精品一区二区三孕妇视频| 2021中文字幕一区亚洲| 亚洲香蕉中文网| 成人一级片在线观看| 日本高清免费观看| 蜜臀精品久久久久久蜜臀| 日韩亚洲在线视频| 丝袜美腿一区二区三区| 国产精品一区二区免费在线观看| 亚洲国产国产亚洲一二三| 日本免费a视频| 伊人天天综合| 日韩美女爱爱视频| 欧美日韩国产欧| 毛片在线视频观看| 亚洲性图久久| 国产一区二区视频播放| 亚洲二区精品| 国产高清精品在线观看| 亚洲一区二区三区高清| 国产成人久久婷婷精品流白浆| 国产亚洲成人一区| www.com毛片| 噜噜噜91成人网| 日韩精品一区二区三区色欲av| 久久久久91| 九一精品在线观看| 国产一区久久久| 免费黄色在线播放| www.亚洲免费av| japanese中文字幕| 欧美韩国日本一区| 成人免费视频国产免费观看| 亚洲人成人一区二区在线观看| 欧美片一区二区| 午夜精品视频在线观看| 黑人精品无码一区二区三区AV| 色视频一区二区| 一级黄色片视频| 日韩欧美一区中文| 日本中文字幕一区二区有码在线| 伊是香蕉大人久久| 巨大荫蒂视频欧美大片| 久久久欧美精品| 日本精品不卡| 亚洲一区二区三区sesese| 成人性生交大片免费看96| 精品欧美一区二区在线观看视频| 亚洲高清极品| www.黄色网址.com| 99亚洲伊人久久精品影院红桃| 日韩一级免费在线观看| 麻豆成人91精品二区三区| 不卡的一区二区| 国产欧美一区二区三区网站| 乱h高h女3p含苞待放| 午夜影院在线观看欧美| 中文字幕欧美在线观看| 日韩精品中文字幕一区二区三区| 天堂在线中文| 久久精品这里热有精品| 国产va在线视频| 亚洲free性xxxx护士hd| 欧美人与动xxxxz0oz| 一区二区三区精品国产| 亚洲日本成人| 深爱五月综合网| 久久久精品tv| 日韩av一区二区在线播放| 欧美无人高清视频在线观看| 三级在线观看网站| 色偷偷噜噜噜亚洲男人的天堂| 成av人片在线观看www| 国产精品露脸av在线| 精品福利网址导航| 综合网五月天| 日韩和欧美一区二区| 色悠悠在线视频| 亚洲欧美另类小说视频| 91视频在线视频| 日韩av在线网址| 手机av在线播放| 91精品久久久久久综合乱菊| 蜜桃成人av| 欧美色图色综合| 国产91精品精华液一区二区三区 | 99久久久精品免费观看国产| 国产欧美日韩一区二区三区四区 | а√天堂中文在线资源8| 成人两性免费视频| 日韩av在线中文字幕| 日本精品久久久久中文字幕| 成人黄色大片在线观看 | 一区二区日本视频| 麻豆av免费看| 亚洲色大成网站www久久九九| 男人天堂视频网| 亚洲毛片在线观看| 天堂av在线网| 精品不卡在线| 国产精品老牛| 亚洲国产精品成人综合久久久| 亚洲综合av网| 肥臀熟女一区二区三区| 九九精品视频在线观看| 精品国产一级| 欧美另类videos| 国产精品影视在线观看| a在线视频播放观看免费观看| 欧美日韩国产小视频| 97电影在线| 成人精品网站在线观看| 香蕉视频官网在线观看日本一区二区| 免费涩涩18网站入口| 国产无人区一区二区三区| www.久久久久久久| 国产一区二区三区毛片| 嫩草伊人久久精品少妇av杨幂| 日韩国产精品一区二区| 日本女优在线视频一区二区| www亚洲色图| 欧美日韩精品一区二区在线播放| 天天影视久久综合| 成人久久精品视频| 欧美福利专区| 91黄色免费视频| 色婷婷综合久色| h视频在线免费| 成人深夜直播免费观看| 亚洲精品a级片| 稀缺小u女呦精品呦| 欧美视频在线看| 国产女主播在线写真| 成人免费淫片aa视频免费| 亚洲成人国产| 日本国产在线视频| 日韩欧美在线网址| 午夜激情视频在线| 动漫精品视频| 老司机午夜精品视频| 国产精品久久国产精麻豆96堂| 91精品在线麻豆| 9999精品成人免费毛片在线看| 欧美男人的天堂| 国精品**一区二区三区在线蜜桃| www.av视频| 亚洲精品视频久久| 57pao成人永久免费| 成人午夜精品久久久久久久蜜臀| 91丨九色丨蝌蚪富婆spa| 中文字幕+乱码+中文乱码91| 欧美大片在线看免费观看| 久久超碰99| 日本亚洲一区二区三区| 福利二区91精品bt7086| 麻豆视频免费在线观看| 精品国产福利| 捆绑变态av一区二区三区 | 欧美亚男人的天堂| 免费在线观看av电影| 三区精品视频| 成人性生交大片免费看视频在线| 日本黄色一级视频| 欧美精品九九久久| 日本成人小视频| 人体私拍套图hdxxxx| 69堂成人精品免费视频| xx欧美视频| 免费看毛片的网址| 亚洲欧洲精品一区二区精品久久久|