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

海量數據下的分庫分表及ClickHouse解決方案

數據庫 MySQL
本文結合業務,尋求海量數據的解決方案。現有業務使用的是MySQL數據庫,且數據量暫時可控,因此目前采用分庫分表的策略。

背景

最近在做的業務中,用戶相關的數據不斷增長,給系統帶來了不小的壓力,在 SQL優化實戰-千萬量級后的慢查 一文中也總結了一些針對慢查的解決方案。但每次活動下來,都會有幾百上千萬的用戶相關數據產生,單純的sql優化已經無法解決,本文站在前人肩膀上,總結了海量數據情景下的解決方案。

分區&分庫分表

目前業務中使用的是MySQL,針對關系型數據庫,可以采用分區或者分庫分表的策略。首先看一下其各自的實現原理及優缺點:

(1)分區

  • 分區原理:分區表是由多個相關的底層表實現,存儲引擎管理分區的各個底層表和管理普通表一樣,只是分區表在各個底層表上各自加上一個相同的索引(分區表要求所有的底層表都必須使用相同的存儲引擎)。
  • 分區優點:它對用戶屏蔽了sharding的細節,即使查詢條件沒有sharding column,它也能正常工作(只是這時候性能一般)。
  • 分區缺點:連接數、網絡吞吐量等資源都受到單機的限制;并發能力遠遠達不到互聯網高并發的要求。(主要因為雖然每個分區可以獨立存儲,但是分區表的總入口還是一個MySQL示例)。
  • 適用場景:并發能力要求不高;數據不是海量(分區數有限,存儲能力就有限)。

(2)分庫分表

互聯網行業處理海量數據的通用方法:分庫分表。 分庫分表中間件全部可以歸結為兩大類型:

  • CLIENT模式;
  • PROXY模式;

CLIENT模式代表有阿里的TDDL,開源社區的sharding-jdbc(sharding-jdbc的3.x版本即sharding-sphere已經支持了proxy模式)。架構如下:

PROXY模式代表有阿里的cobar,民間組織的MyCAT。架構如下:

無論是CLIENT模式,還是PROXY模式。幾個核心的步驟是一樣的:SQL解析重寫路由執行結果歸并

分庫分表實現(MYSQL)

針對分區與分庫分表的適用場景,選擇分庫分表的實現方案。結合實際業務:學生(user表)定期參加體能測試(detect表),每一次體測之后,保留對應檢測數據(data表),因此,數據data表中的核心數據:

data_id

數據ID

user_id

學生ID

detect_id

檢測任務ID

project_id

檢測項目ID,如跳高、跳遠

project_result

檢測結果

分庫分表第一步也是最重要的一步,即sharding column的選取,sharding column選擇的好壞將直接決定整個分庫分表方案最終是否成功。sharding column的選取跟業務強相關。

  • 選擇方法:分析你的API流量,將流量比較大的API對應的SQL提取出來,將這些SQL共同的條件作為sharding column。
  • 選擇示例:例如一般的OLTP系統都是對用戶提供服務,這些API對應的SQL都有條件用戶ID,那么,用戶ID就是非常好的sharding column。

在上述學生體測業務中,我們需要匯總統計一次體測任務中,所有學生各項的體測結果,所以按照上述的原則,需要根據體測任務ID,即detect_id進行分表,以盡量減少在統計一次體測任務的數據時的跨表查詢;但實際業務中,在學生端也有縱向對比的需求,即學生需要查看自己所有參加過的體測任務中的數據,這樣的話,按照detect_id分表,再以user_id作為查詢條件,就需要跨表查詢,效率會很低。因此,最終方案是:不同字段冗余分表

(1)冗余全量表

每個sharding列對應的表的數據都是全量的。以用戶體測數據為例:分別使用三個獨立的sharding column,即data_id(數據ID),detect_id(體測任務ID),user_id(學生ID)。

(2)冗余關系表選擇

只有一個sharding column的分庫分表的數據是全量的,其他分庫分表只是與這個sharding column的關系表。實際使用中可能會冗余更多常用字段,如學生姓名、體測任務名稱等。

(3)冗余全量表 VS 冗余關系表

  • 速度對比:冗余全量表速度更快,冗余關系表需要二次查詢,即使有引入緩存,還是多一次網絡開銷;
  • 存儲成本:冗余全量表需要幾倍于冗余關系表的存儲成本;
  • 維護代價:冗余全量表維護代價更大,涉及到數據變更時,多張表都要進行修改。

選擇冗余全量表還是索引關系表,這是一種架構上的權衡,兩者的優缺點明顯,在我們的業務中采用冗余全量表的方式。

非關系型數據庫(ClickHouse)

上面提到的都是條件中有sharding column的SQL執行。但是,總有一些查詢條件是不包含sharding column的,同時,我們也不可能為了這些請求量并不高的查詢,無限制的冗余分庫分表。另外,在分表前,我們會事先定義好分表的數量,隨著業務擴張,單表數據達到大幾千萬甚至上億,對于MySQL而言,還是不大友好的,再去增加分表數量,也是不大現實的。因此,專業的事情最好還是使用專業的工具-ClickHouse。

ClickHouse 是近年來備受關注的開源列式數據庫,主要用于數據分析(OLAP)領域。目前國內社區火熱,各個大廠紛紛跟進大規模使用:

  • 今日頭條內部用 ClickHouse 來做用戶行為分析,內部一共幾千個 ClickHouse 節點,單集群最大 1200 節點,總數據量幾十 PB,日增原始數據 300TB 左右。
  • 騰訊內部用 ClickHouse 做游戲數據分析,并且為之建立了一整套監控運維體系。
  • 攜程內部從 18 年 7 月份開始接入試用,目前 80% 的業務都跑在 ClickHouse 上。每天數據增量十多億,近百萬次查詢請求。
  • 快手內部也在使用 ClickHouse,存儲總量大約 10PB, 每天新增 200TB, 90% 查詢小于 3S。

在 1 億數據集體量的情況下,ClickHouse 的平均響應速度是 Vertica 的 2.63 倍、InfiniDB 的 17 倍、MonetDB 的 27 倍、Hive 的 126 倍、MySQL 的 429 倍以及Greenplum 的 10 倍。

ClickHouse更多內容參考:https://juejin.cn/post/7120519057761107999

在 OLAP 數據庫中,可變數據通常不受歡迎。ClickHouse 也不歡迎可變數據。然而現實情況,更新情況不可避免。比如,學生在體測過程中,是可以進行重復測試的,即需要進行更新數據。以下是關于clickhouse更新的解決方案:

參考:https://zhuanlan.zhihu.com/p/485645089

(1)Alter/Update Table

ClickHouse團隊在2018年發布了UPDATE和DELETE,但是它不是原生的UPDATE和DELETE語句,而是被實現為ALTER TABLE UPDATE語句,如下所示:

ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr;

如更新檢測結果,ALTER UPDATE語句如下:

ALTER TABLE UPDATE detect_result=1 WHERE detect_id = 1 and user_id=4;

需要注意的是,ClickHouse的更新是一個異步的操作。當用戶執行一個如上的Update操作獲得返回時,ClickHouse內核其實只做了兩件事情:

  • 檢查Update操作是否合法;
  • 保存Update命令到存儲文件中,喚醒一個異步處理merge和mutation的工作線程;

異步線程的工作流程極其復雜,總結其精髓描述如下:先查找到需要update的數據所在datapart,之后對整個datapart做掃描,更新需要變更的數據,然后再將數據重新落盤生成新的datapart,最后用新的datapart做替代并remove掉過期的datapart。

這就是ClickHouse對update指令的執行過程,可以看出,頻繁的update指令對于ClickHouse來說將是災難性的。(當然,我們可以通過設置,將這個異步的過程變成同步的過程,詳細請看:Synchronicity of ALTER Queries,然而同步阻塞就會比較嚴重)。

(2)Incremental Log

Incremental log的思想是什么了?比如對于用戶瀏覽統計表中的一條數據,如下所示:

┌──────────────UserID─┬─PageViews─┬─Duration─┬─Sign─┐ 
│ 4324182021466249494 │         5 │      146 │    1 │ 
└─────────────────────┴───────────┴──────────┴──────┘

現在有更新了:用戶又瀏覽了一個頁面,所以我們應該改變pageview從5到6,以及持續時間從146到185。那么按照Incremental log的思想,再插入兩行:

┌──────────────UserID─┬─PageViews─┬─Duration─┬─Sign─┐ 
│ 4324182021466249494 │         5 │      146 │   -1 │ 
│ 4324182021466249494 │         6 │      185 │    1 │ 
└─────────────────────┴───────────┴──────────┴──────┘

第一個是刪除行。它和我們已經得到的行是一樣的只是Sign被設為-1。第二個更新行,所有數據設置為新值。之后我們有三行數據:

┌──────────────UserID─┬─PageViews─┬─Duration─┬─Sign─┐ 
│ 4324182021466249494 │         5 │      146 │    1 │ 
│ 4324182021466249494 │         5 │      146 │   -1 │ 
│ 4324182021466249494 │         6 │      185 │    1 │ 
└─────────────────────┴───────────┴──────────┴──────┘

那么對于count,sum,avg的計算方法如下:

-- number of sessions
count() -> sum(Sign)  
-- total number of pages all users checked 
sum(PageViews) -> sum(Sign * PageViews)  
-- average session duration, how long user usually spent on the website 
avg(Duration) -> sum(Sign * Duration) / sum(Sign)

這就是Incremental log方法,這種方法的不足之處在于:

  • 首先需要獲取到原數據,那么就需要先查一遍CK,或者將數據保存到其他存儲中便于檢索查詢,然后我們才可以針對原數據插入一條 ‘delete’ rows;
  • Sign operations在某些計算場景并不適合,比如min、max、quantile等其他場景;
  • 額外的寫入放大:當每個對象的平均更新次數為個位數時,更適合使用。

針對Incremental log方式的寫入方案存儲開銷問題,clickhouse提供了CollapsingMergeTree,使用CollapsingMergeTree,“刪除”行和舊的“刪除”行將在合并過程中折疊。但是,注意這個引擎,只是解決了寫放大問題,并不是說查詢模式就不是Incremental Log這種,我們還是需要通過對sign的特殊計算方式,達到效果。

(3)Insert+xxxMergeTree

用Insert加特定引擎,也可以實現更新效果。該方法適用于xxxMergeTree,如ReplacingMergeTree或AggregatingMergeTree。但是了,更新是異步的。因此剛插入的數據,并不能馬上看到最新的結果,因此并不是準實時的。

比如使用AggregatingMergeTree,用法如下:

CREATE TABLE IF NOT EXISTS whatever_table ON CLUSTER default (     
  user_id UInt64,
  gender SimpleAggregateFunction(anyLast, Nullable(Enum('女' = 0, '男' = 1))),
  ...
)
ENGINE = AggregatingMergeTree() partition by toYYYYMMDD(reg_date) ORDER BY user_id;

就以上建標語句展開分析,AggregatingMergeTree會將除主鍵(user)外的其余列,配合anyLast函數,替換每行數據為一種預聚合狀態。其中anyLast聚合函數聲明聚合策略為保留最后一次的更新數據。

實時性: 非準實時。

優點在于:
ClickHouse提供的這些mergeTree引擎,可以幫助我們達到最終一致性。
缺點在于:
xxxMergeTree并不能保證任何時候的查詢都是聚合過后的結果,并且也沒有提供標志位用于查詢數據的聚合狀態與進度。因此,為了確保數據在查詢前處于已聚合的狀態,還需手動下發optimize指令強制聚合過程的執行。

(4)Insert+xxxxMergeTree+Final

用xxxMergeTree是異步的,如何達到準實時的效果了?ClickHouse提供了FINAL關鍵字來解決這個問題。當指定FINAL后,ClickHouse會在返回結果之前完全合并數據,從而執行給定表引擎合并期間發生的所有數據轉換。

用法

首先Insert數據:

INSERT INTO test_a (*) VALUES (1, 'a', 1) ;

查詢時,加入final關鍵字,如下所示:

SELECT COUNT()FROM test_a FINAL

優缺點

對上述語句,explain后,查詢執行計劃如下所示:

Expression ((Projection + Before ORDER BY))
  Aggregating
    Expression (Before GROUP BY)
      SettingQuotaAndLimits (Set limits and quota after reading from storage)
        Expression (Remove unused columns after reading from storage)
          MergingFinal (Merge rows for FINAL)
            Expression (Calculate sorting key expression)
              ReadFromStorage (MergeTree with final)

從執行計劃可以看出代價比較高:

  • 是一個串行過程;
  • 會進行分區合并;

因此,這個FINAL,也不宜頻繁的使用。

總結

本文結合業務,尋求海量數據的解決方案。現有業務使用的是MySQL數據庫,且數據量暫時可控,因此目前采用分庫分表的策略。同時,也在為日益膨脹的數據做準備,擬采用ClickHouse,并使用Insert+ReplacingMergeTree及查詢中去重的方案解決其更新問題。最后,歡迎有經驗的伙伴多多指點!

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-12-27 11:06:35

海量接口并發

2022-03-09 21:55:30

HBase數據入倉

2013-07-26 11:13:29

海量郵件系統數據歸檔解決方案

2023-08-26 20:08:15

分庫分表Spring

2023-11-03 14:50:14

2024-02-21 12:17:00

2020-12-01 09:03:22

分庫分表MySQL

2022-02-23 08:55:06

數據遷移分庫分表數據庫

2020-07-30 17:59:34

分庫分表SQL數據庫

2018-05-29 08:39:26

DBA數據庫案例

2022-06-15 07:32:24

數據庫分庫分表

2019-11-12 09:54:20

分庫分表數據

2020-06-24 09:00:43

分庫分表MySQL

2014-06-18 14:33:58

數據保護

2019-01-16 14:00:54

數據庫分庫分表

2019-12-17 09:29:02

數據庫架構分庫分表

2015-07-27 16:56:24

LinuxQQ

2024-08-02 15:47:28

數據庫分庫分表

2020-01-07 09:40:25

數據庫MySQLRedis

2024-07-26 00:16:11

點贊
收藏

51CTO技術棧公眾號

久久成人高清| www亚洲人| 亚洲福利免费| 亚洲片av在线| 北条麻妃亚洲一区| 多野结衣av一区| 日本一区二区成人| 91精品国产综合久久久久久丝袜 | 久久久久久亚洲精品| 成人羞羞视频免费| 久久午夜无码鲁丝片| 亚洲精品亚洲人成在线观看| 欧美性大战久久久| 日本阿v视频在线观看| 欧美777四色影视在线| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲精品女人久久久| 国产黄色在线| 国产丶欧美丶日本不卡视频| 国产亚洲精品久久久| 美女又黄又免费的视频| 日韩a**中文字幕| 国产黄人亚洲片| 国产精品国产三级国产专播精品人 | 久久在精品线影院精品国产| 熟女少妇一区二区三区| 试看120秒一区二区三区| 欧美色倩网站大全免费| 台湾成人av| 一级黄色大毛片| 欧美永久精品| 亚洲国产精品yw在线观看 | 久久爱.com| 色av成人天堂桃色av| 日韩性感在线| 日本电影一区二区在线观看| 日本视频一区二区| 欧美亚洲在线视频| 自拍偷拍你懂的| 精品一区二区三区免费看| 在线亚洲高清视频| 情侣黄网站免费看| 国产中文在线播放| 五月天中文字幕一区二区| 欧美一区视久久| 日韩专区一区二区| 久久亚洲综合av| 国产免费一区二区三区在线观看| 黄色片视频免费| 在线成人直播| 欧美成人精品不卡视频在线观看| 久久国产高清视频| 99久久国产综合精品成人影院| 欧美一区二区三区色| 中文字幕亚洲乱码| 精品国产黄a∨片高清在线| 1000部国产精品成人观看| 国产精品伊人日日| 亚洲天堂网视频| 亚洲精选91| 一本一道久久a久久精品逆3p| 亚洲第一区第二区第三区| 51一区二区三区| 欧美视频自拍偷拍| 免费看毛片的网址| av免费不卡| 欧美国产综合色视频| 国产免费观看久久黄| 久久精品视频久久| 99精品福利视频| 日韩精品极品在线观看| 久久精品国产亚洲av麻豆| 主播大秀视频在线观看一区二区| 在线精品国精品国产尤物884a| 国产精彩免费视频| 欧美14一18处毛片| 中文字幕高清不卡| 一区二区视频在线免费| 国产美女无遮挡永久免费| 1024成人| 日韩性生活视频| 亚洲熟女乱综合一区二区| 丁香综合av| 欧美日本免费一区二区三区| 亚洲成人av免费观看| 成人影院av| 欧美日韩成人在线| 亚洲无人区码一码二码三码| 网友自拍区视频精品| 欧美一区二区三区播放老司机| 免费人成视频在线播放| 激情小说亚洲色图| 中文字幕日韩精品在线观看| 午夜免费激情视频| 欧洲精品一区| 日韩女优av电影| 欧美一级特黄a| 偷拍视频一区二区三区| 欧美狂野另类xxxxoooo| 九九视频精品在线观看| 日韩激情综合| 欧美sm极限捆绑bd| 国产伦理在线观看| 91精品入口| 中文字幕亚洲欧美在线| 妺妺窝人体色www聚色窝仙踪| 香蕉精品999视频一区二区| 97成人在线视频| 亚洲天堂777| 91视频com| 999久久欧美人妻一区二区| 欧美成a人片在线观看久| 日韩欧美国产wwwww| 国产熟女一区二区| 日韩午夜免费视频| 久久久成人av| 免费黄色片视频| 不卡av免费在线观看| 国产精品福利在线观看| 一级黄色av片| 不卡视频在线观看| 精品免费日产一区一区三区免费| 91在线高清| 国产精品美女久久久久久| 国产精品后入内射日本在线观看| 欧美黄色一级| 最近2019年好看中文字幕视频| 欧美特黄aaaaaa| 成人国产精品免费观看视频| 精品日韩在线播放| 热久久久久久| 色婷婷综合久色| v天堂中文在线| 狠狠入ady亚洲精品| 亚洲va久久久噜噜噜| 超碰97在线免费观看| 欧美三级xxx| 中文文字幕文字幕高清| 日本成人一区二区| 欧美一区二区黄色| 色哟哟一一国产精品| 性xxxx欧美老肥妇牲乱| 色综合视频一区中文字幕| 91theporn国产在线观看| 国产在线不卡一区| 精品视频一区二区| 视频免费一区| 欧美色精品天天在线观看视频| 手机av在线免费| 色狮一区二区三区四区视频| 国产精品视频xxx| av在线免费观看网| 欧美日韩你懂得| 色婷婷狠狠18禁久久| 精品不卡一区| 国产精品久久久久久久久久免费 | 久久精品水蜜桃av综合天堂| 国产精品免费入口| 欧美美女在线| 欧美黑人性猛交| 高清乱码毛片入口| 国产精品―色哟哟| 久久精品视频在线观看免费| 希岛爱理av免费一区二区| 欧洲精品久久久| 亚洲第一天堂在线观看| 亚洲一区中文日韩| a天堂视频在线观看| 香蕉久久夜色精品| 亚洲精品高清视频| 九色porny丨首页入口在线| 亚洲欧美在线一区二区| 正在播放亚洲精品| 亚洲精品乱码久久久久久日本蜜臀| www日韩在线观看| 国产精品超碰| 国产精品扒开腿做爽爽爽视频| 成人免费在线电影| 日韩午夜在线影院| 久草视频在线观| 国产欧美日韩在线| 丰满少妇一区二区三区专区| 亚洲久久一区二区| 国产精品免费在线播放| 大胆人体一区二区| 久久夜精品va视频免费观看| 天天色综合久久| 亚洲国产aⅴ天堂久久| 中文字幕网站在线观看| 国产一区二区福利| 久久最新免费视频| 亚洲人成网站在线在线观看| 欧美日韩不卡合集视频| 麻豆app在线观看| 欧美一区二区三区人| 成人在线观看小视频| heyzo一本久久综合| 五月花丁香婷婷| 四季av一区二区凹凸精品| 国产精品香蕉视屏| 国产啊啊啊视频在线观看| 日韩欧美精品在线| 日韩一级片av| 国产网红主播福利一区二区| 亚洲 自拍 另类 欧美 丝袜| 爽好久久久欧美精品| 日本精品视频一区| 福利一区和二区| 一区二区在线视频播放| 在线黄色av网站| 国产精品久久久久久久久晋中| 天天躁日日躁狠狠躁免费麻豆| 美女在线视频一区| 国产性xxxx18免费观看视频| 午夜国产欧美理论在线播放 | 国产制服丝袜在线| 一本久久知道综合久久| 久久久水蜜桃| 凹凸成人在线| 95av在线视频| 精品三级久久| 一色桃子一区二区| 国产一区二区小视频| 亚洲男人都懂的| youjizz.com国产| 一区二区日本视频| 色女孩综合网| 免费观看不卡av| 国产嫩草一区二区三区在线观看| 成人午夜视屏| 57pao国产精品一区| 国产h在线观看| 亚洲免费视频观看| 五月天婷婷视频| 亚洲黄色片网站| 五月婷婷丁香在线| 一级特黄大欧美久久久| 色哟哟一一国产精品| 亚洲欧美自拍偷拍色图| 国产中文字幕久久| 99久久伊人网影院| 亚洲欧美视频二区| 99精品国产在热久久| 国产九色porny| 欧美色图在线播放| 亚洲欧美影院| 99视频精品视频高清免费| 亚洲精品在线免费| 久久久五月天| 中文字幕第一页亚洲| 影音先锋日韩精品| 欧洲一区二区在线观看| 久久av超碰| 国产精品10p综合二区| 99欧美精品| 2019中文字幕免费视频| 亚洲美女尤物影院| 欧美精品一二区| 青春草视频在线观看| 欧美激情免费看| 国产不卡人人| 久久综合伊人77777蜜臀| av色综合久久天堂av色综合在| 亚洲欧美日韩精品久久奇米色影视| 免费在线毛片| 亚洲福利在线观看| 欧洲免费在线视频| 在线播放日韩精品| xvideos国产在线视频| 国产一区二区三区在线播放免费观看| 国产日韩精品在线看| 色青青草原桃花久久综合| 老司机福利在线视频| 欧美贵妇videos办公室| 91看片在线观看| 亚洲老板91色精品久久| 色欲av永久无码精品无码蜜桃| 国产视频亚洲视频| 蜜芽在线免费观看| 久久久久国产视频| 在线看片福利| 孩xxxx性bbbb欧美| 亚洲高清黄色| 999国内精品视频在线| 偷拍精品福利视频导航| 综合操久久久| 亚洲制服av| 激情久久综合网| 久久99久久久久久久久久久| 亚洲一区和二区| 中文字幕成人在线观看| 亚洲av熟女国产一区二区性色| 亚洲三级在线免费观看| 国产成人在线播放视频| 亚洲大片在线观看| 日韩欧美中文字幕一区二区| 亚洲一区在线观看视频| 久久久久久无码午夜精品直播| 色婷婷综合激情| 亚洲AV无码一区二区三区少妇| 亚洲色图15p| 国产1区2区3区在线| 亚洲人精品午夜在线观看| 男人的天堂av高清在线| 国产亚洲欧美日韩一区二区| 成a人片在线观看www视频| 色老头一区二区三区| 国产不卡人人| 国产福利精品av综合导导航| 懂色av一区二区| 看全色黄大色大片| 亚洲性图久久| 97在线播放视频| 国产**成人网毛片九色| 国产精品69久久久久孕妇欧美| 精品久久久久久中文字幕一区奶水 | 欧美色综合网站| 超碰在线观看91| 精品国产成人在线影院| 黄色网页在线看| 欧美极品第一页| 国产欧美日韩电影| 国内精品一区二区| 国内黄色精品| 激情综合在线观看| 国产精品1024| 极品久久久久久| 在线成人av网站| 殴美一级特黄aaaaaa| 亚洲人成电影网站色…| cao在线视频| 国产精品一区二区在线观看| 国产精品嫩草影院在线看| 香蕉精品视频在线| 免费不卡在线视频| 69精品无码成人久久久久久| 在线免费视频一区二区| 每日更新在线观看av| 国产97在线观看| 1769国产精品视频| 日韩av在线电影观看| 亚洲第一偷拍| 成年人免费在线播放| 精品一区二区三区欧美| 亚洲区一区二区三| 欧美日韩国产精品一区二区不卡中文 | 91香蕉视频污在线观看| 欧美吻胸吃奶大尺度电影| 精品久久国产视频| 美女视频久久黄| 亚洲人体视频| 亚洲一区中文字幕| 午夜精彩国产免费不卡不顿大片| 北条麻妃69av| 国产一区二区三区在线看麻豆| 欧美亚一区二区三区| 日韩欧美亚洲国产一区| 韩国福利在线| 国产综合在线视频| 欧美人体视频| 91黄色在线看| 激情综合网天天干| 免费无码毛片一区二区app| 91高清视频在线| 在线观看av黄网站永久| 亚洲一区二区免费在线| 亚洲午夜久久久久久尤物| 涩多多在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 免费一级a毛片| 日韩国产中文字幕| 日韩欧美精品电影| 正在播放久久| 成人av电影在线网| 国产suv精品一区二区33| 久久精品99无色码中文字幕 | 精品日韩成人av| 最新中文字幕在线播放| 99免费在线视频观看| 日韩欧美精品一区| 好吊操视频这里只有精品| 国产精品毛片高清在线完整版| 国产普通话bbwbbwbbw| 神马国产精品影院av| 91精品影视| 轻点好疼好大好爽视频| 国产电影精品久久禁18| 欧美亚洲精品天堂| 日韩视频精品在线| 国产精品高潮呻吟久久久久| 成年人深夜视频| 久久久久久毛片| 免费看一级视频| 亚洲欧美变态国产另类| 亚洲欧美一级| 黄色片一级视频| 一区二区免费在线播放| 国产黄色av片| 久久免费国产视频| 国产精品一区二区三区美女|