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

深入淺出 MySQL 優(yōu)先隊(duì)列

數(shù)據(jù)庫 MySQL
本文案例是課代表上線過程中遭遇到的實(shí)際問題,咨詢了下周圍同學(xué),有好幾個(gè)都遇到過此問題,網(wǎng)上文章大多淺入淺出,讀完有隔靴搔癢之感,無法解答心中疑惑。遂整理此文。

 [[412052]]

本文轉(zhuǎn)載自微信公眾號(hào)「Java課代表」,作者Java課代表 。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java課代表公眾號(hào)。

本文適用于 MySQL 5.6 及以上版本

0.先拋問題

假設(shè)字段category無索引且有重復(fù)值,order by category 和limit組合使用的結(jié)果會(huì)和預(yù)期不符。

問題復(fù)現(xiàn):

表結(jié)構(gòu)(就是兩個(gè)字段)

  1. CREATE TABLE `ratings` ( 
  2.   `id` int(11) NOT NULL AUTO_INCREMENT, 
  3.   `category` int(11) DEFAULT NULL
  4.   PRIMARY KEY (`id`) 
  5. ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; 

對(duì)所有數(shù)據(jù)按category字段排序:select * from ratings order by category;

id category
1 1
5 1
10 1
3 2
4 2
6 2
9 2
2 3
7 3
8 3

當(dāng)我們想分頁展示前5條時(shí)使用select * from ratings order by category limit 5;

期望得到的ID順序是1 5 10 3 4。

但實(shí)際結(jié)果如下:

id category
1 1
10 1
5 1
3 2
4 2

怎么肥似?MySQL 出 Bug 了?

可能有同學(xué)遇到過這個(gè)問題,百度或谷歌一下解決了,你有沒有想過,你查到的辦法是最優(yōu)解嗎?別人是怎么得出這個(gè)辦法的?MySQL 為什么會(huì)這樣做,跟版本有關(guān)嗎?

先拋結(jié)論:

  1. 最優(yōu)解是后面再加個(gè)列值唯一的排序字段,如:order by category,id
  2. MySQL 為什么這樣做?答案是為了快!(MySQL 5.6及其之后才有此優(yōu)化)
  3. 次優(yōu)解是對(duì)order by后面的category 加索引(為什么是次優(yōu)解?看完本文你將會(huì)有答案)
  4. 下面課代表將還原一下這 3 條結(jié)論的產(chǎn)出過程。

1. 最優(yōu)解

MySQL 文檔 8.2.1.19 LIMIT Query Optimization 中對(duì)此場(chǎng)景有如下描述:

  • If multiple rows have identical values in the ORDER BY columns, the server is free to return those rows in any order, and may do so differently depending on the overall execution plan. In other words, the sort order of those rows is nondeterministic with respect to the nonordered columns. One factor that affects the execution plan is LIMIT, so an ORDER BY query with and without LIMIT may return rows in different orders.

總結(jié)來說就是:

當(dāng) ORDER BY 列的字段值存在重復(fù),那么這條 ORDER BY 語句返回的數(shù)據(jù)順序會(huì)因?yàn)長(zhǎng)IMIT的存在而變得不一樣

這是 MySQL 默認(rèn)對(duì)該場(chǎng)景做的優(yōu)化,如果你需要保證加不加 LIMIT 順序都要一致,官方也給出了辦法:

  • If it is important to ensure the same row order with and without LIMIT, include additional columns in the ORDER BY clause to make the order deterministic.

就是在ORDER BY 后面再多加一個(gè)排序字段(比如 ID 字段)。

以上描述最早出現(xiàn)在MySQL 5.6文檔中,從這個(gè)版本開始,引入了這個(gè)針對(duì)ORDER BY LIMIT的優(yōu)化。

好了, 針對(duì)文中的場(chǎng)景,我們只需要select * from ratings order by category,id;即可解決。

那么問題來了,MySQL 為什么要做這么一個(gè)看似是 Bug 的優(yōu)化?

2.MySQL 的 ORDER BY 邏輯

顧名思義,ORDER BY 就是排序。

執(zhí)行一下explain select * from ratings order by category limit 5;

  1. *************************** 1. row *************************** 
  2.            id: 1 
  3.   select_type: SIMPLE 
  4.         table: ratings 
  5.    partitions: NULL 
  6.          type: ALL 
  7. possible_keys: NULL 
  8.           keyNULL 
  9.       key_len: NULL 
  10.           ref: NULL 
  11.          rows: 10 
  12.      filtered: 100.00 
  13.         Extra: Using filesort 
  14. 1 row in set, 1 warning (0.00 sec) 

可以看到 Extra: Using filesort 表示需要排序。

正常情況下, MySQL 會(huì)有內(nèi)存排序和外部排序兩種:

  • 如果待排序的數(shù)據(jù)量小于sort buffer size,排序就在內(nèi)存中完成(快速排序);
  • 如果待排序的數(shù)據(jù)量大于sort buffer size,就使用臨時(shí)文件進(jìn)行外部排序(歸并排序);

很明顯,這兩種排序都是對(duì)所有結(jié)果全部排序,講道理,不管有沒有LIMIT,都是從排完序的結(jié)果中按順序取需要的條數(shù),有沒有LIMIT是不會(huì)影響返回的結(jié)果順序的。

但是,MySQL 5.6 版本針對(duì) ORDER BY LIMIT做了個(gè)小優(yōu)化(排序字段無索引,且列值不唯一時(shí)):優(yōu)化器在遇到 ORDER BY LIMIT語句的時(shí)候,使用了priority queue。

filesort.cc 中有如下偽代碼描述該優(yōu)化:

  1. while (get_next_sortkey()) 
  2.    { 
  3.      if (using priority queue) 
  4.        push sort key into queue 
  5.      else 
  6.      { 
  7.        try to put sort key into buffer; 
  8.        if (no free space in sort buffer) 
  9.        { 
  10.          do { 
  11.            allocate new, larger buffer; 
  12.            retry putting sort key into buffer; 
  13.          } until (record fits or no space for new buffer) 
  14.          if (no space for new buffer) 
  15.          { 
  16.            sort record pointers (all buffers); 
  17.            dump sorted sequence to 'tempfile'
  18.            dump Merge_chunk describing sequence location into 'chunk_file'
  19.          } 
  20.        } 
  21.        if (key was packed) 
  22.          tell sort buffer the actual number of bytes used; 
  23.      } 
  24.    } 
  25.    if (buffer has some elements && dumped at least once) 
  26.      sort-dump-dump as above; 
  27.    else 
  28.      don't sort, leave sort buffer to be sorted by caller. 

并在 WL#1393: Optimizing filesort with small limit 中闡述了該優(yōu)化邏輯:

  1. Many web customers have to do 
  2. "SELECT ... ORDER BY non_index_column LIMIT X"
  3.  
  4. When X *  is smaller than sort_buff_size we can use 
  5. the following algoritm to speed up the sort: 
  6.  
  7. Create a queue to hold 'limit' keys. 
  8. - Scan through the table and store the first (last if DESC) keys in the queue 
  9. Return values from queue 
  10.  
  11. This is much faster than the current algoritm that works as

該 WorkLog 中記錄了優(yōu)化后的效果:10 to 20 times faster than a quicksort(感興趣的同學(xué)可以去閱讀原文)。

所以,就是為了快!

MySQL 認(rèn)為這種場(chǎng)景就是求 TOP N 的問題,使用 priority queue 就能解決。

3.priority queue(優(yōu)先級(jí)隊(duì)列)

priority queue 其實(shí)就是堆,Java 中有java.util.PriorityQueue類,其本質(zhì)就是 [堆] 這種數(shù)據(jù)結(jié)構(gòu)。

簡(jiǎn)單解釋一下什么是堆:

堆是一個(gè)完全二叉樹;

堆中每一個(gè)節(jié)點(diǎn)的值都必須大于等于(大頂堆)或小于等于(小頂堆)其子樹中每個(gè)節(jié)點(diǎn)的值。

如果 MySQL 使用歸并或快排,需要把所有數(shù)據(jù)都排好序,再取LIMIT 的前幾條,剩余已排序的數(shù)據(jù)就白白浪費(fèi)了。

而采用 priority queue 可以根據(jù) LIMIT的條數(shù)維護(hù)一個(gè)堆,只需要把所有數(shù)據(jù)在這個(gè)堆里過一遍就能得到結(jié)果。

使用如下語句可以驗(yàn)證 MySQL 使用了 priority queue:

  1. SET optimizer_trace='enabled=on'
  2. select * from ratings order by category limit 5; 
  3. SELECT * FROM `information_schema`.`OPTIMIZER_TRACE`\G; 
  1. "filesort_priority_queue_optimization": { 
  2.              "limit": 5, 
  3.              "chosen"true 
  4.            }, 

可以看到 filesort_priority_queue_optimization.chosen = true

下面用流程圖還原一下 priority queue 的執(zhí)行邏輯(以LIMIT 5為例):

友情提示:圖中的小頂堆以 category 值的大小排序

取前五條數(shù)據(jù)構(gòu)成一個(gè)小頂堆:

取下一行數(shù)據(jù)(6,2),發(fā)現(xiàn) 2 小于當(dāng)前堆中最大的category 3,于是把(2,3)從堆中刪掉,把(6,2) 入堆:

重復(fù)步驟 2,直至符合查詢條件的數(shù)據(jù)都經(jīng)歷過比較入堆,最終堆中數(shù)據(jù)如圖:

以上就是通過 priority queue 找到 最小的 5 行 category 數(shù)據(jù)的執(zhí)行過程。

最后我們將其出堆即可得到結(jié)果,每次出堆最小元素后將最后一個(gè)元素放入堆頂,按照小頂堆重新堆化,過程如圖:

可以看到,這個(gè)結(jié)果和select * from ratings order by category limit 5;的輸出一致

4.加索引為什么是次優(yōu)解

顯然,按照ORDER BY 的邏輯,直接對(duì)排序字段加索引也可以省去內(nèi)存排序步驟,從而解決這個(gè)問題。

但索引也不是銀彈,多出來的category索引會(huì)增加表的維護(hù)成本,如果沒有明顯的業(yè)務(wù)需要,單純?yōu)榱死@過這個(gè)priority queue的優(yōu)化而加索引,課代表認(rèn)為有點(diǎn)得不償失。

尤其是當(dāng)表數(shù)據(jù)量非常大的時(shí)候,索引的體量會(huì)很可觀。而且,針對(duì)文中場(chǎng)景,category作為分類字段,重復(fù)率會(huì)比較高,即使有按分類查詢的業(yè)務(wù) SQL ,MySQL 也不一定會(huì)選取這條索引。

綜上,針對(duì)本場(chǎng)景,個(gè)人認(rèn)為order by category,id才是該問題的最優(yōu)解。

PS:會(huì)不會(huì)有人問:關(guān)我鳥事,我從沒寫過帶 LIMIT 的 SQL 啊!

難道你寫的 CRUD 功能都不帶分頁的嗎?PageHelper 源碼去了解一下?

5. 總結(jié)

本文案例是課代表上線過程中遭遇到的實(shí)際問題,咨詢了下周圍同學(xué),有好幾個(gè)都遇到過此問題,網(wǎng)上文章大多淺入淺出,讀完有隔靴搔癢之感,無法解答心中疑惑。遂整理此文。

其中涉及 數(shù)據(jù)結(jié)構(gòu),PageHelper,MySQL 文檔,相關(guān)參考資料羅列在文末,如果有時(shí)間能順著文章思路親自讀一遍參考文檔,相信會(huì)有更深的收獲。

6.參考資料:

《數(shù)據(jù)結(jié)構(gòu)與算法之美》---王爭(zhēng) 第 28,29 講

《MySQL實(shí)戰(zhàn)45講》---林曉斌 第 04、05、10、16、17 講

8.2.1.16 LIMIT Query Optimization---https://dev.mysql.com/doc/refman/5.6/en/limit-optimization.html

MySQL · 答疑解惑 · MySQL Sort 分頁---http://mysql.taobao.org/monthly/2015/06/04/

filesort.cc---https://dev.mysql.com/doc/dev/mysql-server/8.0.18/filesort_8cc.html

WL#1393: Optimizing filesort with small limit---https://dev.mysql.com/worklog/task/?id=1393

責(zé)任編輯:武曉燕 來源: Java課代表
相關(guān)推薦

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2020-11-17 11:10:42

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

2009-03-16 13:44:29

雙向復(fù)制實(shí)例MySQL

2023-02-14 08:00:00

MySQL索引查詢

2021-07-20 15:20:02

FlatBuffers阿里云Java

2012-05-21 10:06:26

FrameworkCocoa

2017-07-02 18:04:53

塊加密算法AES算法

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2022-09-26 09:01:15

語言數(shù)據(jù)JavaScript

2023-11-03 10:33:26

2019-08-22 10:57:42

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

2018-03-15 09:13:43

MySQL存儲(chǔ)引擎

2019-11-11 14:51:19

Java數(shù)據(jù)結(jié)構(gòu)Properties

2009-11-30 16:46:29

學(xué)習(xí)Linux

2022-11-09 08:06:15

GreatSQLMGR模式

2021-04-27 08:54:43

ConcurrentH數(shù)據(jù)結(jié)構(gòu)JDK8

2018-11-09 16:24:25

物聯(lián)網(wǎng)云計(jì)算云系統(tǒng)

2019-12-04 10:13:58

Kubernetes存儲(chǔ)Docker

2009-11-18 13:30:37

Oracle Sequ
點(diǎn)贊
收藏

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

亚洲性视频h| 日韩三区在线| zzijzzij亚洲日本少妇熟睡| 欧美交受高潮1| 日韩av无码一区二区三区不卡| 尤物yw193can在线观看| 成人激情小说乱人伦| 日韩av免费在线看| 成人免费毛片xxx| 国产香蕉精品| 日本高清不卡aⅴ免费网站| 相泽南亚洲一区二区在线播放| 中文字幕精品一区二| 欧美日本三区| 亚洲女人被黑人巨大进入| 日本特黄a级片| 国产蜜臀在线| 国产精品麻豆一区二区| 国产日韩欧美亚洲一区| 日韩久久久久久久久久| 亚洲国产清纯| 中文字幕无线精品亚洲乱码一区| 中文字幕99页| 日本黄色一区| 午夜成人免费视频| 四虎永久国产精品| 日本激情一区二区| 极品少妇一区二区三区精品视频| 久久久久久久久久久人体| 国产又粗又猛又爽又黄av| av男人一区| 欧美日韩国产精品自在自线| 成人午夜免费在线| 国产在线激情视频| 国产三级久久久| 国产一区二区中文字幕免费看| 亚洲视频在线观看一区二区| 性欧美videos另类喷潮| 欧美福利视频在线| 99成人在线观看| 狠狠色丁香婷婷综合影院| 欧美tickling挠脚心丨vk| 色戒在线免费观看| 亚洲第一二三四区| 天天色天天爱天天射综合| 激情视频小说图片| 毛片网站在线免费观看| 国产欧美日本一区二区三区| 精品在线视频一区二区| 高清毛片aaaaaaaaa片| 国产在线视视频有精品| 国产日产欧美精品| 中文字幕+乱码+中文字幕明步| 国产精品日韩精品欧美精品| 欧美激情网站在线观看| 欧美黄色一区二区三区| 天堂网在线观看国产精品| 中文字幕国产精品| 国产在线免费av| 大片网站久久| 一本色道久久88综合亚洲精品ⅰ| 国产精品815.cc红桃| 女同久久另类99精品国产| 精品国产成人在线影院 | 国产精品成人在线视频| 女人丝袜激情亚洲| 一本色道久久综合狠狠躁篇怎么玩| 丰满大乳奶做爰ⅹxx视频| 欧美尿孔扩张虐视频| 精品一区二区电影| 一级性生活大片| 精品在线手机视频| 亚洲香蕉av在线一区二区三区| 中文字幕第4页| 国产毛片一区二区三区 | 亚洲在线观看视频| 国产男男gay体育生白袜| 久久97超碰色| 999视频在线观看| 丰满熟妇乱又伦| 99久久婷婷国产综合精品电影| 精品一区久久| av片在线看| 怡红院av一区二区三区| 国产一线二线三线女| 韩国精品一区| 欧美性猛交xxxx乱大交| 尤蜜粉嫩av国产一区二区三区| 国产精品蜜月aⅴ在线| 欧美一级在线观看| 日韩综合第一页| 国产99精品| 久久精品影视伊人网| 激情五月婷婷小说| 免费一级欧美片在线播放| 国产精品视频色| 国产高清不卡视频| 99精品偷自拍| 一区二区三视频| 黑人另类精品××××性爽| 欧美性xxxx在线播放| 亚洲精品自拍网| 1769国产精品视频| 亚洲一二在线观看| 毛片aaaaa| 日韩不卡在线观看日韩不卡视频| 成人av在线亚洲| 亚洲欧洲成人在线| 最新国产成人在线观看| 黄网站欧美内射| 日本亚洲欧洲无免费码在线| 欧美精品一区二区三区四区| 亚洲国产日韩一区无码精品久久久| 久久久久免费av| 欧美亚洲激情在线| 99热这里只有精品3| 久久综合狠狠综合久久综合88| 亚洲 欧洲 日韩| 不卡一二三区| 精品欧美黑人一区二区三区| 天堂资源在线视频| 国产日韩欧美三级| 91超碰在线免费观看| 久久手机免费观看| 亚洲国产精品欧美一二99| 国产精品v日韩精品v在线观看| 久久人人爽人人爽人人片av不| 色偷偷av一区二区三区| 日韩精品视频免费播放| 国内久久婷婷综合| 日本一区视频在线观看| www视频在线观看| 日韩一区二区免费在线电影| 人妻互换一区二区激情偷拍| 校园春色综合网| 国产一区二区免费电影| 1769免费视频在线观看| 欧美日韩极品在线观看一区| 免费看黄色的视频| 免费在线亚洲欧美| 精品久久精品久久| 国产美女福利在线观看| 日韩一级黄色大片| 欧美特级一级片| 蜜桃精品视频在线| 视频在线精品一区| 欧美日韩五区| 亚洲性视频网址| 亚洲成人av网址| 国产午夜精品久久久久久免费视| 黄色片视频在线免费观看| 巨人精品**| 97精品伊人久久久大香线蕉 | 日韩电影网站| 亚洲欧美另类人妖| 日本午夜视频在线观看| 97精品国产露脸对白| 色综合久久久久无码专区| 高清精品视频| 91国自产精品中文字幕亚洲| 少妇一级淫片免费看| 午夜国产不卡在线观看视频| 人妻无码中文久久久久专区| 亚洲精品乱码| 美国av一区二区三区| 成人性生活av| 中文字幕欧美在线| 亚洲影视一区二区| 国产精品久久久久久久裸模| 国产永久免费网站| 欧美午夜电影在线观看 | 精品免费在线| 国产日韩av高清| 成人短视频在线| 精品久久久久久久久久久久包黑料 | 国产午夜伦鲁鲁| 国产aⅴ精品一区二区三区久久| 国产精品久久国产精品99gif| 免费一级毛片在线观看| 在线亚洲一区二区| 91香蕉视频在线播放| 国产精品亚洲成人| 国产乱子伦农村叉叉叉| 日本激情一区| 亚洲精品女av网站| 成人免费网站观看| 国产亚洲欧美视频| 国产手机精品视频| 亚洲国产综合在线| 国产三级av在线播放| 精品综合久久久久久8888| 99中文字幕在线观看| 麻豆视频一区| 国产精品入口尤物| heyzo中文字幕在线| 亚洲图片欧美午夜| 99精品久久久久久中文字幕| 狠狠久久亚洲欧美专区| 美国黄色片视频| 99国产精品国产精品久久| 国产福利在线免费| 99亚洲一区二区| 中文字幕成人一区| 日韩三级毛片| 91黄在线观看| 成人久久网站| 91精品国产91久久久| 男人在线资源站| 国产视频久久久久| 成 人 黄 色 片 在线播放| 色综合久久中文字幕| 久久久久久久九九九九| 中文字幕乱码日本亚洲一区二区| 国产精品日日摸夜夜爽| 日本系列欧美系列| aa在线观看视频| 你懂的亚洲视频| 天堂精品视频| 青青久久av| 国产精品视频在线免费观看| 伊人久久大香| 国产精品免费一区二区三区都可以| ****av在线网毛片| 欧美巨猛xxxx猛交黑人97人| 国产视频第一区| 亚洲成年人在线播放| 一级做a爱片性色毛片| 五月婷婷综合在线| 加勒比av在线播放| 国产日韩视频一区二区三区| 日本天堂在线播放| 亚洲国产高清一区| 欧洲金发美女大战黑人| 少妇精品久久久| 国产伦精品一区二区三区视频免费| 日韩成人综合网站| 青青精品视频播放| 国产二区三区在线| 原创国产精品91| 外国精品视频在线观看| 日韩你懂的电影在线观看| 日本熟妇一区二区三区| 色综合久久久网| 免费看日韩毛片| 亚洲无人区一区| 国产精品二区一区二区aⅴ| 亚洲视频一区二区免费在线观看 | 91嫩草精品| 3d动漫精品啪啪一区二区三区免费| 天然素人一区二区视频| 日本午夜在线亚洲.国产| 老牛影视精品| 国产91成人video| 免费看电影在线| 美女国内精品自产拍在线播放| 国产福利在线| 亚洲精选在线观看| 天天av综合网| 日韩激情片免费| 裸体xxxx视频在线| 日韩福利视频在线观看| 日韩在线视频第一页| 亚洲加勒比久久88色综合| 老牛影视av牛牛影视av| 日韩精品一区二区三区在线观看 | 欧美成人video| www.久久色| 日韩一二三四区| 熟妇高潮一区二区三区| 亚洲国产欧美一区二区三区久久| а√天堂资源在线| 亚洲精品乱码久久久久久金桔影视 | 蜜桃网站在线观看| 欧美精品aa| 欧美 日韩 国产在线观看| 国产女优一区| 男人天堂成人在线| 精品一二三四在线| 下面一进一出好爽视频| 成人一区二区三区| www.四虎在线| 91蜜桃婷婷狠狠久久综合9色| 在线免费看黄视频| 欧美激情一区二区| www.99热| 亚洲乱码中文字幕| 国产污片在线观看| 婷婷久久综合九色综合绿巨人| 成人h动漫精品一区二区下载| 在线一区二区观看| 国产精品欧美激情在线| 亚洲精品国产成人| 国产黄色片在线观看| 中文字幕v亚洲ⅴv天堂| 1区2区3区在线| 国产成人精彩在线视频九色| 国产原创一区| 国产青春久久久国产毛片| 国产精品三级| 在线观看日本一区| 99精品免费| 超碰超碰在线观看| 丁香一区二区三区| 国产美女网站视频| 亚洲国产视频一区二区| 伊人手机在线视频| 在线观看日韩av先锋影音电影院| av在线亚洲天堂| 精品亚洲国产视频| 黄色网址免费在线观看| 日韩av成人在线| 天堂精品久久久久| 欧美精品一区二区三区在线四季 | 97在线国产视频| 日本va欧美va欧美va精品| 亚洲精品第二页| 国产精品无圣光一区二区| 全网免费在线播放视频入口 | 777精品久无码人妻蜜桃| 麻豆一区二区三| 性色av蜜臀av浪潮av老女人| 亚洲免费观看高清在线观看| 国产成人精品网| 欧美一区二区三区成人| 成人在线观看一区| 久久免费福利视频| 四虎影视国产精品| 日本欧美色综合网站免费| 你懂的国产精品| 国产一级特黄a大片免费| 国产成人亚洲精品青草天美| 日本理论中文字幕| 香蕉成人伊视频在线观看| 亚洲一卡二卡在线观看| 日韩精品亚洲精品| 色黄网站在线观看| 秋霞成人午夜鲁丝一区二区三区| 亚洲国产aⅴ精品一区二区三区| 欧美乱偷一区二区三区在线| 亚洲国产日韩欧美在线| 性猛交ⅹ×××乱大交| 久久久久久久久久久久久夜| 6080午夜伦理| 亚洲丁香婷深爱综合| 97caopor国产在线视频| 91av一区二区三区| 91精品国产自产在线观看永久∴| 亚洲色图38p| 国产女人aaa级久久久级| 麻豆久久久久久久久久| 日韩三级.com| 另类视频在线| 丁香五月网久久综合| 国产一区二区三区网| 国产a级片免费观看| 91视频在线观看免费| 国产午夜免费福利| 日韩高清a**址| 国内激情视频在线观看| 蜜桃麻豆www久久国产精品| 99国产成+人+综合+亚洲欧美| 麻豆tv在线观看| 无码av中文一区二区三区桃花岛| 亚洲精品国产一区二| 美女福利视频一区| 中文字幕一区图| 男人天堂a在线| 成人高清伦理免费影院在线观看| 日韩精品在线免费看| 日韩av影院在线观看| 国产精品蜜臀| 欧美成ee人免费视频| 欧美亚洲在线| 欧美日韩生活片| 欧美一区二区私人影院日本| 在线网址91| 久久综合给合久久狠狠色| 亚洲女优在线| 国产精品成人无码免费| 4438成人网| 蜜臀av在线| 免费在线观看一区二区| 日本特黄久久久高潮| 日本黄色激情视频| 亚洲第一av网| 欧美大胆成人| 日韩欧美亚洲在线| 国产激情精品久久久第一区二区| 久久久久久久九九九九| 亚洲三级免费看| 2020国产精品小视频| 国产 欧美 日本| 久久久不卡网国产精品一区| 中文字幕人妻互换av久久| www.日韩欧美| 欧美一级一片| 日本中文字幕二区| 黑丝美女久久久| 老司机精品影院| 国产精品加勒比|