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

這幾種技巧,能有效幫你提升接口查詢速度

數據庫 MySQL
本文列舉到的部分方案對于具體實現大多一筆帶過,實際無論是 MySQL 的分表還是 ES 的業務融合都會面臨很多細節和困難的問題,搞工程的總要絕知此事要躬行。

[[409318]]

 1. MySQL查詢慢是什么體驗?

大多數互聯網應用場景都是讀多寫少,業務邏輯更多分布在寫上。對讀的要求大概就是要快。那么都有什么原因會導致我們完成一次出色的慢查詢呢?

1.1 索引

在數據量不是很大時,大多慢查詢可以用索引解決,大多慢查詢也因為索引不合理而產生。

MySQL 索引基于 B+ 樹,這句話相信面試都背爛了,接著就可以問最左前綴索引、 B+ 樹和各種樹了。

說到最左前綴,實際就是組合索引的使用規則,使用合理組合索引可以有效的提高查詢速度,為什么呢?

因為索引下推。如果查詢條件包含在了組合索引中,比如存在組合索引(a,b),查詢到滿足 a 的記錄后會直接在索引內部判斷 b 是否滿足,減少回表次數。

同時,如果查詢的列恰好包含在組合索引中,即為覆蓋索引,無需回表。索引規則估計都知道,實際開發中也會創建和使用。問題可能更多的是:為什么建了索引還慢?

1.1.1 什么原因導致索引失效

建了索引還慢,多半是索引失效(未使用),可用 explain 分析。索引失效常見原因有 :

  •  where 中使用 != 或 <> 或 or 或表達式或函數(左側)
  •  like 語句 % 開頭
  •  字符串未加’’
  •  索引字段區分度過低,如性別
  •  未匹配最左前綴

(一張嘴就知道老面試題了) 為什么這些做法會導致失效,成熟的 MySQL 也有自己的想法。

1.1.2 這些原因為什么導致索引失效

如果要 MySQL 給一個理由,還是那棵 B+ 樹。

函數操作

當在 查詢 where = 左側使用表達式或函數時,如字段 A 為字符串型且有索引, 有 where length(a) = 6查詢,這時傳遞一個 6 到 A 的索引樹,不難想象在樹的第一層就迷路了。

隱式轉換

隱式類型轉換和隱式字符編碼轉換也會導致這個問題。

  •  隱式類型轉換對于 JOOQ 這種框架來說一般倒不會出現。
  •  隱式字符編碼轉換在連表查詢時倒可能出現,即連表字段的類型相同但字符編碼不同。

破壞了有序性

至于 Like 語句 % 開頭、字符串未加 ’’ 原因基本一致,MySQL 認為對索引字段的操作可能會破壞索引有序性就機智的優化掉了。

不過,對于如性別這種區分度過低的字段,索引失效就不是因為這個原因。

1.1.3 性別字段為什么不要加索引

為什么索引區分度低的字段不要加索引。盲猜效率低,效率的確低,有時甚至會等于沒加。

對于非聚簇索引,是要回表的。假如有 100 條數據,在 sex 字段建立索引,掃描到 51 個 male,需要再回表掃描 51 行。還不如直接來一次全表掃描呢。

所以,InnoDB 引擎對于這種場景就會放棄使用索引,至于區分度多低多少會放棄,大致是某類型的數據占到總的 30% 左右時,就會放棄使用該字段的索引,有興趣可以試一下。

1.1.4 有什么好用且簡單的索引方法

前面說到大多慢查詢都源于索引,怎么建立并用好索引。這里有一些簡單的規則。

  •  索引下推:性別字段不適合建索引,但確實存在查詢場景怎么辦?如果是多條件查詢,可以建立聯合索引利用該特性優化。
  •  覆蓋索引:也是聯合索引,查詢需要的信息在索引里已經包含了,就不會再回表了。
  •  前綴索引:對于字符串,可以只在前 N 位添加索引,避免不必要的開支。假如的確需要如關鍵字查詢,那交給更合適的如 ES 或許更好。
  •  不要對索引字段做函數操作

對于確定的、寫多讀少的表或者頻繁更新的字段都應該考慮索引的維護成本。

1.1.5 如何評價 MySQL 選錯了索引

有時,建立了猛一看挺正確的索引,但事情卻沒按計劃發展。就像“為啥 XXX 有索引,根據它查詢還是慢查詢”。

此刻沒準要自信點:我的代碼不可能有 BUG,肯定是 MySQL 出了問題。MySQL 的確可能有點問題。

這種情況常見于建了一大堆索引,查詢條件一大堆。沒使用你想讓它用的那一個,而是選了個區分度低的,導致過多的掃描。造成的原因基本有兩個:

信息統計不準確:可以使用 analyze table x重新分析。

優化器誤判:可以 force index強制指定。或修改語句引導優化器,增加或刪除索引繞過。

但根據我淺薄的經驗來看,更可能是因為你建了些沒必要的索引導致的。不會真有人以為 MySQL 沒自己機靈吧?

除了上面這些索引原因外,還有下面這些不常見或者說不好判斷的原因存在。

1.2 等MDL鎖

在 MySQL 5.5 版本中引入了 MDL,對一個表做 CRUD 操作時,自動加 MDL 讀鎖;對表結構做變更時,加 MDL 寫鎖。讀寫鎖、寫鎖間互斥。

當某語句拿 MDL 寫鎖就會阻塞 MDL 讀鎖,可以使用show processlist命令查看處于Waiting for table metadata lock狀態的語句。

1.3 等 flush

flush 很快,大多是因為 flush 命令被別的語句堵住,它又堵住了 select 。通過show processlist命令查看時會發現處于Waiting for table flush狀態。

1.4 等行鎖

某事物持有寫鎖未提交。

1.5 當前讀

InnoDB 默認級別是可重復讀。設想一個場景:事物 A 開始事務,事務 B 也開始執行大量更新。B 率先提交, A 是當前讀,就要依次執行 undo log ,直到找到事務 B 開始前的值。

1.6 大表場景

在未二次開發的 MYSQL 中,上億的表肯定算大表,這種情況即使在索引、查詢層面做到了較好實現,面對頻繁聚合操作也可能會出現 IO 或 CPU 瓶頸,即使是單純查詢,效率也會下降。

且 Innodb 每個 B+ 樹節點存儲容量是 16 KB,理論上可存儲 2kw 行左右,這時樹高為3層。我們知道,innodb_buffer_pool 用來緩存表及索引,如果索引數據較大,緩存命中率就堪憂,同時 innodb_buffer_pool 采用 LRU 算法進行頁面淘汰,如果數據量過大,對老或非熱點數據的查詢可能就會把熱點數據給擠出去。

所以對于大表常見優化即是分庫分表和讀寫分離了。

1.6.1 分庫分表

方案

是分庫還是分表呢?這要具體分析。

如果磁盤或網絡有 IO 瓶頸,那就要分庫和垂直分表。

如果是 CPU 瓶頸,即查詢效率偏低,水平分表。

水平即切分數據,分散原有數據到更多的庫表中。

垂直即按照業務對庫,按字段對表切分。

工具方面有 sharding-sphere、TDDL、Mycat。動起手來需要先評估分庫、表數,制定分片規則選 key,再開發和數據遷移,還要考慮擴容問題。

問題

實際運行中,寫問題不大,主要問題在于唯一 ID 生成、非 partition key 查詢、擴容。 

唯一 ID 方法很多,DB 自增、Snowflake、號段、一大波GUID算法等。

非 partition key 查詢常用映射法解決,映射表用到覆蓋索引的話還是很快的。或者可以和其他 DB 組合。

擴容要根據分片時的策略確定,范圍分片的話就很簡單,而隨機取模分片就要遷移數據了。也可以用范圍 + 取模的模式分片,先取模再范圍,可以避免一定程度的數據遷移。

當然,如果分庫還會面臨事務一致性和跨庫 join 等問題。

1.6.2 讀寫分離

為什么要讀寫分離

分表針對大表解決 CPU 瓶頸,分庫解決 IO 瓶頸,二者將存儲壓力解決了。但查詢還不一定。

如果落到 DB 的 QPS 還是很高,且讀遠大于寫,就可以考慮讀寫分離,基于主從模式將讀的壓力分攤,避免單機負載過高,同時也保證了高可用,實現了負載均衡。

問題

主要問題有過期讀和分配機制。

過期讀,也就是主從延時問題,這個對于。

分配機制,是走主還是從庫。可以直接代碼中根據語句類型切換或者使用中間件。

1.7 小結

以上列舉了 MySQL 常見慢查詢原因和處理方法,介紹了應對較大數據場景的常用方法。

分庫分表和讀寫分離是針對大數據或并發場景的,同時也為了提高系統的穩定和拓展性。但也不是所有的問題都最適合這么解決。

2. 如何評價 ElasticSearch

前文有提到對于關鍵字查詢可以使用 ES。那接著聊聊 ES 。

2.1 可以干什么

ES 是基于 Lucene 的近實時分布式搜索引擎。使用場景有全文搜索、NoSQL Json 文檔數據庫、監控日志、數據采集分析等。

對非數據開發來說,常用的應該就是全文檢索和日志了。ES 的使用中,常和 Logstash, Kibana 結合,也成為 ELK 。先來瞧瞧日志怎么用的。

下面是我司日志系統某檢索操作:打開 Kibana 在 Discover 頁面輸入格式如 “xxx” 查詢。

該操作可以在 Dev Tools 的控制臺替換為: 

  1. GET yourIndex/_search    
  2. {        
  3.  "from" : 0, "size" : 10,    
  4.   "query" : {      
  5.         "match_phrase" : {    
  6.              "log" : "xxx"         
  7.          }      
  8.     }      

什么意思?Discover 中加上 “” 和 console 中的 match_phrase 都代表這是一個短語匹配,意味著只保留那些包含全部搜索詞項,且位置與搜索詞項相同的文檔。

2.2 ES 的結構

在 ES 7.0 之前存儲結構是 Index -> Type -> Document,按 MySQL 對比就是 database - table - id(實際這種對比不那么合理)。7.0 之后 Type 被廢棄了,就暫把 index 當做 table 吧。

在 Dev Tools 的 Console 可以通過以下命令查看一些基本信息。也可以替換為 crul 命令。 

  1. GET /_cat/health?v&pretty:查看集群健康狀態  
  2. GET /_cat/shards?v :查看分片狀態  
  3. GET yourindex/_mapping   :index mapping結構  
  4. GET yourindex/_settings   :index setting結構  
  5. GET /_cat/indices?v   :查看當前節點所有索引信息 

重點是 mapping 和 setting ,mapping 可以理解為 MySQL 中表的結構定義,setting 負責控制如分片數量、副本數量。

以下是截取了某日志 index 下的部分 mapping 結構,ES 對字符串類型會默認定義成 text ,同時為它定義一個叫做 keyword 的子字段。這兩的區別是:text 類型會進行分詞, keyword 類型不會進行分詞。 

  1. "******": {     
  2.     "mappings": {      
  3.       "doc": {      
  4.         "properties": {      
  5.           "appname": {      
  6.             "type": "text",     
  7.             "fields": {      
  8.               "keyword": {     
  9.                 "type": "keyword",     
  10.                 "ignore_above": 256      
  11.               }      
  12.             } 

2.3 ES 查詢為什么快?

分詞是什么意思?看完 ES 的索引原理你就 get 了。

ES 基于倒排索引。嘛意思?傳統索引一般是以文檔 ID 作索引,以內容作為記錄。倒排索引相反,根據已有屬性值,去找到相應的行所在的位置,也就是將單詞或內容作為索引,將文檔 ID 作為記錄。

下圖是 ES 倒排索引的示意圖,由 Term index,Team Dictionary 和 Posting List 組成。

圖中的 Ada、Sara 被稱作 term,其實就是分詞后的詞了。如果把圖中的 Term Index 去掉,是不是有點像 MySQL 了?Term Dictionary 就像二級索引,但 MySQL 是保存在磁盤上的,檢索一個 term 需要若干次的 random access 磁盤操作。

而 ES 在 Term Dictionary 基礎上多了層 Term Index ,它以 FST 形式保存在內存中,保存著 term 的前綴,借此可以快速的定位到 Term dictionary 的本 term 的 offset 。而且 FST 形式和 Term dictionary 的 block 存儲方式都很節省內存和磁盤空間。

到這就知道為啥快了,就是因為有了內存中的 Term Index , 它為 term 的索引 Term Dictionary 又做了一層索引。

不過,也不是說 ES 什么查詢都比 MySQL 快。檢索大致分為兩類。

2.3.1 分詞后檢索

ES 的索引存儲的就是分詞排序后的結果。比如圖中的 Ada,在 MySQL 中 %da% 就掃全表了,但對 ES 來說可以快速定位

2.3.2 精確檢索

該情況其實相差是不大的,因為 Term Index 的優勢沒了,卻還要借此找到在 term dictionary 中的位置。也許由于 MySQL 覆蓋索引無需回表會更快一點。

2.4 什么時候用 ES

如前所述,對于業務中的查詢場景什么時候適合使用 ES ?我覺得有兩種。

2.4.1 全文檢索

在 MySQL 中字符串類型根據關鍵字模糊查詢就是一場災難,對 ES 來說卻是小菜一碟。具體場景,比如消息表對消息內容的模糊查詢,即聊天記錄查詢。

但要注意,如果需要的是類似廣大搜索引擎的關鍵字查詢而非日志的短語匹配查詢,就需要對中文進行分詞處理,最廣泛使用的是 ik 。Ik 分詞器的安裝這里不再細說。

什么意思呢?

分詞

開頭對日志的查詢,鍵入 “我可真是個機靈鬼” 時,只會得到完全匹配的信息。

而倘若去掉 “”,又會得到按照 “我”、“可”,“真”….分詞匹配到的所有信息,這明顯會返回很多信息,也是不符合中文語義的。實際期望的分詞效果大概是“我”、“可”、“真是”,“機靈鬼”,之后再按照這種分詞結果去匹配查詢。

這是 ES 默認的分詞策略對中文的支持不友善導致的,按照英語單詞字母來了,可英語單詞間是帶有空格的。這也是不少國外軟件中文搜索效果不 nice 的原因之一。

對于該問題,你可以在 console 使用下方命令,測試當前 index 的分詞效果。 

  1. POST yourindex/_analyze     
  2.  {      
  3.    "field":"yourfield",    
  4.     "text":"我可真是個機靈鬼"     
  5.  

2.4.2 組合查詢

如果數據量夠大,表字段又夠多。把所有字段信息丟到 ES 里創建索引是不合理的。使用 MySQL 的話那就只能按前文提到的分庫分表、讀寫分離來了。何不組合下。

    1.  ES + MySQL

        將要參與查詢的字段信息加上 id,放入 ES,做好分詞。將全量信息放入 MySQL,通過 id 快速檢索。

    2.  ES + HBASE

        如果要省去分庫分表什么的,或許可以拋棄 MySQL ,選擇分布式數據庫,比如 HBASE , 對于這種 NOSQL 來說,存儲能力海量,擴容 easy ,根據 rowkey 查詢也很快。

以上思路都是經典的索引與數據存儲隔離的方案了。

當然,攤子越大越容易出事,也會面臨更多的問題。使用 ES 作索引層,數據同步、時序性、mapping 設計、高可用等都需要考慮。

畢竟和單純做日志系統對比,日志可以等待,用戶不能。

2.5 小結

本節簡單介紹了 ES 為啥快,和這個快能用在哪。現在你可以打開 Kibana 的控制臺試一試了。

如果想在 Java 項目中接入的話,有 SpringBoot 加持,在 ES 環境 OK 的前提下,完全是開箱即用,就差一個依賴了。基本的 CRUD 支持都是完全 OK 的。

3. HBASE

前面有提到 HBASE,什么是 HBASE ,鑒于篇幅這里簡單說說。

3.1 存儲結構

關系型數據庫如 MySQL 是按行來的。

圖片下圖是一個 HBASE 實際的表模型結構。

Row key 是主鍵,按照字典序排序。TimeStamp 是版本號。info 和 area 都是列簇(column Family),列簇將表進行橫向切割。name、age 叫做列,屬于某一個列簇,可進行動態添加。Cell 是具體的 Value 。

3.2 OLTP 和 OLAP

數據處理大致可分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing)。

  •  OLTP是傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理。
  •  OLAP是數據倉庫系統的主要應用,支持復雜分析,側重決策支持,提供直觀易懂的查詢結果。

           面向列的適合做 OLAP,面向行的適用于聯機事務處理(OLTP)。不過 HBASE 并不是 OLAP ,他沒有 transaction,實際上也是面向 CF 的。一般也沒多少人用 HBASE 做 OLAP 。

3.3 RowKey

HBASE 表設計的好不好,就看 RowKey 設計。這是因為 HBASE 只支持三種查詢方式

1、基于 Rowkey 的單行查詢 2、基于 Rowkey 的范圍掃描 3、全表掃描

可見 HBASE 并不支持復雜查詢。

3.4 使用場景

HBASE 并非適用于實時快速查詢。它更適合寫密集型場景,它擁用快速寫入能力,而查詢對于單條或小面積查詢是 OK 的,當然也只能根據 rowkey。但它的性能和可靠性非常高,不存在單點故障。

4. 總結

個人覺得軟件開發是循序漸進的,技術服務于項目,合適比新穎復雜更重要。

如何完成一次快速的查詢?最該做的還是先找找自己的 Bug,解決了當前問題再創造新問題。

本文列舉到的部分方案對于具體實現大多一筆帶過,實際無論是 MySQL 的分表還是 ES 的業務融合都會面臨很多細節和困難的問題,搞工程的總要絕知此事要躬行。 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2017-12-05 13:41:02

SQL數據庫SQL查詢

2009-09-04 11:34:31

NetBeans優化

2010-02-06 14:32:45

ibmdw

2009-04-13 11:20:46

IBMdWWeb

2024-11-01 07:30:00

2016-02-29 09:27:49

用戶體驗阿里技巧

2009-08-17 08:26:56

2025-03-10 00:00:50

2017-05-11 11:30:43

MySQL查詢速度

2024-08-13 08:22:04

緩存機制C#內存緩存工具

2019-08-16 02:00:46

AndroidGoogle 移動系統

2022-02-21 16:16:24

災難恢復解決方案備份

2018-04-03 12:41:30

UAI-Train計算運維

2017-05-10 16:09:12

MySQL數據庫查詢

2024-04-03 10:00:44

Rust編譯開發

2024-04-12 08:28:38

優化查詢語句PostgreSQL索引

2025-07-22 13:17:30

2021-02-16 00:23:02

比特幣加密貨幣數字貨幣

2017-01-20 09:45:20

JavaScript代碼質量

2020-11-18 07:52:57

技巧
點贊
收藏

51CTO技術棧公眾號

一区二区三区中文| 精品三级在线| 久久久一区二区三区捆绑**| 国产精品va在线播放| 国产喷水在线观看| 97品白浆高清久久久久久| 色婷婷综合久久久久中文一区二区 | 九九视频精品免费| 欧美激情在线视频二区| 蜜桃av乱码一区二区三区| 亚洲精选av| 欧美日韩在线播放一区| 僵尸世界大战2 在线播放| 成年人在线视频| av欧美精品.com| 91美女福利视频高清| 久久久黄色大片| 国精品一区二区| 精品国产拍在线观看| 一本色道综合久久欧美日韩精品 | 国产欧美精品久久| 欧美乱大交xxxxx另类电影| 久久久久亚洲av成人无码电影 | 女人一区二区三区| 亚洲成a人片77777精品| 国语精品一区| 亚洲欧洲国产精品| 欧美 日本 国产| www.亚洲一二| 日韩精品一区二区三区中文不卡| 婷婷免费在线观看| 久久亚洲精品爱爱| 在线视频你懂得一区二区三区| 欧美视频免费看欧美视频| 91香蕉在线观看| 国产精品灌醉下药二区| 视频一区二区在线| 国产福利第一视频在线播放| 26uuu精品一区二区在线观看| 古典武侠综合av第一页| 国产高清视频免费观看| 国产精品自在在线| 999精品视频一区二区三区| 国产精品久久无码一三区| 乱人伦精品视频在线观看| 欧美亚洲在线视频| 天堂网中文字幕| 久久久久91| 欧美整片在线观看| 日韩在线视频不卡| 日本中文字幕一区| 国产精品成av人在线视午夜片| 五月婷婷色丁香| 久久久久久久欧美精品| 国产成人精彩在线视频九色| 国产成人a v| 青青草成人在线观看| 国产美女精品视频免费观看| 亚洲综合一区中| 精品一区二区三区香蕉蜜桃| 成人黄色在线免费| www.成人精品| 成人av动漫在线| 欧洲亚洲一区| 在线观看免费版| 亚洲狼人国产精品| 国产欧美日韩小视频| 精精国产xxx在线视频app| 欧美性猛交xxxx乱大交3| 91av俱乐部| 伊人国产精品| 亚洲成年人在线| 性欧美13一14内谢| 91精品亚洲| 国外成人在线直播| 波多野结衣在线电影| 精品亚洲成av人在线观看| av资源站久久亚洲| 九色在线播放| 最新不卡av在线| 免费看又黄又无码的网站| 日韩国产激情| 日韩午夜在线影院| 欧美图片一区二区| 粉嫩av性色av蜜臀av网站| 久久99国内| 日韩一级裸体免费视频| 天堂资源在线播放| 日韩精品亚洲专区| 99精品99久久久久久宅男| 天天舔天天干天天操| 中文乱码免费一区二区| 欧美狂野激情性xxxx在线观| 搜成人激情视频| 日韩午夜av电影| 亚洲一级中文字幕| 国产综合婷婷| 国产精品一区=区| 色一情一乱一乱一区91av| 国产精品你懂的在线欣赏| 国产女教师bbwbbwbbw| 国产精品久久亚洲不卡| 亚洲国产精品电影| 日本一二三区在线观看| 丝袜美腿亚洲色图| 国产精品美女黄网| 在线a免费看| 欧美日韩国产色| 绯色av蜜臀vs少妇| 日韩综合在线| 国产成人精品国内自产拍免费看| www.97超碰| 国产精品毛片a∨一区二区三区| 丁香六月激情婷婷| 欧一区二区三区| 中文字幕日韩专区| 日韩综合在线观看| 91亚洲午夜精品久久久久久| 日韩精品手机在线观看| 国产黄色精品| 亚洲人永久免费| 久久久久久久久久影院| 大尺度一区二区| 成人在线观看www| 韩国精品视频在线观看| 亚洲一级片在线看| 亚洲 欧美 成人| 99精品视频一区二区三区| 亚洲色图都市激情| 中文幕av一区二区三区佐山爱| 亚洲性线免费观看视频成熟| 日日夜夜综合网| 91在线小视频| 亚洲欧洲日产国码无码久久99| 91精品国产自产在线丝袜啪| 欧美成人一区在线| aaa一区二区三区| 亚洲欧美区自拍先锋| 亚洲精品永久视频| 91超碰国产精品| 91视频免费网站| 性欧美videoshd高清| 欧美一三区三区四区免费在线看 | 综合久久久久久| 日韩成人av免费| 亚洲成人精品| 97国产超碰| 国产网红在线观看| 精品国产91久久久久久久妲己| 久久国产在线视频| 成人精品免费网站| 北条麻妃69av| 国产精品一区二区av交换| 国产精品久久久久久久久久99| 国产在线视频福利| 精品视频一区三区九区| 欧美88888| 国产成人av一区二区三区在线| 国产在线观看欧美| 欧美激情15p| 国产激情久久久久| 免费人成在线观看播放视频| 欧美一区二区三区在线视频| 国产一级片久久| 91麻豆免费在线观看| 天天爽天天爽夜夜爽| 国产韩国精品一区二区三区| 91精品国产91久久久久青草| 91九色美女在线视频| 亚洲男女自偷自拍图片另类| 超碰在线免费97| 亚洲码国产岛国毛片在线| 国产精品入口麻豆| 久久看片网站| 久久国产精品免费观看| 卡一精品卡二卡三网站乱码| 国产精品第2页| 99热国产在线中文| 亚洲女人天堂成人av在线| 亚洲中文字幕在线观看| 亚洲一本大道在线| 女人又爽又黄免费女仆| 国内成+人亚洲+欧美+综合在线| 被灌满精子的波多野结衣| 色哟哟精品丝袜一区二区| 国产精品亚洲自拍| 蜜桃av在线播放| 久久精品人人爽| 亚洲 精品 综合 精品 自拍| 欧美日韩1234| 中文字幕亚洲精品在线| 最近中文字幕一区二区三区| 亚洲精品乱码久久久久久久| 麻豆91精品91久久久的内涵| 免费看黄在线看| 手机在线电影一区| 久久99精品久久久久久秒播放器| 日韩黄色碟片| 欧美自拍视频在线观看| 成人福利网站| 伊人伊成久久人综合网站| 亚洲欧美激情在线观看| 欧美色区777第一页| 日韩精品一区二区在线播放| 成人欧美一区二区三区黑人麻豆| 国产免费看av| 99久久久免费精品国产一区二区 | 少妇无套内谢久久久久| 午夜激情一区二区| 麻豆视频在线免费看| 国产欧美日韩不卡| asian性开放少妇pics| 懂色av中文字幕一区二区三区| 91蝌蚪视频在线观看| 亚洲国产专区校园欧美| 穿情趣内衣被c到高潮视频| 成人三级视频| 欧美福利一区二区三区| 精品精品精品| eeuss一区二区三区| 91麻豆精品国产综合久久久| 国产成人亚洲综合91精品| 高清视频在线观看三级| 国模视频一区二区三区| а√天堂资源地址在线下载| 神马久久桃色视频| 高清毛片在线看| 亚洲欧美综合另类中字| 天天综合天天综合| 亚洲国产第一页| 国产成人三级在线观看视频| 欧美一级二级三级蜜桃| 国产欧美久久久| 91精品久久久久久久久99蜜臂| 中文字幕一区二区三区四区视频| 日韩主播视频在线| 国产3p露脸普通话对白| 国模一区二区三区| 性一交一乱一伧国产女士spa| 中文字幕一区二区三区在线视频| 91手机视频在线| 亚洲激情久久| 成年丰满熟妇午夜免费视频 | 99在线精品视频免费观看20| 91精品国产色综合久久| 国产福利资源在线| 精品国产一区久久| 日韩一级免费毛片| 国产丝袜一区视频在线观看 | 国产成人福利av| 韩日午夜在线资源一区二区| 久久综合五月婷婷| 欧美午夜欧美| 日韩在线第七页| 中文字幕av导航| 午夜精品剧场| 六月婷婷在线视频| 日韩精品欧美成人高清一区二区| 天天干在线影院| 国产一区二区伦理片| 熟女人妻一区二区三区免费看| 成人免费视频caoporn| aa片在线观看视频在线播放| 国产日产欧美一区| 欧美精品久久久久久久久46p| 亚洲久草在线视频| 一级片中文字幕| 欧美日韩黄色影视| 黄色av一区二区三区| 精品亚洲一区二区| 美女隐私在线观看| 欧美极度另类性三渗透| 忘忧草在线日韩www影院| 国产精品第8页| 欧美.com| 欧美激情第一页在线观看| 久久美女视频| 国产毛片视频网站| 日本视频一区二区三区| 亚洲熟女乱综合一区二区| 91视频免费播放| 五月天激情丁香| 欧美性xxxx极品高清hd直播| 一区二区日韩在线观看| 精品国产a毛片| a天堂在线资源| 欧美激情图片区| 成人精品国产亚洲| 国产精品久久亚洲7777| 色777狠狠狠综合伊人| 国产毛片视频网站| 国产曰批免费观看久久久| 国产麻豆xxxvideo实拍| 亚洲日本在线天堂| 国产精品免费精品一区| 日韩欧美国产一区二区在线播放 | 一区二区在线电影| 国产亚洲欧美日韩高清| 欧美mv日韩mv国产网站app| 国产粉嫩一区二区三区在线观看 | 成人精品国产| 久久riav二区三区| 午夜精品视频| 粉色视频免费看| 久久精品综合网| 国产精品美女毛片真酒店| 3751色影院一区二区三区| 九色网友自拍视频手机在线| 久久久久久久999精品视频| 免费一区二区三区四区| 蜜桃传媒视频麻豆第一区免费观看| 亚洲色图88| www.久久久精品| 久久久久久久久久久黄色| 久久国产精品波多野结衣av| 欧美日韩高清一区二区不卡| 国产综合在线观看| 26uuu日韩精品一区二区| 中文字幕久久精品一区二区 | 欧美不卡一区二区三区四区| 香蕉视频在线免费看| 国产精品成人观看视频国产奇米| 牛牛视频精品一区二区不卡| 成人在线视频一区二区三区| 国产综合久久久久久鬼色| 日本午夜精品视频| 欧美亚日韩国产aⅴ精品中极品| 香蕉视频成人在线| 国内精品小视频| 91精品国产自产在线丝袜啪| 法国空姐在线观看免费| 国产精一品亚洲二区在线视频| 国产人与禽zoz0性伦| 欧美午夜宅男影院| 国产黄色在线| 国产精品视频大全| 青青草91久久久久久久久| 日本www.色| 日本一区二区动态图| 中文字幕日韩三级| 在线观看不卡av| 欧美综合社区国产| 一区二区三区四区视频在线观看 | 精品产品国产在线不卡| 亚洲经典三级| 三级电影在线看| 欧美综合在线视频| 在线视频二区| 91久久久久久久久| 午夜日韩av| 中文字幕在线播放一区| 欧美体内谢she精2性欧美| 国产精品天堂| 成人av在线亚洲| 欧美日韩免费观看一区=区三区| 2018国产精品| 午夜精品爽啪视频| 黄色在线网站| 成人国产在线视频| 欧美色图首页| 人妻无码一区二区三区| 欧美亚洲自拍偷拍| 黄色大片在线播放| 国产偷久久久精品专区| 久久九九精品| 久久国产高清视频| 亚洲第一精品自拍| 日本综合视频| 免费看欧美黑人毛片| 久久精品人人做人人综合| 一区二区三区在线免费观看视频| 久久激情视频免费观看| 91精品尤物| 九色porny91| 亚洲女爱视频在线| 深夜福利视频在线观看| 国产日韩换脸av一区在线观看| 欧美日韩国产探花| 中文字幕人妻一区二区| 538在线一区二区精品国产| 18video性欧美19sex高清| 日韩成人av网站| 国产乱国产乱300精品| 国产亚洲欧美在线精品| 乱亲女秽乱长久久久| 中文字幕伦av一区二区邻居| 九九热精品国产| 欧美视频在线视频| 97caopor国产在线视频| 欧洲国产精品| 波多野结衣亚洲一区| 一区二区三区日| 欧美在线性视频| 国产精品啊啊啊| 国产精品suv一区二区88| 亚洲精品自在久久| 高清久久一区| 欧美午夜aaaaaa免费视频| 午夜在线成人av| 国产在线观看免费麻豆|