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

中文字幕在线观看第二页| 欧美疯狂做受xxxx富婆| 亚洲欧美综合图区| 国产三级中文字幕| 日本中文字幕在线| 9l视频自拍九色9l视频成人| 日韩福利视频网| 日韩av一区二区在线观看| 一区中文字幕在线观看| 中文字幕91爱爱| 午夜久久久久| 欧美一区二区在线免费播放| 一区不卡字幕| 亚洲精品一区二三区| 免费国产自久久久久三四区久久| 亚洲成人动漫一区| 国产精品区一区二区三在线播放| 国产美女网站视频| 国产精品久久久久久吹潮| 久久久不卡网国产精品一区| 欧美一区二区三区免费观看| 青青草成人免费视频| 91白丝在线| 国产精品theporn| 日韩午夜三级在线| 国产成人生活片| 精品久久久久成人码免费动漫| 欧美激情理论| 91精品啪在线观看国产60岁| 免费成人进口网站| 国产一级在线| 久久91精品国产91久久小草| 久久久国产影院| 亚洲国产日韩在线一区| 欧美理论电影| av在线一区二区三区| 欧美野外猛男的大粗鳮| 日本妇女毛茸茸| 国产精品22p| 欧美性猛交xxx| 日韩免费电影一区二区三区| 一级做a爰片久久毛片16| 国产精品精品国产一区二区| 日韩丝袜情趣美女图片| 色国产在线视频| 国产美女在线观看| 成人午夜看片网址| 日本精品一区二区三区在线| 国产第一页精品| 国产一区二区三区| 激情av一区二区| 视频在线一区二区三区| 精品国产乱码一区二区三| 久久精品国产免费| 久久久久久国产精品久久| aaaaa一级片| www.久久草.com| 午夜av电影一区| 亚洲精品一区二区三区av| 精品久久久中文字幕人妻| 免费人成在线不卡| 欧美俄罗斯乱妇| 性欧美一区二区| 少妇精品在线| 日本高清不卡aⅴ免费网站| 永久免费精品视频网站| 人人妻人人澡人人爽人人欧美一区 | 97在线电影| 好吊操这里只有精品| 成人在线电影在线观看视频| 日韩免费视频线观看| 国产一区二区视频免费在线观看| a黄色片在线观看| 久久久影院官网| 91九色蝌蚪国产| 4438国产精品一区二区| 中文字幕人成人乱码| 亚洲男人7777| 久久久久亚洲AV成人网人人小说| 97超碰人人看| 亚洲精品男人天堂| 不卡日本视频| 日韩中文字幕在线视频播放| 日韩av无码一区二区三区不卡| av亚洲一区二区三区| 亚洲一区在线视频| 亚洲精品成人自拍| av大片在线| 国产精品天美传媒沈樵| 国产一区二区三区四区hd| 在线黄色av网站| 久久国产欧美| 8050国产精品久久久久久| 欧美在线视频第一页| 黄色不卡一区| 精品丝袜一区二区三区| 亚洲成人激情小说| 在线成人免费| 亚洲第一av在线| 三级黄色片免费看| 欧美aaaaa级| 亚洲第一福利网站| 中文天堂资源在线| 国模精品一区| 欧美老妇交乱视频| 777777国产7777777| 日本一区二区在线看| 亚洲欧美精品在线| 四虎精品免费视频| 久久激情一区| 超碰97在线播放| 国产草草影院ccyycom| 狠狠色伊人亚洲综合成人| 国产精品视频播放| 中文字幕人成人乱码亚洲电影| 国产高清成人在线| 91精品网站| 搞黄视频免费在线观看| 欧美激情一区二区三区全黄| 欧美午夜精品久久久久久蜜| 深夜视频在线免费| 久久久久久久久久久黄色| 黄色片免费在线观看视频| 性欧美猛交videos| 亚洲国产精品一区二区www在线 | 好操啊在线观看免费视频| 黑人狂躁日本妞一区二区三区 | 青草av在线| 欧美日韩一区在线观看| 天天操天天爱天天爽| 国产精品久久久久av电视剧| 精品国偷自产国产一区| 亚洲天堂av网站| 久久91在线| 亚洲男人天堂2024| 成人午夜视频在线观看免费| 国产色综合天天综合网| 中文字幕在线看高清电影| 日本一道高清一区二区三区| 久久国产精品电影| 国产亚洲欧美精品久久久www| 伊人蜜桃色噜噜激情综合| 97av在线播放| 丰满人妻一区二区三区免费| 91一区在线观看| 日产国产精品精品a∨| 国产免费拔擦拔擦8x在线播放| 欧美日韩性生活视频| 日本泡妞xxxx免费视频软件| 欧美jizz19性欧美| 国外色69视频在线观看| 精品国产乱子伦| 国产在线日韩欧美| 久久精品一二三区| 午夜精品一区| 亚洲高清在线视频| 国产日韩视频一区| 亚洲美女网站| 国产日韩一区在线| www 日韩| 精品国产鲁一鲁一区二区张丽| 国产无套精品一区二区三区| 韩国精品一区二区三区| 国产伦精品一区二区三区四区视频 | 久草视频在线资源| 亚洲自啪免费| 成人午夜激情网| 五月婷婷丁香花| 一色桃子久久精品亚洲| 欧美 日韩 国产在线观看| 日日夜夜精品| 日韩精品高清在线观看| 国产精品久久久久久99| 久久综合九色综合97婷婷女人 | 久久精品国产一区二区| 久久久一二三四| 91成人在线精品视频| 一区二区av在线| 国产亚洲精品久久777777| 成人国产在线观看| 国产一二三四区在线观看| 伊人久久亚洲| 欧美在线播放视频| 岛国大片在线观看| 777a∨成人精品桃花网| www.youjizz.com亚洲| 欧美aaaaa成人免费观看视频| 一区二区三区视频| 亚洲成人五区| 国产精品爱啪在线线免费观看| 亚洲大尺度网站| 国产精品久久久久一区二区三区| 精品国产免费av| 999久久精品| 青草青草久热精品视频在线观看| 亚洲美女综合网| 欧美性高潮在线| 欧美日韩午夜视频| 91捆绑美女网站| 黄页免费在线观看视频| 99久久香蕉| 国产成+人+综合+亚洲欧美丁香花| 国产77777| 欧美色图免费看| 国产午夜福利一区二区| 国产欧美一区二区三区沐欲| 日本久久久久久久久久| 久久久久久久尹人综合网亚洲 | 亚洲韩日在线| 7777奇米亚洲综合久久| 在线手机中文字幕| 亚洲美女福利视频网站| 97超碰人人草| 色悠悠亚洲一区二区| wwwwxxxx国产| 国产成人av影院| 人妻互换免费中文字幕| 99国产精品免费网站| 国产精品第一第二| 三级在线观看视频| 亚洲欧美一区二区三区四区| 99久久精品免费看国产交换| 亚洲一区在线播放| 999久久久国产| 久久精品一二三| 黄色录像a级片| 老色鬼久久亚洲一区二区| 欧美一区二区三区成人久久片 | 男生草女生视频| 成人短视频下载| 粗大的内捧猛烈进出视频| 久久国产尿小便嘘嘘| www.日日操| 五月激情久久久| 午夜一区二区三区| 国产一区二区三区四区二区| 久久99精品久久久久久青青日本 | 在线天堂资源www在线污| 欧美激情啊啊啊| 成人区精品一区二区不卡| 色七七影院综合| 国产成人精品毛片| 欧美人xxxx| www.99re7.com| 亚洲一区二区在线视频| 国产精品三区在线观看| 中文字幕亚洲在| 中国黄色片视频| 国产成人午夜高潮毛片| 性生活在线视频| 国产制服丝袜一区| 日本亚洲一区二区三区| 国产麻豆日韩欧美久久| 亚洲熟妇国产熟妇肥婆| 伊人久久婷婷| 欧美精品一区免费| 久久亚洲国产精品一区二区| 亚洲国产精品久久久久爰色欲| 欧美xxxxx视频| 正在播放国产精品| 小小影院久久| 狠狠色综合欧美激情| 欧美videos粗暴| 9.1国产丝袜在线观看 | 18视频免费网址在线观看| 欧美成人精精品一区二区频| 亚洲av无码一区二区三区dv| 欧美v国产在线一区二区三区| 成人免费视频国产免费麻豆| 亚洲黄色在线观看| 国产强被迫伦姧在线观看无码| 欧美裸体bbwbbwbbw| 99热这里只有精品1| 亚洲成人动漫在线播放| 四虎在线视频| 日韩在线视频中文字幕| 在线观看av免费| 97超级碰碰碰久久久| 一本大道色婷婷在线| 国产精品久久视频| 一区二区三区在线资源| 久久久福利视频| 97精品国产福利一区二区三区| 91九色国产ts另类人妖| 9色精品在线| 亚洲综合欧美在线| 成人免费视频一区二区| 丰腴饱满的极品熟妇| 中文字幕综合网| 日韩中文字幕在线观看视频| 欧美日韩在线三区| 人妻精品无码一区二区| 一区二区福利视频| 青春草视频在线| 国产精品国产福利国产秒拍| 伊人久久影院| 五月天亚洲综合小说网| 国产精品xvideos88| 妺妺窝人体色www在线小说| 麻豆成人免费电影| av无码av天天av天天爽| 最近中文字幕一区二区三区| 国产免费av一区| 日韩欧美久久久| 欧美另类极品| 日韩在线国产精品| 午夜av不卡| 99久久99久久| 久久性感美女视频| 欧美亚洲一二三区| 国产精品亚洲专一区二区三区| 国产一二三四五区| 国产免费观看久久| 日本少妇在线观看| 懂色av中文一区二区三区天美| 亚洲一区二区影视| 亚洲欧美国产日韩天堂区| 午夜伦理在线视频| 国产主播精品在线| 国产一区二区欧美| 无码人妻精品一区二区三区在线| 国产一区二区在线影院| 日韩福利在线视频| 色综合天天综合网国产成人综合天 | 国产又色又爽又高潮免费| 久久伊人中文字幕| 欧美卡一卡二卡三| 欧美人体做爰大胆视频| 久草在线免费福利资源| 久久久人成影片一区二区三区观看 | 精品电影在线| 日本高清视频精品| 欧美激情极品| 无码专区aaaaaa免费视频| 国产精品99久久久| 中国一级片在线观看| 在线观看成人小视频| 91成人在线免费| 在线观看精品自拍私拍| 欧美福利在线播放| 欧美成人dvd在线视频| 日韩欧美高清在线播放| 日本老熟妇毛茸茸| 国产亚洲成aⅴ人片在线观看| 快灬快灬一下爽蜜桃在线观看| 欧美日韩一区二区在线| 手机在线观看免费av| 国产亚洲精品一区二区| 综合久久2019| 999在线观看免费大全电视剧| 永久91嫩草亚洲精品人人| 欧美大片久久久| 99久久精品免费观看| 日韩激情在线播放| 亚洲国产福利在线| 麻豆免费在线| 欧美成人免费在线| 日本女人一区二区三区| 精品久久久久一区二区| 亚洲成人中文在线| 婷婷伊人综合中文字幕| 欧美亚洲免费电影| 精品日韩毛片| 国产69精品久久久久久久| jizz一区二区| 波多野结衣爱爱| 日韩在线小视频| 日韩中文字幕无砖| 波多野结衣家庭教师在线播放| 久久综合给合久久狠狠狠97色69| 日韩在线播放中文字幕| 在线观看视频99| 成人污污www网站免费丝瓜| 国产性生活免费视频| 9人人澡人人爽人人精品| 无码一区二区三区| 久久精品99久久久久久久久| 欧美片网站免费| 一区二区三区四区欧美日韩| 国产一区二区三区四| 日本三级网站在线观看| 亚洲香蕉成视频在线观看| 91精品视频一区二区| 国产精品久久久久久久乖乖| 精品一区二区久久| 精品亚洲永久免费| 日韩精品视频中文在线观看| 99久久婷婷国产综合精品首页| 91九色国产ts另类人妖| 91在线免费播放| 亚洲天堂自拍偷拍| 久久露脸国产精品| 欧美日韩伦理在线免费| 丰满熟女人妻一区二区三区| 色av成人天堂桃色av| 超碰人人在线| 欧美性色黄大片人与善| 国产精品性做久久久久久| 久久99国产综合精品免费| 欧美成人免费全部|