精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

久久久久久视频| 欧美日韩怡红院| 天堂视频中文在线| 美腿丝袜亚洲综合| 欧美成年人在线观看| 美女搡bbb又爽又猛又黄www| 欧美电影免费观看| 亚洲人成亚洲人成在线观看图片| 国产午夜精品在线| 中文字幕乱码一区二区| 国产综合久久| 中文字幕无线精品亚洲乱码一区| 国产裸体视频网站| 精品国产欧美日韩一区二区三区| 一区二区三区免费| 西游记1978| 免费观看a视频| 麻豆精品一区二区| 欧美一区在线直播| 青娱乐国产盛宴| 成人同人动漫免费观看| 亚洲第一色中文字幕| 中文字幕 日韩 欧美| 人在线成免费视频| 一区二区三区日韩精品| 亚洲精品一区二区三| 亚洲AV第二区国产精品| 国产精品99久久久久| 国产精品你懂得| 丁香六月婷婷综合| 在线欧美亚洲| 欧美成人亚洲成人| 亚洲欧美另类日本| 精品国产一区二区三区久久久蜜臀| 日韩精品一区二区三区中文精品| 国产精品一区二区小说| 欧美国产大片| 欧美性xxxx极品hd满灌| 国产va亚洲va在线va| a视频在线免费看| 中文字幕一区视频| 日韩欧美精品在线不卡| 青青操在线视频| 99麻豆久久久国产精品免费| 成人动漫视频在线观看完整版| 国产精品视频无码| 久久99国产精品久久99| 国产精品网站大全| 国产九色91回来了| 日韩国产欧美在线视频| 国产极品jizzhd欧美| 男人天堂2024| 日韩精品免费专区| 国产精品 欧美在线| 人妻丰满熟妇av无码区| 欧美一级播放| 欧洲成人性视频| 无码人妻av免费一区二区三区| 男女精品网站| 国产精品极品在线| 在线观看毛片av| 精品一区在线看| 91久久精品视频| 国产三级视频在线播放| 国产精品一区二区三区四区| 999日本视频| 亚洲欧美黄色片| av不卡免费在线观看| 狠狠干一区二区| 全色精品综合影院| 国产精品水嫩水嫩| 国产又粗又大又爽的视频| www在线视频| 亚洲丶国产丶欧美一区二区三区| 日韩中字在线观看| 大胆人体一区| 欧美精品国产精品| 丰满少妇xbxb毛片日本| 婷婷亚洲精品| 色yeye香蕉凹凸一区二区av| 美女的奶胸大爽爽大片| 99视频在线精品国自产拍免费观看| 国产91ⅴ在线精品免费观看| 欧美另类高清videos的特点| 国产在线不卡视频| 国产尤物99| 国产在线视频资源| 亚洲美女视频在线| 777精品久无码人妻蜜桃| 国产成人精品123区免费视频| 欧美精三区欧美精三区| 俄罗斯黄色录像| 精品国产一区二区三区av片| 九九久久精品一区| 欧美日韩综合一区二区三区| 韩国精品在线观看| 精品一区久久| 久久精品视频免费看| 懂色aⅴ精品一区二区三区蜜月| 激情五月婷婷久久| 18国产精品| 中文字幕不卡在线视频极品| 国产精品19乱码一区二区三区| 日日骚欧美日韩| 99高清视频有精品视频| 国产精品毛片一区二区三区四区| 一区二区三区色| www.天天射.com| 久久这里只有精品一区二区| 色婷婷综合久久久久中文字幕1| av资源吧首页| 狠狠色丁香婷婷综合| 免费观看成人在线| 天堂成人av| 欧美日韩精品一二三区| 极品人妻一区二区三区| 欧美不卡一区| 国产在线久久久| 男人av在线| 午夜精品爽啪视频| 51自拍视频在线观看| 欧美日韩国产一区二区三区不卡| 久久久噜噜噜久久| 99精品在线看| 中文字幕一区二区视频| 国产xxxxx视频| 日本精品影院| 国语自产偷拍精品视频偷 | 91在线视频一区| 国产福利片在线| 欧美午夜性色大片在线观看| 亚洲婷婷在线观看| 午夜精彩国产免费不卡不顿大片| 国产精品一区二区三区在线播放| 日本一本草久在线中文| 亚洲成av人片在线| 国产亚洲精品成人a| 中文乱码免费一区二区三区下载| 国产在线视频2019最新视频| 91社区在线观看| 欧美日韩中文字幕一区二区| 黄免费在线观看| 天堂av在线一区| 欧美日韩综合精品| 三级成人在线| 国产一区二区三区中文| 加勒比在线一区| 国产人伦精品一区二区| 国产又粗又长又大的视频| 国产免费av一区二区三区| 欧美怡春院一区二区三区| 欧洲视频在线免费观看| 欧美性xxxx在线播放| xxxxx在线观看| 日韩电影在线观看一区| 亚洲第一导航| av日韩在线免费观看| 欧美成人免费全部观看天天性色| 精品国产无码AV| 夜夜嗨av一区二区三区四季av| 俄罗斯女人裸体性做爰| 国语精品一区| 蜜桃成人免费视频| 澳门av一区二区三区| 最新中文字幕亚洲| 99久久国产热无码精品免费| 一区二区三区波多野结衣在线观看| jjzz黄色片| 亚洲尤物影院| 一本色道久久99精品综合| 试看120秒一区二区三区| 欧美激情免费看| 色视频在线观看免费| 色94色欧美sute亚洲13| 国产精品国产精品88| 粉嫩欧美一区二区三区高清影视| 免费看一级大黄情大片| 欧美伦理在线视频| 91久久精品一区二区别| 日韩欧美精品一区二区三区| 视频一区视频二区国产精品| 精品人妻伦一区二区三区久久 | 久久人人爽人人爽爽久久| 精品国产九九九| 欧美三级xxx| 亚洲人与黑人屁股眼交| av一二三不卡影片| 亚洲成人福利在线| 在线欧美视频| 椎名由奈jux491在线播放| 国产伦理久久久久久妇女 | 久久精品视频导航| 五十路在线视频| 91精品国产欧美一区二区成人| 日韩精品一区二区av| 国产精品视频麻豆| 日本不卡视频一区| 久久av中文字幕片| 国模吧无码一区二区三区| 久久久久久久久久久久久久久久久久| 国产欧美日韩伦理| 国产95亚洲| 国产成人精品网站| 123区在线| 精品国产欧美一区二区五十路| 无码国产精品高潮久久99| 欧美精品18+| 黄色片视频免费| 午夜婷婷国产麻豆精品| 免费看特级毛片| 中文字幕欧美区| 色婷婷在线影院| 菠萝蜜视频在线观看一区| 99re精彩视频| 日韩综合在线视频| 大伊香蕉精品视频在线| 欧美福利影院| 一区二区三区四区在线视频| 最新亚洲精品| 久久久久久久久久久久久9999| 亚洲精品在线播放| 91久久国产综合久久91精品网站| 日韩精品99| 午夜精品在线视频| 激情在线视频播放| 久久久精品国产网站| 91精品专区| 一区二区日韩精品| 天堂资源最新在线| 亚洲国产成人精品电影| 亚洲国产精品久久人人爱潘金莲| 91麻豆精品国产91久久久久| 中国女人一级一次看片| 欧美在线观看一区| 无码人妻久久一区二区三区| 色综合天天视频在线观看| 国产成人在线播放视频| 午夜精品爽啪视频| 国产成人亚洲欧洲在线| 欧美日韩性视频| 好看的av在线| 日韩欧美精品免费在线| 91在线视频在线观看| 精品欧美aⅴ在线网站| 日本午夜视频在线观看| 亚洲无线码一区二区三区| 久久久久久久国产精品毛片| 一区二区三区四区激情| 久久99久久98精品免观看软件 | 国产曰肥老太婆无遮挡| 激情成人亚洲| 国产精品无码人妻一区二区在线 | 午夜免费福利在线| 日韩电影在线观看电影| 奇米影视四色在线| 国产精品一区久久久久| 中国免费黄色片| 91网站在线播放| 国产又粗又猛又爽又黄av| 国产精品久久久久久久久免费丝袜| 黄色片网站在线播放| 亚洲欧美电影院| 久久久一二三区| 午夜a成v人精品| 69视频免费看| 7777精品伊人久久久大香线蕉的| 精品久久国产视频| 亚洲精品成人久久电影| 国产在线免费观看| 久久躁狠狠躁夜夜爽| 99riav视频在线观看| 国产成+人+综合+亚洲欧洲 | 精品亚洲一区二区| www.亚洲免费| 欧美大荫蒂xxx| 欧美日韩免费看片| 成人免费视频97| 国产乱论精品| 伊人久久大香线蕉成人综合网| 欧美日韩视频一区二区三区| 国模无码视频一区二区三区| 日本欧美在线看| 久久av一区二区三| 国产情人综合久久777777| 欧美日韩免费一区二区| 欧美网站在线观看| 精品国产av一区二区三区| 亚洲欧美日韩中文在线制服| 黄色网在线免费看| 538国产精品一区二区免费视频| 精品久久99| 国产视色精品亚洲一区二区| 欧美激情另类| 久久9精品区-无套内射无码| 精品一区二区成人精品| 欧美无人区码suv| 亚洲少妇中出一区| 精品人妻一区二区色欲产成人| 日韩欧美一级二级| av在线三区| 国内精品小视频| 久久伊人国产| 欧美精品中文字幕一区二区| 国产精品多人| 久久精品国产露脸对白| 久久九九久久九九| 日韩精品视频免费播放| 日韩一区二区免费视频| av影片免费在线观看| 91爱视频在线| 精品精品国产毛片在线看| 尤物一区二区三区| 日韩精品免费专区| 青青草视频播放| 亚洲无人区一区| 国产成人精品av在线观| 中文字幕免费国产精品| 中国色在线日|韩| 国产丝袜不卡| 亚洲性感美女99在线| 午夜福利123| 国产精品久久久久久久第一福利| wwwwww国产| 日韩激情在线视频| 免费成人在线电影| 国内精品久久国产| 极品少妇一区二区三区| 亚洲综合中文网| 亚洲乱码一区二区三区在线观看| 在线免费av网| 色噜噜狠狠狠综合曰曰曰| 偷拍精品精品一区二区三区| 久久精品国产美女| 国产欧美综合一区二区三区| 中文字幕18页| 一级特黄大欧美久久久| a天堂中文在线观看| 久久国产精品久久久久久久久久| 欧美成人黄色| 樱花www成人免费视频| 久久国产免费看| 午夜精品一区二区三级视频| 555夜色666亚洲国产免| 快射视频在线观看| 91免费高清视频| 亚洲五月综合| 中文字幕第10页| 亚洲成人免费视| 深夜视频在线免费| 欧美整片在线观看| 国产一区二区三区站长工具| 三级a在线观看| 国产精品亲子乱子伦xxxx裸| 国产又粗又长又大视频| 久久久精品网站| gogo久久日韩裸体艺术| 欧美乱大交xxxxx潮喷l头像| 99精品欧美一区二区三区小说| 波多野结衣国产| 亚洲欧美另类人妖| 欧美性www| 国产精品无码电影在线观看| www.欧美日韩国产在线| 中文字幕在线欧美| 日韩一区二区av| 动漫视频在线一区| 国产日产欧美视频| 中文字幕欧美激情一区| 不卡的日韩av| 欧美一区第一页| 久久在线免费| 国产69视频在线观看| 欧美视频专区一二在线观看| 91在线视频免费看| 2014国产精品| 免费日韩精品中文字幕视频在线| 欧美人与禽zoz0善交| 日韩美女一区二区三区四区| 中文字幕21页在线看| 亚洲一卡二卡| 成人激情av网| 成人黄色三级视频| 欧美麻豆久久久久久中文| 网友自拍一区| 三级黄色片免费看| 色综合久久九月婷婷色综合| 久久黄色美女电影| 久久国产精品高清| 国产尤物一区二区在线| 日韩精品久久久久久久酒店| 日韩专区在线观看| 日日狠狠久久偷偷综合色| 肉色超薄丝袜脚交| 欧美性极品xxxx娇小| 亚洲小说区图片区都市| 日产精品高清视频免费| 国产成人亚洲精品青草天美| www.av88| 欧美亚洲激情在线| 欧美人成网站|