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

MySQL千萬級大表優化,看這一篇就忘不掉了!

數據庫 MySQL
千萬級大表如何優化,這是一個很有技術含量的問題,通常我們的直覺思維都會跳轉到拆分或者數據分區,在此我想做一些補充和梳理,想和大家做一些這方面的經驗總結,也歡迎大家提出建議。

千萬級大表如何優化,這是一個很有技術含量的問題,通常我們的直覺思維都會跳轉到拆分或者數據分區,在此我想做一些補充和梳理,想和大家做一些這方面的經驗總結,也歡迎大家提出建議。 

[[314569]] 

圖片來自 Pexels

從一開始腦海里火光四現,到不斷的自我批評,后來也參考了一些團隊的經驗,我整理了下面的大綱內容。 

 

既然要吃透這個問題,我們勢必要回到本源,我把這個問題分為三部分:“千萬級”,“大表”,“優化”,也分別對應我們在圖中標識的“數據量”,“對象”和“目標”。

我來逐步展開說明一下,從而給出一系列的解決方案。

數據量:千萬級

千萬級其實只是一個感官的數字,就是我們印象中的數據量大。

這里我們需要把這個概念細化,因為隨著業務和時間的變化,數據量也會有變化,我們應該是帶著一種動態思維來審視這個指標,從而對于不同的場景我們應該有不同的處理策略。

①數據量為千萬級,可能達到億級或者更高

通常是一些數據流水,日志記錄的業務,里面的數據隨著時間的增長會逐步增多,超過千萬門檻是很容易的一件事情。

②數據量為千萬級,是一個相對穩定的數據量

如果數據量相對穩定,通常是在一些偏向于狀態的數據,比如有 1000 萬用戶,那么這些用戶的信息在表中都有相應的一行數據記錄,隨著業務的增長,這個量級相對是比較穩定的。

③數據量為千萬級,不應該有這么多的數據

這種情況是我們被動發現的居多,通常發現的時候已經晚了,比如你看到一個配置表,數據量上千萬;或者說一些表里的數據已經存儲了很久,99% 的數據都屬于過期數據或者垃圾數據。

數據量是一個整體的認識,我們需要對數據做更近一層的理解,這就可以引出第二個部分的內容。

對象:數據表

數據操作的過程就好比數據庫中存在著多條管道,這些管道中都流淌著要處理的數據,這些數據的用處和歸屬是不一樣的。

一般根據業務類型把數據分為三種:

①流水型數據

流水型數據是無狀態的,多筆業務之間沒有關聯,每次業務過來的時候都會產生新的單據。

比如交易流水、支付流水,只要能插入新單據就能完成業務,特點是后面的數據不依賴前面的數據,所有的數據按時間流水進入數據庫。

②狀態型數據

狀態型數據是有狀態的,多筆業務之間依賴于有狀態的數據,而且要保證該數據的準確性,比如充值時必須要拿到原來的余額,才能支付成功。

③配置型數據

此類型數據數據量較小,而且結構簡單,一般為靜態數據,變化頻率很低。

至此,我們可以對整體的背景有一個認識了,如果要做優化,其實要面對的是這樣的 3*3 的矩陣,如果要考慮表的讀寫比例(讀多寫少,讀少寫多...),那么就會是 3*3*4=24 種,顯然做窮舉是不顯示的,而且也完全沒有必要,可以針對不同的數據存儲特性和業務特點來指定不同的業務策略。

對此我們采取抓住重點的方式,把常見的一些優化思路梳理出來,尤其是里面的核心思想,也是我們整個優化設計的一把尺子,而難度決定了我們做這件事情的動力和風險。 

 

而對于優化方案,我想采用面向業務的維度來進行闡述。

目標:優化

在這個階段,我們要說優化的方案了,總結的有點多,相對來說是比較全了。整體分為五個部分: 

 

其實我們通常所說的分庫分表等方案只是其中的一小部分,如果展開之后就比較豐富了。 

 

不難理解,我們要支撐的表數據量是千萬級別,相對來說是比較大了,DBA 要維護的表肯定不止一張,如何能夠更好的管理,同時在業務發展中能夠支撐擴展,同時保證性能,這是擺在我們面前的幾座大山。

我們分別來說一下這五類改進方案:

  • 規范設計
  • 業務層優化
  • 架構層優化
  • 數據庫優化
  • 管理優化

規范設計

在此我們先提到的是規范設計,而不是其他高大上的設計方案。

黑格爾說:秩序是自由的第一條件。在分工協作的工作場景中尤其重要,否則團隊之間互相牽制太多,問題多多。

我想提到如下的幾個規范,其實只是屬于開發規范的一部分內容,可以作為參考。 

 

規范的本質不是解決問題,而是有效杜絕一些潛在問題,對于千萬級大表要遵守的規范,我梳理了如下的一些細則,基本可以涵蓋我們常見的一些設計和使用問題。

比如表的字段設計不管三七二十一,都是 varchar(500),其實是很不規范的一種實現方式,我們來展開說一下這幾個規范。

配置規范:

  • MySQL 數據庫默認使用 InnoDB 存儲引擎。
  • 保證字符集設置統一,MySQL 數據庫相關系統、數據庫、表的字符集都使用 UTF8,應用程序連接、展示等可以設置字符集的地方也都統一設置為 UTF8 字符集。
  • 注:UTF8 格式是存儲不了表情類數據,需要使用 UTF8MB4,可在 MySQL 字符集里面設置。在 8.0 中已經默認為 UTF8MB4,可以根據公司的業務情況進行統一或者定制化設置。
  • MySQL 數據庫的事務隔離級別默認為 RR(Repeatable-Read),建議初始化時統一設置為 RC(Read-Committed),對于 OLTP 業務更適合。
  • 數據庫中的表要合理規劃,控制單表數據量,對于 MySQL 數據庫來說,建議單表記錄數控制在 2000W 以內。
  • MySQL 實例下,數據庫、表數量盡可能少;數據庫一般不超過 50 個,每個數據庫下,數據表數量一般不超過 500 個(包括分區表)。

建表規范:

  • InnoDB 禁止使用外鍵約束,可以通過程序層面保證。
  • 存儲精確浮點數必須使用 DECIMAL 替代 FLOAT 和 DOUBLE。
  • 整型定義中無需定義顯示寬度,比如:使用 INT,而不是 INT(4)。
  • 不建議使用 ENUM 類型,可使用 TINYINT 來代替。
  • 盡可能不使用 TEXT、BLOB 類型,如果必須使用,建議將過大字段或是不常用的描述型較大字段拆分到其他表中;另外,禁止用數據庫存儲圖片或文件。
  • 存儲年時使用 YEAR(4),不使用 YEAR(2)。
  • 建議字段定義為 NOT NULL。
  • 建議 DBA 提供 SQL 審核工具,建表規范性需要通過審核工具審核后。

命名規范:

  • 庫、表、字段全部采用小寫。
  • 庫名、表名、字段名、索引名稱均使用小寫字母,并以“_”分割。
  • 庫名、表名、字段名建議不超過 12 個字符。(庫名、表名、字段名支持最多 64 個字符,但為了統一規范、易于辨識以及減少傳輸量,統一不超過 12 字符)
  • 庫名、表名、字段名見名知意,不需要添加注釋。

對于對象命名規范的一個簡要總結如下表所示,供參考: 

 

命名列表

索引規范:

  • 索引建議命名規則:idx_col1_col2[_colN]、uniq_col1_col2[_colN](如果字段過長建議采用縮寫)。
  • 索引中的字段數建議不超過 5 個。
  • 單張表的索引個數控制在 5 個以內。
  • InnoDB 表一般都建議有主鍵列,尤其在高可用集群方案中是作為必須項的。
  • 建立復合索引時,優先將選擇性高的字段放在前面。
  • UPDATE、DELETE 語句需要根據 WHERE 條件添加索引。
  • 不建議使用 % 前綴模糊查詢,例如 LIKE “%weibo”,無法用到索引,會導致全表掃描。
  • 合理利用覆蓋索引,例如:SELECT email,uid FROM user_email WHERE uid=xx,如果 uid 不是主鍵,可以創建覆蓋索引 idx_uid_email(uid,email)來提高查詢效率。
  • 避免在索引字段上使用函數,否則會導致查詢時索引失效。
  • 確認索引是否需要變更時要聯系 DBA。

應用規范:

  • 避免使用存儲過程、觸發器、自定義函數等,容易將業務邏輯和DB耦合在一起,后期做分布式方案時會成為瓶頸。
  • 考慮使用 UNION ALL,減少使用 UNION,因為 UNION ALL 不去重,而少了排序操作,速度相對比 UNION 要快,如果沒有去重的需求,優先使用 UNION ALL。
  • 考慮使用 limit N,少用 limit M,N,特別是大表或 M 比較大的時候。
  • 減少或避免排序,如:group by 語句中如果不需要排序,可以增加 order by null。
  • 統計表中記錄數時使用 COUNT(*),而不是 COUNT(primary_key) 和 COUNT(1)。
  • InnoDB 表避免使用 COUNT(*) 操作,計數統計實時要求較強可以使用 Memcache 或者 Redis,非實時統計可以使用單獨統計表,定時更新。
  • 做字段變更操作(modify column/change column)的時候必須加上原有的注釋屬性,否則修改后,注釋會丟失。
  • 使用 prepared statement 可以提高性能并且避免 SQL 注入。
  • SQL 語句中 IN 包含的值不應過多。
  • UPDATE、DELETE 語句一定要有明確的 WHERE 條件。
  • WHERE 條件中的字段值需要符合該字段的數據類型,避免 MySQL 進行隱式類型轉化。
  • SELECT、INSERT 語句必須顯式的指明字段名稱,禁止使用 SELECT * 或是 INSERT INTO table_name values()。
  • INSERT 語句使用 batch 提交(INSERT INTO table_name VALUES(),(),()……),values 的個數不應過多。

業務層優化

業務層優化應該是收益最高的優化方式了,而且對于業務層完全可見,主要有業務拆分,數據拆分和兩類常見的優化場景(讀多寫少,讀少寫多)! 

 

①業務拆分

業務拆分分為如下兩個方面:

  • 將混合業務拆分為獨立業務
  • 將狀態和歷史數據分離

業務拆分其實是把一個混合的業務剝離成為更加清晰的獨立業務,這樣業務 1,業務 2......獨立的業務使得業務總量依舊很大,但是每個部分都是相對獨立的,可靠性依然有保證。

對于狀態和歷史數據分離,我可以舉一個例子來說明。

例如:我們有一張表 Account,假設用戶余額為 100。 

 

我們需要在發生數據變更后,能夠追溯數據變更的歷史信息,如果對賬戶更新狀態數據,增加 100 的余額,這樣余額為 200。

這個過程可能對應一條 update 語句,一條 insert 語句。對此我們可以改造為兩個不同的數據源,account 和 account_hist。

在 account_hist 中就會是兩條 insert 記錄,如下:

 

而在 account 中則是一條 update 語句,如下: 

 

這也是一種很基礎的冷熱分離,可以大大減少維護的復雜度,提高業務響應效率。

②數據拆分

按照日期拆分:這種使用方式比較普遍,尤其是按照日期維度的拆分,其實在程序層面的改動很小,但是擴展性方面的收益很大。

  • 數據按照日期維度拆分,如 test_20191021。
  • 數據按照周月為維度拆分,如 test_201910。
  • 數據按照季度,年維度拆分,如 test_2019。

采用分區模式:分區模式也是常見的使用方式,采用 hash,range 等方式會多一些。

在 MySQL 中我是不大建議使用分區表的使用方式,因為隨著存儲容量的增長,數據雖然做了垂直拆分,但是歸根結底,數據其實難以實現水平擴展,在 MySQL 中是有更好的擴展方式。

③讀多寫少優化場景

采用緩存,采用 Redis 技術,將讀請求打在緩存層面,這樣可以大大降低 MySQL 層面的熱點數據查詢壓力。

④讀少寫多優化場景

讀少寫多優化場景,可以采用三步走:

  • 采用異步提交模式,異步對于應用層來說最直觀的就是性能的提升,產生最少的同步等待。
  • 使用隊列技術,大量的寫請求可以通過隊列的方式來進行擴展,實現批量的數據寫入。
  • 降低寫入頻率,這個比較難理解,我舉個例子:

對于業務數據,比如積分類,相比于金額來說業務優先級略低的場景,如果數據的更新過于頻繁,可以適度調整數據更新的范圍(比如從原來的每分鐘調整為 10 分鐘)來減少更新的頻率。

例如:更新狀態數據,積分為 200,如下圖所示: 

 

可以改造為,如下圖所示: 

 

如果業務數據在短時間內更新過于頻繁,比如 1 分鐘更新 100 次,積分從 100 到 10000,則可以根據時間頻率批量提交。

例如:更新狀態數據,積分為 100,如下圖所示: 

 

無需生成 100 個事務(200 條 SQL 語句)可以改造為 2 條 SQL 語句,如下圖所示: 

 

對于業務指標,比如更新頻率細節信息,可以根據具體業務場景來討論決定。

架構層優化

架構層優化其實就是我們認為的那種技術含量很高的工作,我們需要根據業務場景在架構層面引入一些新的花樣來。 

 

①系統水平擴展場景

采用中間件技術:可以實現數據路由,水平擴展,常見的中間件有 MyCAT,ShardingSphere,ProxySQL 等。 

 

采用讀寫分離技術:這是針對讀需求的擴展,更側重于狀態表,在允許一定延遲的情況下,可以采用多副本的模式實現讀需求的水平擴展,也可以采用中間件來實現,如 MyCAT,ProxySQL,MaxScale,MySQL Router 等。  

 

采用負載均衡技術:常見的有 LVS 技術或者基于域名服務的 Consul 技術等。

②兼顧 OLTP+OLAP 的業務場景

可以采用 NewSQL,優先兼容 MySQL 協議的 HTAP 技術棧,如 TiDB。

③離線統計的業務場景

有幾類方案可供選擇:

  • 采用 NoSQL 體系,主要有兩類,一類是適合兼容 MySQL 協議的數據倉庫體系,常見的有 Infobright 或者 ColumnStore,另外一類是基于列式存儲,屬于異構方向,如 HBase 技術。
  • 采用數倉體系,基于 MPP 架構,如使用 Greenplum 統計,如 T+1 統計。

數據庫優化

數據庫優化,其實可打的牌也不少,但是相對來說空間沒有那么大了,我們來逐個說一下。 

 

①事務優化

根據業務場景選擇事務模型,是否是強事務依賴。對于事務降維策略,我們來舉出幾個小例子來。

降維策略 1:存儲過程調用轉換為透明的 SQL 調用

對于新業務而言,使用存儲過程顯然不是一個好主意,MySQL 的存儲過程和其他商業數據庫相比,功能和性能都有待驗證,而且在目前輕量化的業務處理中,存儲過程的處理方式太“重”了。

有些應用架構看起來是按照分布式部署的,但在數據庫層的調用方式是基于存儲過程,因為存儲過程封裝了大量的邏輯,難以調試,而且移植性不高。

這樣業務邏輯和性能壓力都在數據庫層面了,使得數據庫層很容易成為瓶頸,而且難以實現真正的分布式。

所以有一個明確的改進方向就是對于存儲過程的改造,把它改造為 SQL 調用的方式,可以極大地提高業務的處理效率,在數據庫的接口調用上足夠簡單而且清晰可控。

降維策略 2:DDL 操作轉換為 DML 操作

有些業務經常會有一種緊急需求,總是需要給一個表添加字段,搞得 DBA 和業務同學都挺累,可以想象一個表有上百個字段,而且基本都是 name1,name2……name100,這種設計本身就是有問題的,更不用考慮性能了。

究其原因,是因為業務的需求動態變化,比如一個游戲裝備有 20 個屬性,可能過了一個月之后就增加到了 40 個屬性,這樣一來,所有的裝備都有 40 個屬性,不管用沒用到,而且這種方式也存在諸多的冗余。

我們在設計規范里面也提到了一些設計的基本要素,在這些基礎上需要補充的是,保持有限的字段,如果要實現這些功能的擴展,其實完全可以通過配置化的方式來實現,比如把一些動態添加的字段轉換為一些配置信息。

配置信息可以通過 DML 的方式進行修改和補充,對于數據入口也可以更加動態、易擴展。

降維策略 3:Delete 操作轉換為高效操作

有些業務需要定期來清理一些周期性數據,比如表里的數據只保留一個月,那么超出時間范圍的數據就要清理掉了。

而如果表的量級比較大的情況下,這種 Delete 操作的代價實在太高,我們可以有兩類解決方案來把 Delete 操作轉換為更為高效的方式。

第一種是根據業務建立周期表,比如按照月表、周表、日表等維度來設計,這樣數據的清理就是一個相對可控而且高效的方式了。

第二種方案是使用 MySQL rename 的操作方式,比如一張 2 千萬的大表要清理 99% 的數據,那么需要保留的 1% 的數據我們可以很快根據條件過濾補錄,實現“移形換位”。

②SQL 優化

其實相對來說需要的極簡的設計,很多點都在規范設計里面了,如果遵守規范,八九不離十的問題都會杜絕掉。

在此補充幾點:

  • SQL 語句簡化,簡化是 SQL 優化的一大利器,因為簡單,所以優越。
  • 盡可能避免或者杜絕多表復雜關聯,大表關聯是大表處理的噩夢,一旦打開了這個口子,越來越多的需求需要關聯,性能優化就沒有回頭路了,更何況大表關聯是 MySQL 的弱項,盡管 Hash Join 才推出,不要像掌握了絕對大殺器一樣,在商業數據庫中早就存在,問題照樣層出不窮。
  • SQL 中盡可能避免反連接,避免半連接,這是優化器做得薄弱的一方面,什么是反連接,半連接?
  • 其實比較好理解,舉個例子:not in,not exists 就是反連接,in,exists 就是半連接,在千萬級大表中出現這種問題,性能是幾個數量級的差異。

③索引優化

應該是大表優化中需要把握的一個度:

  • 首先必須有主鍵,規范設計中第一條就是,此處不接收反駁。
  • 其次,SQL 查詢基于索引或者唯一性索引,使得查詢模型盡可能簡單。
  • 最后,盡可能杜絕范圍數據的查詢,范圍掃描在千萬級大表情況下還是盡可能減少。

管理優化

這部分應該是在所有的解決方案中最容易被忽視的部分了,我放在最后,在此也向運維同事致敬,總是為很多認為本應該正常的問題盡職盡責(背鍋)。

 

千萬級大表的數據清理一般來說是比較耗時的,在此建議在設計中需要完善冷熱數據分離的策略,可能聽起來比較拗口,我來舉一個例子,把大表的 Drop 操作轉換為可逆的 DDL 操作。 

Drop 操作是默認提交的,而且是不可逆的,在數據庫操作中都是跑路的代名詞,MySQL 層面目前沒有相應的 Drop 操作恢復功能,除非通過備份來恢復,但是我們可以考慮將 Drop 操作轉換為一種可逆的 DDL 操作。

MySQL 中默認每個表有一個對應的 ibd 文件,其實可以把 Drop 操作轉換為一個 rename 操作,即把文件從 testdb 遷移到 testdb_arch 下面。

從權限上來說,testdb_arch 是業務不可見的,rename 操作可以平滑的實現這個刪除功能,如果在一定時間后確認可以清理,則數據清理對于已有的業務流程是不可見的,如下圖所示: 

 

此外,還有兩個額外建議,一個是對于大表變更,盡可能考慮低峰時段的在線變更,比如使用 pt-osc 工具或者是維護時段的變更,就不再贅述了。

最后總結一下,其實就是一句話:千萬級大表的優化是根據業務場景,以成本為代價進行優化的,絕對不是孤立的一個層面的優化。

作者:楊建榮

編輯:陶家龍、孫淑娟

出處:轉載自微信公眾號楊建榮的學習筆記(ID:jianrong-notes)

 

 

責任編輯:武曉燕 來源: 楊建榮學習筆記
相關推薦

2023-11-18 09:30:42

模型AI

2023-02-10 09:04:27

2020-02-18 16:20:03

Redis ANSI C語言日志型

2022-06-20 09:01:23

Git插件項目

2023-09-11 08:13:03

分布式跟蹤工具

2021-04-08 07:37:39

隊列數據結構算法

2022-08-01 11:33:09

用戶分析標簽策略

2018-11-12 08:07:04

Nginx優化并發

2019-05-14 09:31:16

架構整潔軟件編程范式

2023-10-17 08:15:28

API前后端分離

2024-09-23 08:00:00

消息隊列MQ分布式系統

2025-08-07 04:10:00

光模塊AI網絡

2018-05-22 08:24:50

PythonPyMongoMongoDB

2020-07-03 08:21:57

Java集合框架

2022-04-07 10:39:21

反射Java安全

2017-03-11 22:19:09

深度學習

2025-07-04 02:12:00

2022-07-06 12:07:06

Python函數式編程

2023-11-06 07:21:13

內存結構Jvm

2019-04-01 10:43:59

Linux問題故障
點贊
收藏

51CTO技術棧公眾號

国产69视频在线观看| 亚洲wwwav| 久久亚洲无码视频| 国产精品igao视频网网址不卡日韩| 亚洲人成人一区二区在线观看| 国产精品午夜av在线| 久久久久久久久久成人| 国产高清一区二区| 日韩大片在线观看视频| 日本黄大片一区二区三区| 久久99亚洲网美利坚合众国| 久久久国产精品不卡| 91传媒视频在线观看| 青青草免费观看视频| 久久久精品久久久久久96| 日韩经典一区二区三区| 亚洲成人手机在线观看| 伊人久久国产| 亚洲一区在线免费观看| 新呦u视频一区二区| 亚洲精品久久久久久无码色欲四季| 久久不射中文字幕| 欧美激情一区二区久久久| 久久久精品成人| 日韩有码一区| 精品国产污网站| 国产传媒免费观看| 三上悠亚激情av一区二区三区| 一区二区在线电影| 樱花www成人免费视频| 你懂的视频在线免费| 国产成人av电影在线播放| 国产精品亚洲欧美导航| 九九精品免费视频| 亚洲日产国产精品| 欧美黑人性生活视频| www.com.av| 国产精品中文字幕亚洲欧美| 亚洲精品自产拍| 在线观看免费视频国产| 国产一区二区三区亚洲综合| 欧美三级电影在线看| 亚欧在线免费观看| 丝袜美腿一区| 色综合色综合色综合色综合色综合| 国产成人在线小视频| 超碰电影在线播放| 中文字幕亚洲不卡| 亚洲精品中文字幕在线| 国产三级在线免费| 国产亚洲一区二区三区四区| 欧美日韩在线高清| 日本人妖在线| 久久久久久亚洲综合影院红桃| 国产精品久久国产三级国电话系列| 国产jzjzjz丝袜老师水多| 国产一区二区福利| 91中文在线视频| 国产成人精品无码高潮| 国产精品综合在线视频| 亚洲综合中文字幕68页| 国产xxxx孕妇| 懂色av一区二区夜夜嗨| 国产富婆一区二区三区| 国产91久久久| proumb性欧美在线观看| 鲁鲁视频www一区二区| 日韩av高清在线| 久久久天堂av| 亚洲v日韩v欧美v综合| 日本免费在线视频| 亚洲男同性视频| 日韩国产小视频| av日韩中文| 色综合天天视频在线观看| www.欧美日本| 精品视频国内| 亚洲国产欧美精品| 精品夜夜澡人妻无码av| 精品国产一区二区三区香蕉沈先生| 一区二区在线视频| 中国毛片直接看| 伊人精品成人久久综合软件| 日韩69视频在线观看| 看黄色一级大片| 狠狠色丁香婷婷综合| 91精品国产91久久久久青草| 日本xxxx人| 国产免费观看久久| 超薄肉色丝袜足j调教99| 99thz桃花论族在线播放| 日本精品一区二区三区高清| 日韩中文字幕a| 超碰地址久久| 一区二区三区高清国产| 国产精品白嫩白嫩大学美女| 亚洲视频播放| 成人黄色影片在线| 香蕉视频免费看| 《视频一区视频二区| 日日摸日日碰夜夜爽无码| 97欧美成人| 亚洲成人在线网| 国产精品理论在线| 亚洲香蕉网站| 国产精品一二三在线| 男人天堂网在线视频| 中文在线免费一区三区高中清不卡| 蜜臀av性久久久久蜜臀av| 在线观看欧美日韩电影| 欧美一级夜夜爽| 四虎国产精品成人免费入口| 激情综合激情| 国产一区二区在线免费视频| 四虎影院在线域名免费观看| 亚洲三级电影网站| 日韩在线第三页| 欧美1区二区| 欧美精品手机在线| 中文字幕激情视频| 91亚洲精品乱码久久久久久蜜桃 | 激情综合网婷婷| 视频二区欧美毛片免费观看| 一区二区三区亚洲| 综合激情网五月| 成人一二三区视频| 国产美女视频免费| 成人国产精品一区二区免费麻豆 | 国产精品美女| 国产精品久久久久久久小唯西川 | 一区二区三区四区中文字幕| 鲁一鲁一鲁一鲁一av| 五月国产精品| 97超级碰碰人国产在线观看| 蜜桃91麻豆精品一二三区| 亚洲日本乱码在线观看| 欧美大片久久久| 日韩欧美精品综合| 国产精品久久久久高潮| 黄色片在线看| 色美美综合视频| 朝桐光av一区二区三区| 黄色国产精品| 成人精品一二区| 中文字幕在线观看网站| 在线不卡中文字幕播放| 国产精品麻豆免费版现看视频| 丝袜美腿高跟呻吟高潮一区| 女女同性女同一区二区三区91| 九色porny视频在线观看| 亚洲精品国偷自产在线99热 | 精品动漫一区| 国产精品日韩高清| 草草视频在线观看| 日韩精品极品在线观看| 欧美bbbbbbbbbbbb精品| 99久久免费国产| 日日橹狠狠爱欧美超碰| 中文字幕伦av一区二区邻居| 国产91精品不卡视频| 嫩草在线播放| 欧美在线不卡视频| 可以免费看av的网址| 精品一区二区在线播放| 午夜探花在线观看| www.久久爱.com| 九九精品视频在线| 色欲av伊人久久大香线蕉影院| 亚洲成人激情av| 欧美高清性xxxx| 日日夜夜免费精品视频| 一区二区不卡在线视频 午夜欧美不卡'| 四虎精品在线观看| 色综合久久88| 青梅竹马是消防员在线| 精品视频在线免费观看| 国内偷拍精品视频| 成人网在线播放| 妞干网在线免费视频| 日韩黄色大片网站| 99热99热| 88xx成人永久免费观看| 久久久99免费视频| 男人天堂一区二区| 欧美在线免费观看亚洲| avtt天堂在线| 久久综合精品国产一区二区三区| 手机视频在线观看| 国产精品啊v在线| 日本一区二区精品| 欧美三级一区| 日韩av手机在线| 在线网址91| 亚洲精品自拍视频| 国产精品无码一区二区桃花视频| 亚洲成人免费av| 制服丨自拍丨欧美丨动漫丨| 丁香婷婷综合激情五月色| 精品国产成人av在线免| 女人香蕉久久**毛片精品| 久久久久久久有限公司| 精品999日本久久久影院| 日本成人在线视频网址| 亚洲性图自拍| 中文字幕亚洲国产| 性感美女福利视频| 欧美一区二区观看视频| 欧美人一级淫片a免费播放| 亚洲最大成人综合| www.4hu95.com四虎| 成人av电影免费在线播放| 欧美日韩中文不卡| 欧美专区在线| 精品国产av无码一区二区三区| 人人狠狠综合久久亚洲婷| 精品久久sese| 看亚洲a级一级毛片| 国产精品扒开腿做爽爽爽的视频| av在线中出| 色与欲影视天天看综合网| 色老头视频在线观看| 国产视频精品一区二区三区| 亚洲国产综合网| 欧美高清视频不卡网| 日韩国产亚洲欧美| 欧美色xxxx| 国产91av视频| 一区二区视频在线看| 欧美一级片在线视频| 国产欧美日韩亚州综合| 黄色正能量网站| av在线播放不卡| 国产亚洲精品成人a| 国产风韵犹存在线视精品| 亚洲最大天堂网| 久久99精品网久久| 成人亚洲精品777777大片| 天堂在线亚洲视频| 国产成人a亚洲精v品无码| 99在线热播精品免费99热| bt天堂新版中文在线地址| 欧美日韩99| 国产激情片在线观看| 欧美黄色一区| 国产经典久久久| 欧美日本在线| 九九热只有这里有精品| 极品中文字幕一区| 国产真人做爰毛片视频直播 | 欧美精品久久久久| 爆操欧美美女| 欧美激情中文字幕乱码免费| 黄色污污视频在线观看| 久久久欧美一区二区| gratisvideos另类灌满| 午夜精品在线视频| 美女av在线免费看| 欧美亚洲在线播放| 日韩欧美看国产| 国产乱肥老妇国产一区二| 视频91a欧美| 91一区二区三区| 国产精品流白浆在线观看| 久久久精品动漫| 精品国产一区二区三区久久久樱花 | 亚洲+变态+欧美+另类+精品| 欧美一区二区三区四区夜夜大片| 久久av资源| 中文字幕日韩一区二区三区不卡| 久久久9色精品国产一区二区三区| 中文字幕日韩精品无码内射| 亚洲国产高清一区二区三区| 狠狠爱免费视频| 免费观看在线综合| 国内精品国产三级国产aⅴ久| 岛国av在线一区| 国产精品扒开腿做爽爽| 国产精品久久久久四虎| 青青青在线视频| 欧美视频在线免费| 91丨九色丨丰满| 精品国产91亚洲一区二区三区婷婷| 天堂av在线免费| 在线精品91av| 日韩中文字幕在线不卡| 久久久久久久久久久久久久| 黄色片网址在线观看| 日韩av电影一区| www.亚洲自拍| 91麻豆6部合集magnet| 成年人视频软件| 亚洲成人av资源| 影音先锋黄色网址| 亚洲精品一区二区三区蜜桃下载| 国产乱理伦片a级在线观看| 久热精品视频在线观看一区| 午夜久久中文| 91久久久国产精品| 亚州精品视频| 亚洲熟妇无码av在线播放| 日韩高清中文字幕一区| 成人一区二区三区仙踪林| 久久久99精品久久| 免费在线观看亚洲| 欧美在线观看视频一区二区三区| 亚洲精品无amm毛片| 最近中文字幕mv在线一区二区三区四区| 欧美hdxxxxx| 国产欧亚日韩视频| 亚洲人成网77777色在线播放| 欧美一级特黄aaaaaa在线看片| 久久一区二区三区四区五区| 丰满人妻一区二区三区免费视频棣| 国产精品九色蝌蚪自拍| 国产主播中文字幕| 国产伦精品一区二区三区在线播放| 久久久久久久有限公司| 欧美日韩国产亚洲一区| 日本黄大片一区二区三区| 久久影院午夜片一区| 精品处破女学生| 91精品一区二区三区久久久久久| 人操人视频在线观看| 久久免费国产视频| 日韩精品视频中文字幕| 亚洲一区二区不卡视频| 日韩国产欧美在线观看| 一区二区三区少妇| 亚洲福利视频一区| 99精品免费观看| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 日韩午夜中文字幕| 日韩精品黄色| 国产精品你懂得| 精品国产美女| 日韩一级免费在线观看| 久久夜色精品一区| 亚洲日本韩国在线| 亚洲精品国产精品国自产观看浪潮 | 97精品一区二区三区| h视频久久久| av一区二区三区免费观看| 国产乱码精品一区二区三 | 可以在线观看的黄色| 91精品国产91久久久久| 国内精品国产成人国产三级粉色| 日韩小视频网站| 成人毛片老司机大片| 国产第一页第二页| 亚洲白虎美女被爆操| av免费在线视| 久久福利电影| 亚洲欧美清纯在线制服| 少妇精品一区二区三区| 日韩欧美中文在线| 国产三级在线| 成人h视频在线观看播放| 中文字幕午夜精品一区二区三区| 99中文字幕在线| 一区二区三区四区蜜桃| 色wwwwww| 欧洲亚洲免费视频| 精品免费一区二区| 91制片厂毛片| 樱桃视频在线观看一区| 风流老熟女一区二区三区| 97人洗澡人人免费公开视频碰碰碰| 小说区图片区色综合区| 91福利国产成人精品播放| 一区在线中文字幕| 成人1区2区3区| 68精品久久久久久欧美| 国产成人精品免费视| 中文字幕22页| 亚洲综合激情网| 深夜影院在线观看| 国产精品视频在线播放| 综合天堂久久久久久久| 99久久免费看精品国产一区| 在线免费观看成人短视频| 黄色一级大片在线免费看产| 国产精品免费在线| 日本不卡一二三区黄网| 中文字幕av久久爽av| 日韩黄在线观看| 少妇精品视频在线观看| 国产妇女馒头高清泬20p多| 国产视频一区二区在线| 99在线观看免费| 日本精品一区二区三区在线播放视频 | 成人激情视频网站| 91在线视频免费播放| 久久香蕉频线观| 亚洲图片久久| 老女人性生活视频| 欧美性jizz18性欧美| 国产视频中文字幕在线观看| 久久精品99久久| 国产乱子伦视频一区二区三区| 羞羞影院体验区|