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

慢SQL優化實戰:從一例線上慢SQL探究執行引擎工作過程

數據庫
本文通過一個線上慢SQL案例,介紹了Join的兩種算法和Order by的工作原理,并通過Explain和Optimizer_trace工具完整推演了慢SQL的執行過程?;趯υ砗蛨绦羞^程的分析,本文給出一種“引導執行引擎選擇效率更高的算法”的方案,從而使查詢性能得到大幅提升。

01、線上慢 SQL 背景

慢 SQL 會影響用戶使用體驗,降低數據庫的整體性能,嚴重的甚至會導致服務器掛掉、整個系統癱瘓。筆者通過監控平臺發現線上存在這樣一條慢SQL(原始SQL已脫敏,表結構出于簡化的目的做了一定刪減,實際執行耗時以文中提供數據為準),其執行耗時在分鐘級。

select t1.*,t2.x from t_table1 t1 leftjoin t_table2 t2 on t1.a = t2.a orderby t1.c desc;

表結構如下:

CREATETABLE `t_table1` (
  `id` bigint(20) unsigned NOTNULL AUTO_INCREMENT COMMENT '主鍵',
  `a` varchar(64) NOTNULL,
  `b` varchar(64) NOTNULL,
  `c` varchar(20) NOTNULL,
  PRIMARYKEY (`id`),
  KEY `idx_a` (`a`)
) ENGINE=InnoDB AUTO_INCREMENT=0DEFAULT CHARSET=utf8mb4;


CREATETABLE `t_table2` (
  `id` bigint(20) unsigned NOTNULL AUTO_INCREMENT COMMENT '主鍵',
  `a` varchar(64) NOTNULL,
  `x` varchar(64) NOTNULL,
  `y` varchar(20) NOTNULL,
  PRIMARYKEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0DEFAULT CHARSET=utf8mb4;

其他信息:



參數





數值





MySQL 版本





5.6.x





t_table1數據行數





3000





t_table2數據行數





70000



當發現慢SQL時,筆者的第一反應是使用Explain查看SQL的執行計劃,結果如下:

通過Explain初步分析:兩張表均執行了全表掃描,結合兩張表的數據規模分析全表掃描并非耗時達到分鐘級的主要原因。另外執行計劃extra種提示的Using temporary; Using filesort; Using join buffer (Block Nested Loop)又分別代表什么含義呢?

02、原理探究

2.1Join 算法原理

2.1.1 驅動表和被驅動表

在Join語句中,執行引擎優先掃描的表被稱為驅動表,另一張表被稱為被驅動表。執行引擎在選擇驅動表時,除了必須要遵守的特定語義外,最重要的考慮便是執行效率。

首先列舉兩種特定語義約束驅動表選取的場景

場景一:Straight join指定連接順序,強制要求執行引擎優先掃描左側的表。

場景二:Left/Right [outer] join,方向連接的特點是反方向表中如果不存在關聯的數據則填充NULL值,這一特性要求方向查詢時優先掃描相同方向的表。倘若where條件中明確指明反方向表中的部分列非空,則驅動表的選擇就不受此語義的限制,執行引擎會依據效率選取驅動表。

當沒有特定語義的約束時,執行引擎便會依據執行效率選取驅動表,如何判斷哪張表作為驅動表的效率更高呢?下文會結合Join的兩種算法更深入地探討這個問題。

2.1.2 Block Nested-Loop Join

假設一個數據量為m行的驅動表與一個數據量為n行的被驅動表進行join查詢。

最簡單的一種算法:

  1. 從驅動表掃描一行數據;
  2. 對被驅動表進行全表掃描,得到的結果依次與驅動表的數據進行join并把滿足條件的數據加入結果集;
  3. 接著掃描驅動表,每掃描一行數據,均重復執行一次步驟2,直至驅動表的全部數據被掃描完畢。

這種算法的磁盤掃描開銷為m*n,非常低效,MySQL在實際中并未直接使用該算法,而是采用緩存的思想(分配一塊Join buffer)對該算法進行改進,并命名為Block Nested-Loop join(BNL)。

BNL的算法步驟為:

  1. 從驅動表一次掃描K條數據,并把數據緩存在Join buffer;
  2. 對被驅動表進行全表掃描,得到的結果依次與驅動表的K條數據進行join并把滿足條件的數據加入結果集;
  3. 清空join_buffer;
  4. 接著從驅動表再取出K條數據,重復步驟2、3,直至掃描完驅動表的全部數據。

上述算法中,驅動表分段取數的次數記為l,整個算法的磁盤掃描開銷為m+ln。由于分段的次數與驅動表的數據成正相關,所以公式可以記為m+λmn,λ的取值范圍為(0,1)。

當兩張表的行數(m、n大?。┕潭ǖ那闆r下,m對結果的影響更大,m越小整體掃描的代價越小,所以執行引擎優先選擇數據量更小的表作為驅動表(符合“小表驅動大表”的說法)。

2.1.3 Index Nested-Loop Join

BNL算法使用了Join buffer結構,雖然有可能通過減少重復掃描來降低磁盤掃描開銷,然而驅動表分段掃描的次數過多依然可能會導致查詢的低效。索引是MySQL查詢提效的重要結構,當被驅動表的關聯鍵存在索引時,MySQL會使用Index Nested-Loop Join(NLJ)算法。

該算法的步驟為:

  1. 從驅動表掃描一行數據;
  2. 使用驅動表的關聯鍵搜索被驅動表的索引樹,通過被驅動表的索引結構找到被驅動表的主鍵,再通過主鍵回表查詢出被驅動表的關聯數據(暫不考慮覆蓋索引的情況);
  3. 接著掃描驅動表,每掃描一行數據,均重復執行一次步驟2,直至驅動表的全部數據被掃描完畢。

每次搜索一棵樹的復雜度近似為log2 n,上述過程在被驅動表掃描一行數據的時間復雜度是2log2 n,算法的整體復雜度為m+2mlog2 n,在該算法中,依舊是m對結果的影響更大,m越小整體掃描的代價越小,所以執行引擎總是選擇數據量更小的表作為驅動表(符合“小表驅動大表”的說法)。

2.2Order by 算法原理

2.2.1 全字段排序

MySQL會為每個線程分配一塊內存(Sort buffer)用于排序,當Sort buffer的空間不足時(通過系統參數sort_buffer_size設置Sort buffer的大?。?,執行引擎不得不開辟磁盤臨時文件用于排序,此時排序的性能也會大幅降低。

全字段排序是將查詢需要的所有字段進行暫存,并按照排序字段進行排序,并將排序后的結果集直接返回。

2.2.2 Rowid 排序

若要查詢的數據單行占用空間較大,Sort buffer中可以容納的排序行數將會減少,此時使用磁盤臨時文件進行排序的概率將會增大。為了提高排序性能,執行引擎提供一種只存儲排序字段的算法,稱為Rowid排序算法。

該算法的步驟為:

  1. 將參與排序的字段和主鍵進行臨時存儲;
  2. 按照排序字段進行排序,得到有序的主鍵;
  3. 根據有序的主鍵進行回表,按順序將所有要查詢的數據返回。

Rowid排序在單行查詢數據較大時可以通過節省臨時排序空間從而達到降低排序開銷的目的,然而該算法的代價是會增加磁盤掃描的次數(主鍵回表),所以是否選擇使用該算法需要根據實際情況進行取舍(通過系統參數max_length_for_sort_data設置)。

03、調優過程

3.1執行過程分析

了解了Join和Order by的工作原理,我們推測執行計劃的大致過程為:

  1. t_table_1與t_table_2進行Join查詢,使用了BNL算法(Using join buffer (Block Nested Loop))
  2. 將Join的結果暫存臨時表(Using temporary)
  3. 對臨時表中的數據進行排序后返回(Using filesort)

為了佐證筆者的推測以及了解每一步的開銷情況,Optimizer_trace命令可以提供更多執行過程細節。

{
     "considered_execution_plans": [
               {
                 "table": "`t_table1` `t1`",
                 "best_access_path": {
                   "considered_access_paths": [
                     {
                       "rows_to_scan": 3000,
                       "access_type": "scan",
                       "resulting_rows": 3000,
                       "cost": 615,
                       "chosen": true,
                       "use_tmp_table": true
                     }
                   ] /* considered_access_paths */
                 } /* best_access_path */,
                 "rest_of_plan": [
                   {
                     "table": "`t_table2` `t2`",
                     "best_access_path": {
                       "considered_access_paths": [
                         {
                           "rows_to_scan": 69882,
                           "access_type": "scan",
                           "using_join_cache": true,
                           "buffers_needed": 5,
                           "resulting_rows": 69882,
                           "cost": 4.19e7,
                           "chosen": true
                         }
                       ] /* considered_access_paths */
                     } /* best_access_path */,
                     "rows_for_plan": 2.1e8,
                     "cost_for_plan": 4.19e7,
                     "sort_cost": 2.1e8,
                     "new_cost_for_plan": 2.52e8,
                     "chosen": true
                   }
                 ] /* rest_of_plan */
               }
             ] /* considered_execution_plans */
   }

上圖展示的即為執行引擎預估的執行計劃,從Optimizer_trace的輸出結果中可以佐證上述對于執行過程的推測。另外我們可以得到執行代價的結果為:

  • t_table1的掃描行數為3000,代價為615;
  • t_table2的掃描行數為69882,由于BNL算法t_table2會被多次全表掃描,整體代價為4.19e7;
  • 對Join結果進行排序的開銷為2.1e8。

從執行引擎預估的執行計劃可以看出執行引擎認為排序的開銷最大,另外由于使用BNL算法會導致被驅動表執行多次全表掃描,其執行代價僅次于排序。然而預估的執行計劃并不代表真正的執行結果,下面展示Optimizer_trace命令對于真實執行結果部分參數:

{
       "join_execution": {
         "select#": 1,
         "steps": [
           {
             "creating_tmp_table": {
               "tmp_table_info": {
                 "table": "intermediate_tmp_table",
                 "row_length": 655,
                 "key_length": 0,
                 "unique_constraint": false,
                 "location": "memory (heap)",
                 "row_limit_estimate": 25614
               } /* tmp_table_info */
             } /* creating_tmp_table */
           },
           {
             "filesort_summary": {
               "rows": 3000,
               "examined_rows": 3000,
               "number_of_tmp_files": 0,
               "sort_buffer_size": 60200,
               "sort_mode": "<sort_key, rowid>"
             } /* filesort_summary */
           }
         ] /* steps */
       } /* join_execution */
}

從執行結果參數來看:

  • 執行引擎使用臨時表保存Join的結果,且臨時表是一張內存表。
  • 參與排序的數據行數為3000行,沒有使用磁盤臨時文件進行排序,排序算法選擇的是Rowid排序。

綜合執行引擎的預估的執行計劃和真實的執行結果參數可以得出,執行引擎預估最大的執行開銷為排序,但實際上排序并未使用到磁盤臨時文件,且Rowid排序的回表操作是在內存中進行的(在內存臨時表中進行回表),3000條數據的內存排序開銷是極快的,所以真實的最大開銷是BNL算法導致的對被驅動表多次進行全表掃描的開銷。

3.2最終的優化

對于BNL算法,可以通過在被驅動表添加索引使其轉化為NLJ算法來進行優化(此處注意一些索引失效的場景,筆者在實際調優中遇到了字符集不同導致的索引失效場景)。在t_table2表添加索引后,觀察一周內的SQL監控如下,可以看到SQL最大響應時間不超過20ms,執行效率得到了大幅提升。

04、總結

本文完整的介紹了一個SQL調優案例,通過這個案例可以歸納出SQL調優的基本思想。首先,需要了解SQL語句中的關鍵字(Join、Order by...)的基本工作原理,并輔助一些執行過程數據(Explain、Optimizer_trace),通過實驗驗證猜想,最終達成調優的目的。

責任編輯:龐桂玉 來源: vivo互聯網技術
相關推薦

2021-07-30 07:28:16

SQL優化日志

2022-07-14 14:46:51

數據庫SQL系統設計

2025-11-03 13:00:00

SQL慢SQL數據庫

2010-09-06 11:24:32

SQL Server語句

2024-05-30 07:55:43

2020-11-23 11:40:35

MySQSQL數據庫

2021-08-03 17:15:19

SQL 慢 SQL

2011-04-02 16:45:58

SQL Server查詢優化

2025-05-20 00:00:00

2017-05-23 16:26:26

MySQL優化處理

2022-02-07 19:17:56

SQL系統MySQL

2020-01-22 16:36:52

MYSQL開源數據庫

2025-03-27 03:22:00

2020-02-10 10:15:31

技術研發指標

2022-10-27 10:06:16

Presto SQLAntlr大數據

2022-10-27 11:31:10

Presto SQL統計計數大數據

2023-09-01 07:31:24

2022-10-27 11:07:40

2022-10-27 10:32:09

Presto SQLJoin大數據

2010-06-29 09:56:00

SQL Server查
點贊
收藏

51CTO技術棧公眾號

午夜激情视频在线观看| 午夜一区二区三区四区| 欧美黄色影院| 在线观看日产精品| 99热这里只有精品7| 丰满人妻妇伦又伦精品国产| 香蕉久久国产| 久久香蕉国产线看观看网| 美女伦理水蜜桃4| 美女日韩欧美| 亚洲黄色性网站| 乱色588欧美| www.xxx国产| 日韩国产精品91| 欧美激情精品久久久久久变态| 久久久无码人妻精品一区| avtt久久| 在线观看欧美精品| a级黄色小视频| 免费在线观看黄色网| 99精品视频在线免费观看| 成人国产精品免费视频| 99久久精品国产亚洲| 午夜国产精品视频| 中文字幕少妇一区二区三区| 久久久久久久无码| 国产精品亚洲欧美一级在线 | 日本一区二区不卡高清更新| 精品人妻一区二区三区浪潮在线 | 日韩精品久久| 精品一区二区三区三区| 亚洲成人精品在线播放| 四虎精品一区二区免费| 91精品福利在线| 国产精品一区二区免费在线观看| 影院在线观看全集免费观看| 中文一区二区完整视频在线观看| 欧美日韩三区四区| 天堂在线观看视频| 国产精品夜夜爽| 91美女片黄在线观看游戏| 亚洲天堂中文在线| 奇米色一区二区| 国产精品久久久久久久久影视| 中文字幕日韩一级| 亚洲三级观看| 91成人在线视频| 国产精品美女久久久久av爽| 日韩视频在线一区二区三区| 欧美精品福利视频| 亚洲熟女www一区二区三区| 亚洲最大av| 久久久极品av| 欧美黑人猛猛猛| 中文字幕免费一区二区| 美女扒开尿口让男人操亚洲视频网站| 欧洲美女女同性互添| 婷婷六月综合| 欧美大尺度在线观看| 男的操女的网站| 中文字幕av亚洲精品一部二部| 欧美另类高清videos| 欧美精品videos极品| 韩国精品一区二区三区| 欧美极品第一页| 国产成人亚洲精品自产在线| 亚洲男女自偷自拍| 国产成人中文字幕| 一女二男一黄一片| 国产一区二区三区免费在线观看| 亚洲最大成人免费视频| 91麻豆成人精品国产| 蜜臀av亚洲一区中文字幕| 国产原创欧美精品| 成人午夜精品福利免费| va亚洲va日韩不卡在线观看| 黄色99视频| 国产最新视频在线观看| 国产精品精品国产色婷婷| 玖玖精品在线视频| 美女高潮在线观看| 欧美日韩高清不卡| 蜜桃视频无码区在线观看| 欧美福利在线播放网址导航| 亚洲一区二区久久久| a一级免费视频| 伊人久久大香线蕉综合热线| 国产国产精品人在线视| 99riav国产| 91一区二区三区在线观看| 图片区小说区区亚洲五月| 怡红院av在线| 色婷婷狠狠综合| 亚洲女人在线观看| 色婷婷综合久久久久久| 久久精品2019中文字幕| 91精品国产乱码在线观看| 久久福利视频一区二区| 国产精品美女诱惑| 日本暖暖在线视频| 欧美视频裸体精品| 国产精品19p| 国产一区网站| 国模私拍视频一区| 国产又粗又长又黄| 久久精品网站免费观看| 欧美黄网在线观看| 51一区二区三区| 精品视频在线播放免| 国产三级国产精品国产国在线观看| 夜夜夜久久久| 91精品黄色| av在线1区2区| 欧美性猛交xxxx免费看久久久| 制服下的诱惑暮生| 久久久影院免费| 欧美在线激情网| 亚洲免费成人网| 国产精品久久久久7777按摩| 久久美女福利视频| 91在线一区| 久青草国产97香蕉在线视频| 毛片在线免费播放| av亚洲产国偷v产偷v自拍| a级网站在线观看| 欧美高清xxx| 伊人久久久久久久久久久| 国产尤物在线视频| www.亚洲在线| 国产手机免费视频| 亚洲一区网址| 欧美日韩ab片| www.久久精品.com| 亚洲美腿欧美偷拍| 91香蕉国产线在线观看| 99久久九九| 国产精品一区久久| 91电影在线播放| 欧美亚洲自拍偷拍| 久久久久无码精品国产sm果冻| 欧美亚洲一区二区三区| 精品一区2区三区| yellow在线观看网址| 精品久久久久久最新网址| 欧美日韩免费一区二区| 国产精品一级片在线观看| 国产精品久久成人免费观看| 成人日韩视频| 欧美日本中文字幕| 人妻精品一区二区三区| 岛国av午夜精品| 免费成人蒂法网站| 亚洲一区二区三区四区五区午夜| 九色91在线视频| 成人小电影网站| 这里只有精品丝袜| 亚洲字幕av一区二区三区四区| 国产精品麻豆网站| 国产精欧美一区二区三区白种人| 亚洲国产精品日韩专区av有中文| 亚洲字幕一区二区| 国产精品69xx| 亚洲精品天天看| 中文字幕久久久久| 亚洲欧美日韩中文字幕一区二区三区| aaaaa黄色片| 亚洲精品影院在线观看| 欧美日韩一区二区三区免费| 国产91精品在线| 久久91超碰青草是什么| 欧美自拍第一页| 色婷婷综合久久久中文一区二区 | 欧美激情理论| 成人免费视频网站入口| 日本不卡1234视频| 最好看的2019的中文字幕视频| 国产露脸91国语对白| 亚洲高清视频的网址| 国产综合精品在线| 国产毛片一区二区| 免费观看精品视频| 天天影视天天精品| 精品久久久久久一区二区里番| 免费观看成人性生生活片| 日韩视频免费在线| 天天躁日日躁狠狠躁喷水| 欧美午夜电影网| 久久久久久激情| 国产色产综合色产在线视频| 美女被艹视频网站| 久久激情视频| 第九区2中文字幕| 国产99久久精品一区二区300| 96pao国产成视频永久免费| 国产拍在线视频| 最近中文字幕日韩精品| 人妻与黑人一区二区三区| 在线区一区二视频| 日本五十熟hd丰满| 国产精品国产a级| 青青草视频播放| 狠狠色伊人亚洲综合成人| 无码aⅴ精品一区二区三区浪潮 | 九九精品在线视频| 国产精品二线| 日韩国产激情在线| 国产又大又长又粗| 在线视频国产一区| 国产精品500部| 亚洲女人小视频在线观看| jizz中文字幕| 91麻豆免费观看| 深夜视频在线观看| 老鸭窝一区二区久久精品| 国产高清精品在线观看| 欧美视频日韩| 国产卡一卡二在线| 久久免费大视频| 欧洲精品码一区二区三区免费看| 久久亚洲道色| 国产精品国产精品| 国产视频网站一区二区三区| 国产精品欧美一区二区| 国产精欧美一区二区三区蓝颜男同| 九九九热精品免费视频观看网站| 日本免费在线观看| 中文字幕久久精品| 麻豆国产在线播放| 日韩精品在线电影| 天天摸天天干天天操| 欧美v亚洲v综合ⅴ国产v| 国产chinasex对白videos麻豆| 欧美丝袜丝交足nylons| 五月激情丁香网| 色婷婷狠狠综合| 无码人妻丰满熟妇精品区| 欧美三级免费观看| 99久久久久久久久| 色www精品视频在线观看| 伦av综合一区| 欧美伊人精品成人久久综合97| 日韩中文字幕高清| 在线看日本不卡| 中文字幕在线观看1| 欧美日韩亚洲综合在线| 国产乱码在线观看| 欧美探花视频资源| 在线播放亚洲精品| 67194成人在线观看| 国产草草影院ccyycom| 日韩欧美国产精品| 亚洲精品国产手机| 亚洲国产精品国自产拍av秋霞| 亚洲欧美国产高清va在线播放| 精品国产一二三| 香蕉视频成人在线| 亚洲视频电影图片偷拍一区| 第一福利在线| 久久久999精品| 一二三四区在线观看| 久久久免费观看视频| 九色porny丨入口在线| 日本精品免费一区二区三区| 成人国产精品一区二区免费麻豆| 国产裸体写真av一区二区| 国产一区二区三区国产精品| av成人综合网| 国产欧美久久一区二区三区| 正在播放一区二区三区| 欧美日韩 国产精品| 日本一道本久久| 蜜臀91精品一区二区三区| 国产成人在线综合| 成人高清伦理免费影院在线观看| 国模精品一区| 午夜一区二区三区视频| 日韩欧美大片在线观看| 午夜久久久久久久久| 羞羞影院体验区| 欧美性大战久久久久久久| 国产理论视频在线观看| 亚洲韩国青草视频| 国产h在线观看| 精品综合久久久久久97| 二区三区不卡| 亚洲一区亚洲二区亚洲三区| 欧美电影免费网站| 中日韩在线视频| av成人黄色| 中文字幕 日韩 欧美| 波多野结衣一区二区三区| 亚洲一区 欧美| 亚洲不卡在线观看| 亚洲一二区视频| 亚洲激情视频在线| 日韩成人影视| 日本成人免费在线| 亚洲精品a区| 亚洲午夜久久久影院伊人| 夜夜嗨av一区二区三区网站四季av| 爱爱爱爱免费视频| 97久久超碰精品国产| 三级影片在线看| 欧美在线999| 天堂在线观看视频| 欧美精品在线播放| jizz免费一区二区三区| 久久精品99久久| 欧美在线高清| jizz欧美性11| 久久久久9999亚洲精品| 久久国产精品波多野结衣| 色av一区二区| 亚洲欧美高清视频| 久久夜色精品国产| 免费视频成人| 神马影院一区二区三区| 国产精品美女久久久| 中文字幕18页| 亚洲精品国产第一综合99久久 | 午夜伦理一区二区| 国产女人高潮时对白| 中文字幕亚洲欧美日韩2019| 一级毛片久久久| 激情小说综合网| 伊人影院久久| 无码国产精品一区二区免费式直播 | 高潮毛片无遮挡| 黄色成人av网| 少妇人妻偷人精品一区二区| 色综合色综合网色综合| 激情久久免费视频| av电影一区二区三区| 精彩视频一区二区三区| 91禁男男在线观看| 欧美视频你懂的| av在线天堂| 国产精品国产三级国产专播精品人| 亚洲人成精品久久久| 日韩在线综合网| 99精品久久99久久久久| 成人在线免费看视频| 精品视频久久久| 免费福利视频一区二区三区| 日本亚洲导航| 美女视频一区二区| 国产麻豆视频在线观看| 91精品国产综合久久婷婷香蕉| 黄色免费在线看| 亚洲一区制服诱惑| 欧美在线亚洲| 国产十八熟妇av成人一区| 午夜精品久久一牛影视| 天堂成人在线| 国产精品夫妻激情| 久久伦理在线| 潘金莲一级淫片aaaaaaa| 亚洲成人tv网| 欧美日韩国产中文字幕在线| 国产精品高潮视频| 欧美电影免费| 久久久久久久久久久影视| 亚洲一区国产视频| 亚洲欧美色视频| 国产精品九九九| 久久精品影视| 亚洲欧美日韩色| 色av成人天堂桃色av| 日本高清视频在线观看| 7777精品伊久久久大香线蕉语言 | 国产精品久久久久一区二区三区 | 中文字幕亚洲高清| 亚洲人永久免费| 欧洲美女精品免费观看视频 | 超薄肉色丝袜一二三| 欧美日韩国产影片| 羞羞视频在线观看不卡| 久久久久久久免费| 久久国产精品72免费观看| 国产精选第一页| 一本色道久久综合狠狠躁篇怎么玩 | 欧美黄色一级视频| 一级性生活毛片| 91麻豆精品国产91久久久使用方法| 狂野欧美性猛交xxxxx视频| 欧美日韩系列| 国产成人精品综合在线观看| 91玉足脚交嫩脚丫在线播放| 日韩中文第一页| 久久99国产精品久久99大师| av污在线观看| 午夜久久久久久久久久一区二区| 91吃瓜网在线观看| 九九九九精品九九九九| 韩国一区二区在线观看| 国产精品一区无码| 九九热这里只有在线精品视| av一区二区在线播放| 一级黄色片毛片| 337p亚洲精品色噜噜噜|