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

波多野结衣一二区| 国内精品免费视频| 成人全视频高清免费观看| 国产日韩欧美一区| 亚洲人成在线一二| 日韩免费一级视频| 91青青在线视频| 国产电影精品久久禁18| 2019av中文字幕| 中国1级黄色片| 麻豆久久一区| 黑人巨大精品欧美一区二区一视频| 麻豆av一区二区三区| 亚洲中文字幕在线一区| 亚洲图片在线| 亚洲人成啪啪网站| 男人操女人下面视频| 欧美大胆a人体大胆做受| 国产精品剧情在线亚洲| 国产嫩草一区二区三区在线观看| 无码日韩精品一区二区| 欧美在线精品一区| 国产一区二区av| 蜜桃色一区二区三区| 自由日本语热亚洲人| 亚洲精品中文在线影院| 水蜜桃亚洲一二三四在线| 亚洲精品综合久久| 久久精品国产网站| 日本免费在线精品| 欧美成人免费看| 成人av资源电影网站| 精品久久久久久无| 五月天婷婷影视| 欧美一级大黄| 欧美日韩亚洲系列| 日本五级黄色片| 精品国产丝袜高跟鞋| 久久奇米777| 国产美女在线精品免费观看| www.国产黄色| 国产一区中文字幕| 国产欧美一区二区三区在线看| 一级片中文字幕| 亚洲激情影院| 欧美激情精品久久久久久久变态| 日本一二三不卡视频| 杨幂一区二区三区免费看视频| 精品88久久久久88久久久| 亚洲av无日韩毛片久久| 国产精品66| 狠狠做深爱婷婷久久综合一区 | 水中色av综合| www.在线成人| 国产视频99| 韩国av在线免费观看| 国产精品综合网| 亚洲在线www| 精品国产乱码一区二区三| 激情文学综合丁香| 91热福利电影| va婷婷在线免费观看| 国产馆精品极品| 97在线电影| 国产综合在线播放| 成人h动漫精品一区二| 国产欧美日韩伦理| 天堂资源最新在线| 久久欧美一区二区| 欧美影视一区二区| 91视频在线观看| 亚洲私人影院在线观看| 97精品国产97久久久久久粉红| 乱人伦中文视频在线| 亚洲欧美一区二区三区久本道91| 偷拍盗摄高潮叫床对白清晰| а√天堂在线官网| 亚洲午夜视频在线观看| 日本午夜激情视频| 电影一区二区三区| 欧美视频一区二区三区四区 | 免费在线观看国产精品| 午夜久久黄色| 2021久久精品国产99国产精品| 国产一级18片视频| 蜜桃久久精品一区二区| 91免费看片网站| 色丁香婷婷综合久久| 26uuu另类欧美亚洲曰本| 亚洲春色综合另类校园电影| 国产成人在线视频免费观看| 五月天久久比比资源色| 欧美性猛交xxx乱久交| 成人在线视频www| 亚洲成人网在线| 男人的天堂官网| 一级毛片免费高清中文字幕久久网| 久久久久久久久久久国产| 国产精品免费精品一区| 激情五月婷婷综合| 久久精品五月婷婷| 麻豆传媒视频在线观看免费| 午夜欧美2019年伦理| www.精品在线| 欧美精品中文字幕亚洲专区| 一本久久综合亚洲鲁鲁| 美女毛片在线观看| 日本亚洲欧美天堂免费| 97中文在线| 啊v视频在线| 亚洲v中文字幕| 性生生活大片免费看视频| 免费成人av资源网| 成人做爽爽免费视频| 日本高清视频免费看| 日本一区免费视频| 国产成人在线小视频| 国产精品毛片久久久久久久久久99999999| 欧美一区二区精美| 精品人妻一区二区三区蜜桃视频| 综合av在线| 国产精品夫妻激情| 免费av网站在线播放| 国产精品久久久久久久久图文区| 欧美极品欧美精品欧美| 国产精品一级在线观看| 亚洲一区二区国产| 久久久国产精品成人免费| 国内精品国产三级国产a久久| 精品蜜桃一区二区三区| 亚洲区欧洲区| 欧美精品一级二级三级| 永久免费看mv网站入口78| 亚洲欧洲午夜| 99久热re在线精品996热视频| 在线日本中文字幕| 91国偷自产一区二区三区成为亚洲经典 | 亚洲精品成人| 国产精品欧美激情在线播放| 蜜桃成人在线视频| 精品久久久久久久久久久久久久| 永久免费看片在线观看| **女人18毛片一区二区| 国产日韩av在线| 在线国产91| 欧美日韩中字一区| 真实乱视频国产免费观看| 美女国产一区| 欧美另类一区| 亚洲少妇视频| 国产午夜精品理论片a级探花| 日本在线观看中文字幕| 成人性色生活片| 波多野结衣av一区二区全免费观看| 精品视频一二| 美女扒开尿口让男人操亚洲视频网站| 91精品国产乱码久久久久| 国产精品乱码一区二区三区软件| 8x8x最新地址| 色琪琪久久se色| 成人h视频在线观看播放| 日本在线观看免费| 欧美二区三区91| 欧美丰满熟妇bbbbbb| 国产精品一区二区久久精品爱涩 | 丰满少妇在线观看资源站| 99国产精品私拍| 免费国产一区二区| av在线日韩| 日韩在线视频二区| 国产乱码精品一区二区| 亚洲精品国产无天堂网2021| 香蕉久久久久久av成人| 国产欧美日韩综合一区在线播放| 麻豆一区区三区四区产品精品蜜桃| 亚洲精品永久免费视频| 亚洲一品av免费观看| 国产又黄又爽视频| 亚洲午夜日本在线观看| 日韩精品卡通动漫网站| 蜜乳av一区二区三区| 激情视频小说图片| 美女呻吟一区| 国产精品美女在线| 中文字幕资源网在线观看| 精品黑人一区二区三区久久 | 一区二区动漫| 日本视频一区在线观看| 99精品在线免费观看| 欧美精品久久久久久久久| 欧美777四色影视在线| 欧美日韩激情一区二区| 久久久久国产精品夜夜夜夜夜| 91在线观看污| 久热精品在线播放| 欧美午夜在线| 日韩免费电影一区二区| 日韩在线观看一区二区三区| 欧美中文在线免费| 欧美r级在线| 精品视频一区在线视频| 91精品国产综合久| 精品久久久久久久久国产字幕 | 亲子乱一区二区三区电影 | 欧美理论电影在线精品| 国产欧美日韩中文字幕在线| 不卡的av影片| 久久精品国产v日韩v亚洲| 午夜福利一区二区三区| 在线电影欧美成精品| 久久久久亚洲av成人毛片韩| **欧美大码日韩| 精品无人区无码乱码毛片国产| 国产精品白丝jk黑袜喷水| 无码人妻丰满熟妇区毛片| 好看不卡的中文字幕| 亚洲一区二区三区午夜| 欧美亚视频在线中文字幕免费| 国产综合色香蕉精品| 高清不卡亚洲| 国内自拍欧美激情| 久久日韩视频| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 欧美日韩亚洲一区二区三区四区| 91综合精品国产丝袜长腿久久| 国产精品免费视频久久久| 免费在线小视频| 欧美交受高潮1| h片在线观看网站| 最好看的2019年中文视频| 你懂的在线播放| 精品少妇一区二区三区视频免付费| 亚洲最大成人在线视频| 一本色道久久综合亚洲aⅴ蜜桃| 国产大片aaa| 亚洲综合网站在线观看| 久久中文免费视频| 国产精品福利一区二区三区| 免费看黄色av| 久久久99精品久久| 色婷婷精品久久二区二区密| 丁香天五香天堂综合| 最好看的中文字幕| 国产一区日韩二区欧美三区| 999在线精品视频| 激情六月婷婷久久| 最新av免费在线观看| 久久国产视频网| 久久婷五月综合| 免费av网站大全久久| 在线视频日韩一区| 蜜桃视频在线观看一区| 亚洲一级免费观看| 美女视频网站久久| 男女视频在线看| 久久成人麻豆午夜电影| 国内国产精品天干天干| 国内不卡的二区三区中文字幕| 欧美一级xxxx| 国产福利一区二区三区视频 | 91丨porny丨首页| 欧美熟妇一区二区| 国产婷婷色一区二区三区四区| 久久午夜福利电影| 国产精品久久一卡二卡| 免费在线观看a级片| 亚洲精品成人a在线观看| 久草免费在线观看视频| 午夜久久电影网| 在线免费观看国产精品| 欧美三区在线观看| 国产乱码精品一区二三区蜜臂| 日韩免费成人网| 国产精品国产高清国产| 国产一区二区三区精品久久久| 97最新国自产拍视频在线完整在线看| 色视频www在线播放国产成人| a毛片在线观看| 午夜精品一区二区三区视频免费看| 免费h在线看| 国产九九精品视频| 亚洲福利合集| 久久久一本精品99久久精品| 成人激情开心网| 麻豆映画在线观看| 亚洲制服少妇| 亚洲精品国产一区二区三区| 粉嫩高潮美女一区二区三区| 黄色在线观看av| 中文字幕不卡在线| 久草成人在线视频| 欧洲另类一二三四区| 99久久亚洲精品日本无码| 日韩av有码在线| 日韩在线免费电影| 久久久在线视频| 素人啪啪色综合| 成人资源视频网站免费| 国语产色综合| www.男人天堂网| 日韩精品一卡二卡三卡四卡无卡| 性鲍视频在线观看| 久久久久久久综合色一本| 中文字幕另类日韩欧美亚洲嫩草| 欧美午夜精品久久久久久久| 国产精品人人爽| 亚洲色图17p| 国模私拍视频在线播放| 国产精品影院在线观看| 欧美三级午夜理伦三级在线观看 | 伊人成年综合电影网| 天美星空大象mv在线观看视频| 成人午夜视频免费看| 国产精品久久国产精麻豆96堂| 欧美日韩精品国产| 99热这里只有精品在线观看| 国产一区二区三区网站| h片在线观看视频免费| 成人国内精品久久久久一区| 美女毛片一区二区三区四区最新中文字幕亚洲 | 91国内在线视频| 欧洲一区在线| 亚洲一区二区三区午夜| 久久最新视频| 99久久人妻精品免费二区| 亚洲激情网站免费观看| 一区二区国产欧美| 国产一区二区免费| 欧美第一视频| 久久综合福利| 在线综合欧美| 色婷婷精品久久二区二区密| 亚洲综合久久久久| 精品久久人妻av中文字幕| www.日韩欧美| 日韩成人在线电影| 亚洲精品欧美精品| 日本伊人色综合网| 色屁屁草草影院ccyy.com| 欧美性极品少妇精品网站| 性xxxx搡xxxxx搡欧美| 久久久久免费视频| 成人直播在线观看| 被灌满精子的波多野结衣| 国产成人av电影在线播放| 美国黄色小视频| 日韩一区二区免费电影| 在线免费观看的av| 亚洲一区二区三区成人在线视频精品 | 日韩av在线一区二区三区| 久久一区国产| 日本一级免费视频| 欧美在线视频全部完| 成人性生交大片免费看午夜| 国产精品丝袜视频| 99免费精品| 少妇性l交大片7724com| 亚洲永久免费av| 开心激情综合网| 欧美在线视频网站| 狠狠做六月爱婷婷综合aⅴ| 一级在线免费视频| 国产精品国产三级国产| 国产精品久久久久久无人区| 欧美床上激情在线观看| 亚洲视频精选| 免费av观看网址| 久久久久久久久久久久久夜| 99re热视频| 久久影院在线观看| 91蜜桃臀久久一区二区| av黄色在线网站| 亚洲国产经典视频| av一区二区三| 91精品91久久久久久| 精品freesex老太交| 亚洲精品国产一区二区三区| 亚洲香肠在线观看| 国产在线三区| 91老司机在线| 99精品国产福利在线观看免费| 亚洲做受高潮无遮挡| 欧美日韩电影一区| segui88久久综合| 日韩亚洲视频在线| 国产一区二区中文字幕| a v视频在线观看| 色妞在线综合亚洲欧美| 51vv免费精品视频一区二区| 日韩avxxx| 亚洲欧美日韩在线| 天堂中文字幕在线| 亚洲free性xxxx护士白浆| 99精品免费网| 五月天婷婷丁香网| 欧美精品一区二区三区蜜臀| 成人精品高清在线视频| 亚洲精品蜜桃久久久久久| 中文字幕不卡在线观看| 色香蕉在线视频|