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

MatrixOne:HTAP數據庫中的OLAP設計

數據庫 其他數據庫
矩陣起源是一家數據庫創業公司,致力于打造開源超融合異構數據庫MatrixOne。MatrixOne是一款面向未來的超融合異構云原生數據庫管理系統。通過全新設計和研發的統一分布式數據庫引擎,能夠同時靈活支持OLTP、 OLAP、Streaming等不同工作負載的數據管理和應用,用戶可以在公有云、自建數據中心和邊緣節點上無縫部署和運行。

一、MatrixOne整體架構

MatrixOne早期的架構是一個典型的share nothing架構,數據存放在一個Multi Raft集群上面,數據的每一個切片存在一個Raft上面,不同的Raft Group之間的數據是完全沒有重疊的。

早期架構存在著一些無法解決的問題,比如在擴展性上,每擴展一個節點,就需要同時擴展存算的資源,因為計算和存儲沒有完全分開。而且每擴展一個節點,需要大量的數據遷移工作。另外因為每一份數據都要保存至少 3個副本,從擴展節點到完成的時間會非常久。在性能方面,Raft協議所包含的leader角色,容易造成熱點;在性能較差的存儲下,數據庫整體性能下降會超過預期;多種引擎各自用途不同,性能各異,無法有效應對HTAP場景。成本方面,數據保存3副本,隨節點規模增長,成本不斷攀升,云上版本更甚;只有高配存儲才能發揮數據庫的預期性能。

為了更好地滿足客戶的需求,我們升級了新的架構。

圖片

升級后的架構從整體上看,分為三個部分:

  1. 最上面是計算層,計算層里面的每一個單位是一個Compute Node (CN) 計算節點。
  2. 在計算層下面是數據層,由Data Node (DN) 組成。
  3. 再下面是File service,支持各種不同的文件系統。

下面分別詳細介紹一下每一部分。

圖片

  • 先從最底下的File service說起。File service支持各種不同的文件系統,比如用戶自己的本地的磁盤,NFS、HDFS、或者對象存儲。File service對上層提供一個統一的接口,對用戶來說,他并不需要關心最底下的數據本身是存在什么樣的介質上面。

圖片

  • 這邊還會有個log service,因為我們知道在file service插入數據的時候,只能一整塊一整塊地寫,尤其像S3,一個object非常大,不可能一行一行地寫,一般是積累到一定的量再往里面寫一個整塊,那么這些還沒形成整塊的部分,會放在一個單獨的log service里面。log service是一個Multi Raft的集群。已經形成整塊的部分的數據完整性和一致性是用S3或者HDFS的功能來保證。還沒有形成單個block的數據的一致性完整性則是通過Multi Raft group來保證。

圖片

  • 再上面是存儲節點DN,存儲節點里只存放的是元數據信息,比如每個表會分成大的segment,每個segment又會分成很多小的block。比如用S3來存放數據,元數據里會存放每個block,存放對應的具體S3 object。還有其他元數據信息比如row map,或者是次級索引bloom filter這些信息也會存在DN上。這里可以看到有多個DN,它們是怎么分布的呢?比如一張表有一個主鍵,那么我們可以根據主鍵來做一個分區,目前是按hash來做分區,也可以按range來做都是沒有問題的。對于數據規模較小的客戶來說,存放元數據其實只需要一個DN就足夠了。

圖片

  • 再上面就是計算節點CN,具體執行計算任務的節點。CN可以分成各種不同類型,比如專門做TP查詢用的,專門做AP查詢用的,專門做streaming用的,還有一些對用戶不可見的數據庫自己后臺的一些任務。

圖片

  • 還有一個組件叫HA Keeper,跟ZooKeeper功能類似,在節點之間互相通知上線下線這些信息,維護整個集群的可用信息。

新的share storage的架構優勢在于:

  • DN節點不保存任何數據,只保存元數據信息。這樣就不會讓單個DN成為瓶頸,如果需要做彈性擴縮容,比如DN要新增或者刪除一個節點。做數據遷移只需要交換一些元數據的信息,不需要把所有數據都做搬遷的操作,這大大簡化了數據遷移量,并提高了擴縮容的效率。
  • 完整性和一致性主要是通過S3來保證,S3本身就具備這一功能,并且從成本上來看也是非常低的,比用戶自己去搭建Multi Raft集群的成本會低很多。
  • 計算任務也可以很好地分離開,比如TP和AP的計算,可以放在不同的CN節點上去做。因為現在數據已經不跟DN綁定在一起,所以計算的節點也可以完全解耦。

圖片

我們來看一個典型的查詢里面讀數據的操作是怎樣的。數據查詢從一個CN節點開始,首先去訪問DN的信息,讀取元信息,判斷某張表在哪些block,甚至會先通過過濾條件用row map來做過濾,剩下的是實際上需要去讀的那些block信息,拿到之后直接去那個file service下面去讀取數據。

圖片

在這里DN節點只提供了元數據信息,基本上不會成為性能瓶頸。因為更多的數據是CN節點去直接向File service讀取的,CN節點上面還會維護一個metadata cache。假設這個數據新鮮度還沒有過期,甚至可以不需要訪問DN,直接去File service下面拉取數據。

最后是存儲引擎,TAE,T和A分別是指TP和AP,T和A表示它既有事務的能力也可以很好的處理分析性查詢,用同一套引擎同時支持AP和TP。

在結構上,我們實際上還是可以把它看成是基于列存,不同的列之間,數據仍然是單獨分開存放的,每一列會按照8192行分成一個小的block。對于大多數的數字類型的block,8192行數據可以在L1 cache里面直接裝下,在后面的批量計算的時候會對計算引擎比較友好。多個block會組成一個segment,segment的作用是假設這個表它有主鍵或者排序鍵的情況下,一個segment內部會通過排序鍵和主鍵去做排序,這樣數據存儲在每一個segment內部是保持有序的,但segment之間可能會有重疊。這跟LSM的存儲有些相似的地方。但如果我們之后做了partition功能,可能會把一個partition內的所有segment也去做一次compaction操作。即把它們重新拿出來,做一個歸變排序再放進去。

以上就是MatrixOne最新的架構。

二、MatrixOne OLAP引擎

圖片

MatrixOne的計算引擎分為四個部分:

  • 第一個是parser:把一個SQL語句解析成一個AST樹。
  • 第二個是planner:把AST樹轉化成一個邏輯計劃。
  • 第三個是optimizer:把邏輯計劃通過各種優化器規則或者是通過一些基于代價估算的方式轉化成更好的邏輯計劃。
  • 最后是execution:把具體的邏輯計劃轉化成可執行的pipeline,然后去具體的CPU上面執行。

語法解析器(Parser)

各大開源數據庫大多都不會去手寫一個parser,至少是用MySQL或者PG的parser。比如DuckDB就是直接使用Postgres的parser代碼。即使我們不直照搬,也可以用一些YACC的工具去生成一個parser。測試之后發現用YACC生成的parser,并不會成為性能瓶頸,它的耗時非常少,所以我們沒有必要去手寫一個parser。(除了ClickHouse的parser是手寫的)。parser生成AST樹之后,會通過邏輯計劃器,把AST樹轉換成一個可以執行的邏輯計劃。

邏輯計劃器(Planner)

邏輯計劃器主要包含兩個部分:Bind(Algebrizer) 和子查詢消除。因為我們并不支持像SQL Server一樣將子查詢轉換成apply join,或者像MySQL一樣完全從父查詢里面拿出一行,再帶入子查詢里面,把子查詢完整地執行一次??紤]到在AP查詢的場景,這樣的一個執行計劃是不可接受的,就干脆完全不支持這種apply join的方式,所以我們在planner這一步,把子查詢的消除給做掉。

優化器(Optimizer)

優化器部分,通常會有一個RBO基于規則的優化,基于規則對大部分查詢已經是夠用的。因為優化器通常分為兩種,一種是減少數據IO,它會減少實際從磁盤文件系統讀取的數據量;還有一種是對于CPU,在計算的過程中減少計算的代價。下面會具體舉一些例子來說明MatrixOne是如何設計的。

圖片

(1)第一部分是減少IO

包括以下部分:

  • 列裁剪,讀一張表,有很多列,但我實際上只用到其中一列,那么其它列是不用讀取的。
  • 謂詞下推,就是把一些過濾條件直接推到讀取數據這一部分,這樣可以盡量少的讀取數據。
  • 謂詞推斷,主要會影響TPC-H里面的Q7和Q19,在后面會再舉例詳細介紹。
  • Runtime filter ,比如大表跟小表做join操作,在小表構建完hash表之后,可能hash表的計數非常小,這樣我們可以直接通過hash表里面不同的詞去大表里面通過runtime或者元數據信息進行過濾,這樣在運行時就大大減少了需要讀取的大表的block數量。

圖片

(2)第二部分是減少計算

它并不能減少實際從磁盤里面讀取的數據,但是會在計算過程中減少計算量,和減少中間結果的數據量:

join order的join定序。通常使用TPC-H做OLAP 的benchmark,join order會影響很多不同的查詢,如果join order做的不好,這些查詢都可能會以數量級的變慢。

聚合函數下推和上拉的操作。假設聚合函數是在一個join上面,如果是先做join,之后再去做聚合,那么在join這里,數據可能會膨脹的非常多。但是如果可以把聚合函數推到join下面去做,即在join之前先聚合,數據已經減少很多,這也可以大大的減少計算。

圖片

簡單介紹謂詞推斷:

謂詞下推是已經確定顯式的可以下推的一個位置。但謂詞推斷可能是需要做一些邏輯上的變化之后,才能得到一些新的謂詞,這些新的謂詞才可以下推下去。比如TPC-H Q19的過濾條件是三個很長的謂詞用or連接起來,通過觀察實際上這三個or里面有很多共同的部分,可以把共同的部分提取出來,變成右圖的樣子??梢杂^察到,首先part這張表上面有一個可以下推的謂詞,lineitem這張表上面也有兩個可以下推的謂詞。這樣可以先把這兩個謂詞下推到每個表的table scan上面去。然后還多出來一個在part和lineitem上面用主鍵做連接的謂詞。如果原來不對這個執行計劃做優化直接去執行,可能會先做一個笛卡爾積,再去做過濾操作,這樣的效率會非常低?,F在我們可以把它變成一個join操作。

圖片

簡單介紹一下MatrixOne使用的join order算法:

在各大開源數據庫上,join order的算法實現主要包括貪心法和動態規劃。其中動態規劃有很多不同方法,也有很多論文可以參考。但是動態規劃存在一個問題,當表的數量稍微多一些,狀態搜索空間就會以指數級膨脹。比如StarRocks的文檔里面提到過,10個表以上的計算就沒辦法使用動態規劃來計算,只能使用貪心法來計算。

我們在MatrixOne里對這個問題做了思考,在大于10張表時,可以先用貪心的方法來做一個剪枝操作,讓搜索空間大大減小,在貪心法之后再做動態規劃。

貪心法分三步:

  • 第一步是確定事實表和維度表,因為一般的OLAP查詢的數據通常會把表分成事實表和維度表,之間用維度表的主鍵做join。因此拿到一個查詢之后,我們可以把事實表和維度表給找出來。
  • 下一步事實表先與其維度表join成子樹,因為事實表維度表之間始終是通過維度表的主鍵去做join。做這樣的join的結果的函數始終是不大于他本來輸入的函數,所以做這么一個join并不會造成很多OLAP開銷,不會造成數據膨脹。在做事實表維度表join的過程中,我們會考慮事實表先與過濾性好的維度表做join。就優化器而言,越早減少數據量是越好的。
  • 最后一步是在子樹之間,像TPC DS的表,會有多個維度表,維度表互相之間都不是以主鍵來做join。那么在子樹之間,我們再使用經典的join order的算法,比如動態規劃等等。

這樣我們把Join order的算法從之前只能10表以下做動態規劃,擴展到10個事實表之下都可以使用動態規劃來做。

圖片

舉個例子,TPC-H Q5中有customer、 orders、lineitem、supplier、nation、region這么六張表,它是一個比較典型的星型結構。

圖片

我們將orders和region這兩個表標紅,因為它們上面有過濾條件,需要單獨考慮。然后對于本身的join條件,標上一些帶箭頭的線。這里從事實表到維度表,用維度表的主鍵做join的條件??梢钥闯觯还灿?個條件都是用主鍵來做join,其中還有比較特殊的一個條件,用畫的虛線標記,它的兩邊互相都不是用主鍵來做的join。

這個join算法下一步還會有一個聯合優化,最后可以跟謂詞推斷聯合使用,形成一個新的優化。因為可以看到supplier和customer有一個join條件,supplier跟nation也有一個join條件,用的都是同一個類型T來做決定。我們可以推導出來nation和customer表之間是以類型key做為join的條件,因此我們用黃色的選項表示。

最后實際生成的最優的join順序是從region開始,先跟nation表join,再跟customer表join,再跟orders 表join,再和lineitem表 join,最后跟supplier表 join。這是我們新推斷出來的條件。那么為什么是走這么一個路線,而不是先把上面這一條路join完成后再join下面這邊的表,是因為我們考慮到orders,region這兩張表都有過濾條件,放在一起過濾效果會更好。這樣會讓lineitem這張表的行數減少的速率更快。

執行器(Execution)

最后是執行器部分,從邏輯計劃轉化到實際可執行的pipeline,執行器的好壞對OLAP系統的執行效率影響是非常大的,下面會做詳細介紹。

圖片

眾所周知,執行器有一個經典的火山模型。對于每一行它是一個典型的pull模型,從最上層的計算的operator開始,每次調用一個NEXT函數從下面的節點去拿一行新的數據出來,做完計算之后,再等待更上層的那個計算節點去調用next從它這里取走。

火山模型存在一些問題,首先它并沒有做并行化,而是一行一行地處理;而且每一行在不同層級之間做一次調用,實際上會產生虛函數的開銷。因為next在不同編程語言肯定是要做函數重載,就算是虛函數開銷也很有可能是比實際計算的開銷還大,在整體開銷上會占相當的比例;同時對緩存也是非常不友好的,因為一行數據會跑多個不同的operation,可能在取下一行的時候,原來的緩存已經被清洗掉了。

MatrixOne的執行器是基于push模型,可以把幾個連續的operator組成一個流水線,而且流水線里面流動的數據,并不是一行一行的數據,而是前面提到的TAE存儲引擎里面的一個block,包含8192行數據,對于一般的數字類型是可以直接放進L1 Cache里面的,對緩存非常友好。每一個operator每一次要處理完這8192行才會喂給下一個operator,再加上調度是從最下面的,實際讀取每一張表的table scan 那個節點開始,往上面push。

對于push模型,是以數據為中心而不是以operator為中心,它的生成過程是對上一步的planner和optimizer生成的邏輯計劃,作一個后續遍歷,后續遍歷之后就可以得到一個基礎的pipeline結構,這個基礎的pipeline結構還沒有帶上比如每臺機器有多少個CPU或者需要在多少個CN節點上去執行這樣的信息。在后面實際執行的時候,再動態地根據這些基礎信息去做擴展。

圖片

舉個簡單的例子,假設一個簡單的查詢,有R、S、T三張表做join,其中R表是最大的一個表,S表和T表相對比較小,并且每個表都有過濾條件。對于一個典型的hash join,我們會把S和T這兩張表去構建hash表,然后R表在這兩個hash表上面依次去做探測(Probe)操作,得到join之后的數據。這么一個邏輯計劃至少需要插上三個pipeline,S表的讀取數據,做完過濾之后再建完hash表就在這里終止,T表也是在建完hash表之后就在join算子上面終結掉。但是最大的R表它始終是要做probe的,這張表的pipeline就可以往上走很多步。比如先做完過濾,再跟S表join之后,仍然以批量數量。然后這個批會繼續往下走,在下一個join中,仍然在同一個pipeline的下一個operator里面,再跟T表做一個join。所以一個3表join通常會拆成3個pipeline出來。

右圖還包括了數據并行的信息,比如S表可能會使用go語言里的三個協程并行的去讀數據,再做合并操作,合并完之后構建hash表,T表也是用三個協程去并行的讀,讀完之后,然后送到這里的構建hash表。R表因為比較大,pipeline會展開出更多的實際pipeline出來。我們可以看到就是R表這個pipeline是不會被阻斷的,通過hash operator之后,會繼續進到下一個join節點。

圖片

如上圖,我們的pipeline提供了這些算子,比較典型的有聚合、分組和各種join操作。這里把merge和connector、dispatch的顏色標識成不一樣,因為它們和其它operator的區別是其它算子都是只能在一個pipeline的中間,接受的數據是從上一個算子傳過來,發送的數據就直接發送給下一個算子去做后續的計算。而標成灰色的這一部分是在一個pipeline的數據的source或者sink,即入口或者出口的地方,比如merge它會去其他的pipeline去接收數據,把所有pipeline的數據合并成一個,返回給用戶。同理group by或者order by算子,也會執行merge操作。

發送也分為兩類:

  • connector算子是一對一的發送。
  • dispatch算子是一對多的發送。

dispatch會有很多不同的模式:

  • 一種是廣播的模式,假設S表是一個很小的表,構建完hash表之后,會把hash表廣播到不同的pipeline出來去做計算;
  • 一種是做shuffle,假如S表和R表都比較大,因此要做shuffle join,那么直接會通過一個shuffle dispatch算子把數據發送到不同的對應的一個pipeline上面去。

圖片

對于OLAP系統,從語義上來說通常跟SQL本身沒什么關系。但是OLAP的分析性查詢會是比較復雜的計算任務,有一些SQL能力是必須具備的,比如多表join、子查詢、窗口函數,還有CTE 和Recursive CTE,以及用戶自定義函數等。MatrixOne目前已經具備這些能力。

責任編輯:姜華 來源: DataFunTalk
相關推薦

2023-10-19 07:09:57

NewSQL數據庫

2023-12-18 09:03:53

MatrixOneNewSQL數據庫

2023-12-07 14:03:06

系統設計ETL系統

2022-07-27 08:24:44

數據庫RTOSQL

2024-11-25 06:45:00

數據庫OLAPOLTP

2011-08-23 09:23:35

DB2OLAP函數OLTP

2011-04-15 11:29:31

數據庫設計

2011-05-24 13:06:14

數據庫設計敏捷

2018-06-26 08:27:21

DRDS內核 列式存儲

2011-03-01 16:00:08

java數據庫

2011-06-03 10:50:27

Java

2015-04-14 15:24:01

SQL ServerOLAPDBA

2024-03-20 08:16:34

MatrixOne云原生數據庫管理系統

2017-09-26 13:35:40

Mysql數據庫設計樹狀數據

2011-03-10 11:12:59

數據庫

2011-03-10 11:17:03

數據庫設計技巧

2011-04-15 13:28:44

數據庫設計

2019-12-26 17:25:22

數據庫設計技術

2019-10-21 16:54:48

數據庫設計SQL

2023-11-13 16:58:40

數據庫系統
點贊
收藏

51CTO技術棧公眾號

久久天天综合| 麻豆mv在线观看| 国内久久婷婷综合| 欧美激情视频一区| 亚洲熟妇一区二区三区| 日韩成人在线电影| 午夜国产不卡在线观看视频| 丝袜美腿玉足3d专区一区| www.av黄色| 日韩av不卡一区二区| 欧美成人一区二区三区电影| 亚洲第一香蕉网| 91精品亚洲一区在线观看| 精品成人在线视频| 国产91av视频在线观看| 欧美孕妇性xxxⅹ精品hd| 国产精品一区二区视频| 日本国产一区二区三区| 成人观看免费视频| 成人羞羞网站入口免费| 日韩欧美视频在线| 中文字幕第88页| 麻豆mv在线看| 亚洲在线观看免费| 欧美亚洲视频一区| 丁香在线视频| 91丨porny丨首页| 福利视频一区二区三区| 一二三四区在线| 久久五月激情| 欧美壮男野外gaytube| 精品视频久久久久| 综合激情在线| 久久国产精品99国产精| 精品一区二区在线观看视频| 视频一区中文| 精品视频一区在线视频| 白丝校花扒腿让我c| 成人在线精品| 91精品在线免费观看| 91日韩视频在线观看| 毛片免费看不卡网站| 精品久久久久久中文字幕一区奶水 | zzijzzij亚洲日本少妇熟睡| 亚洲综合成人婷婷小说| 国产永久免费视频| 麻豆91精品视频| 国产精品久久久久91| 久久亚洲精品石原莉奈| 欧美亚洲免费| 国产成人97精品免费看片| 成人午夜淫片100集| 99在线观看免费视频精品观看| 久久99热这里只有精品国产| 久久激情免费视频| 欧美午夜不卡影院在线观看完整版免费| 久久黄色av网站| www.4hu95.com四虎| 日韩毛片视频| 久久精品亚洲热| 男的操女的网站| 欧美精品成人| 97免费中文视频在线观看| 国产成人精品一区二三区| 亚洲三级国产| 日韩av成人在线观看| 激情五月婷婷网| 久久精品国产久精国产| 成人乱色短篇合集| 亚洲黄色a级片| av中文字幕在线不卡| 久久久久一区二区| 成在在线免费视频| 亚洲欧洲成人自拍| 精品成在人线av无码免费看| 蜜桃视频m3u8在线观看| 欧美性猛交一区二区三区精品| 亚洲一区在线不卡| 久久在线观看| 亚洲激情视频在线| 中文字幕人妻一区二区三区在线视频| 日本a级不卡| 九九视频直播综合网| 日本道在线观看| 奇米影视一区二区三区| 99re在线| 成人免费在线电影| 夜夜嗨av一区二区三区四季av | 精品网站在线看| 黄色大片在线看| 亚洲男人都懂的| 欧美牲交a欧美牲交aⅴ免费真| 免费日韩成人| 亚洲第一区中文99精品| 久久久久久久毛片| 狠狠88综合久久久久综合网| 国产91网红主播在线观看| 国产麻豆91视频| 91一区二区三区在线观看| 亚洲午夜激情| 深夜成人在线| 日韩亚洲电影在线| 黄免费在线观看| 亚洲第一在线| 成人黄色午夜影院| 天堂a√在线| 亚洲欧美成人一区二区三区| 久久精品网站视频| 成人影院中文字幕| www.99久久热国产日韩欧美.com| 日韩特黄一级片| 国产揄拍国内精品对白| 日本在线免费观看一区| 岛国毛片av在线| 在线综合+亚洲+欧美中文字幕| 亚洲狠狠婷婷综合久久久久图片| 欧美一区二区| 国产精品一区电影| 久久视频www| 亚洲高清不卡在线观看| 亚洲在线观看网站| 成人免费电影网址| 欧美中文字幕精品| 天堂a√中文在线| 亚洲国产欧美日韩另类综合| 国产永久免费网站| 日韩精品诱惑一区?区三区| 国产91免费看片| 香蕉久久一区二区三区| 亚洲最色的网站| 日本r级电影在线观看| 日韩精品久久| 国产欧美一区二区三区久久| 国产福利免费在线观看| 日韩欧美中文第一页| 精品人妻一区二区免费| 欧美女激情福利| 91最新在线免费观看| 天堂成人在线| 精品magnet| 人妻丰满熟妇aⅴ无码| 欧美视频网站| 99久久一区三区四区免费| av在线导航| 日韩欧美一区二区免费| 欧美成人777| 国产一区二三区| 强开小嫩苞一区二区三区网站| 国产亚洲精品精品国产亚洲综合| 亚洲欧美日韩国产精品| 中文字幕精品无码一区二区| 在线日本成人| 日韩成人在线免费观看| 日韩av男人天堂| 成人在线一区二区三区| 无码av天堂一区二区三区| 97精品久久| 97在线观看视频| 免费在线黄色电影| 欧洲精品视频在线观看| 国产黄色片在线| 国产一区二区三区精品视频| 久久久久久久久久伊人| 亚洲大奶少妇| 午夜精品美女自拍福到在线| 熟妇人妻一区二区三区四区 | 国产一级揄自揄精品视频| 亚洲精品毛片一区二区三区| 国产精品美女久久久久久久久| 国产一区二区在线观看免费视频| 欧美日韩精选| 久久国产一区二区| 桃色一区二区| xvideos成人免费中文版| 国产高中女学生第一次| 午夜不卡av免费| 人妻aⅴ无码一区二区三区| 九九九久久久精品| 黄色激情在线视频| 色噜噜国产精品视频一区二区| 男人av资源站| 福利一区福利二区| 国产日韩av网站| 成人写真视频| 亚洲午夜精品久久久中文影院av| 五月婷婷激情网| 91在线精品一区二区三区| 成年网站在线免费观看| 久久福利综合| 懂色一区二区三区av片| videos性欧美另类高清| 日韩视频亚洲视频| 老熟妇高潮一区二区高清视频| 一本大道av伊人久久综合| 成人在线观看小视频| 91精选在线| 久久久亚洲精品一区二区三区| 邪恶网站在线观看| 欧美精品麻豆| 亚洲ai欧洲av| 红杏成人性视频免费看| 国产日韩视频在线观看| 免费在线小视频| 久久手机精品视频| 国产资源在线观看| 精品福利二区三区| 亚洲一级黄色大片| 动漫精品一区二区| 四虎影院中文字幕| 国产亚洲成av人在线观看导航| 俄罗斯女人裸体性做爰| 丝袜美腿亚洲一区| 霍思燕三级露全乳照| 亚欧美无遮挡hd高清在线视频| 蜜桃成人在线| 久久a爱视频| 1区1区3区4区产品乱码芒果精品| 日韩网站中文字幕| 97在线日本国产| 91高清在线观看视频| 深夜福利国产精品| 青青久草在线| 日韩经典中文字幕| 亚洲精品无码久久久| 欧美精品日韩一本| 在线观看中文字幕2021| 色av一区二区| 天天操夜夜操视频| 偷拍亚洲欧洲综合| 欧美成人aaaaⅴ片在线看| 亚洲三级久久久| 999福利视频| 国产精品久久久久久久久免费桃花| 亚洲狠狠婷婷综合久久久久图片| 99久久精品国产精品久久| 精品无码av一区二区三区不卡| 激情六月婷婷综合| 一区二区免费av| 久久99精品久久久| 91视频这里只有精品| 久久er99精品| 五月天婷婷亚洲| 韩国欧美国产1区| 亚洲精品成人在线播放| 久久91精品国产91久久小草| 天天影视色综合| 久久精品国产精品亚洲综合| 久久成年人网站| 国产自产高清不卡| 自拍视频第一页| 国产69精品久久久久777| 亚洲少妇中文字幕| 99re8在线精品视频免费播放| 艳妇乳肉亭妇荡乳av| 91丨九色丨蝌蚪丨老版| 男人天堂av电影| 国产精品水嫩水嫩| 91久久国产综合| 一区二区三区不卡视频在线观看 | 欧美视频网址| 一区二区在线观| 亚欧美无遮挡hd高清在线视频| 亚洲国产一二三精品无码| 国产精品大片| jizzjizz国产精品喷水| 日韩影院精彩在线| 网站在线你懂的| 福利一区二区在线观看| 免费又黄又爽又猛大片午夜| 成人影院在线| 亚州欧美一区三区三区在线| 凹凸成人精品亚洲精品密奴| 人人妻人人澡人人爽精品欧美一区| 午夜欧美视频| 午夜免费福利小电影| 久久久夜精品| 尤物国产在线观看| 国产不卡在线视频| 久久精品国产亚洲AV熟女| 国产精品毛片高清在线完整版| 精品一区二区三区日本| 中文字幕一二三四| 7777精品久久久大香线蕉| 韩国av永久免费| 在线一区二区日韩| h片在线观看| 国产美女精品视频免费观看| 91精品啪在线观看国产爱臀 | 欧美激情一区二区久久久| 依依综合在线| 亚洲专区中文字幕| 亚洲老女人视频免费| 国产日产欧美一区二区| 久久精选视频| 精品国产aⅴ一区二区三区东京热| 91美女在线观看| 日韩成人短视频| 欧美日韩中文字幕| 99这里有精品视频| 亚洲全黄一级网站| 免费网站在线观看人| 国产精品一区专区欧美日韩| 欧美aaaaa级| 在线观看污视频| 美女网站一区二区| 精品人妻一区二区三区日产乱码卜| 亚洲视频在线观看一区| 乱子伦一区二区三区| 亚洲精品一区二区在线观看| 日本三级视频在线播放| 热门国产精品亚洲第一区在线| 亚洲精品午夜| 成人在线观看www| 肉色丝袜一区二区| 色综合久久五月| 亚洲视频免费在线观看| 91麻豆精品在线| 日韩精品有码在线观看| 色婷婷在线播放| 91九色蝌蚪国产| 日韩精品欧美| 不卡av免费在线| 久久亚洲一区二区三区明星换脸| 激情小说中文字幕| 欧美一级专区免费大片| 亚洲搞黄视频| 国产精品免费福利| 精品国产一级毛片| av免费中文字幕| 久久婷婷综合激情| 看片网址国产福利av中文字幕| 日韩免费电影网站| 国产激情视频在线观看| 国产一区二区色| 久久国产亚洲精品| 九九九在线观看视频| 国产欧美精品一区二区三区四区| 国产又粗又爽视频| 亚洲日本欧美中文幕| 美脚恋feet久草欧美| 欧美日韩在线观看一区| 久久人人超碰| 日韩av片在线| 欧美日韩激情一区二区三区| 最新真实国产在线视频| 国产日韩av在线播放| 99热国内精品永久免费观看| 久久久久久久久久一区| 综合久久久久久| 国产肥老妇视频| 久久久久久美女| 三级小说欧洲区亚洲区| 国产男女无遮挡| 国产日韩欧美a| 91麻豆国产视频| 久久国产视频网站| 一区二区三区自拍视频| 丁香花在线影院观看在线播放| 97久久超碰国产精品电影| 亚洲免费黄色网址| 国产亚洲精品久久久久久777| 成人精品三级| 中文字幕在线乱| 丁香六月综合激情| www.毛片.com| 最近2019中文字幕第三页视频| 国产精品麻豆| www在线观看免费| 久久精品亚洲精品国产欧美kt∨| 在线视频你懂得| 九九热最新视频//这里只有精品 | 热这里只有精品| 成人黄色大片在线观看| 国产寡妇亲子伦一区二区三区四区| 国产亚洲精品久久久久久牛牛| av在线亚洲一区| 欧美不卡在线播放| 国产亚洲欧美日韩俺去了| 国产特级黄色片| 热99在线视频| 欧美激情成人在线| 日本黄色片在线播放| 欧美精选在线播放| 天堂av中文在线观看| 日本成人性视频| 91免费看视频| 精品国产亚洲av麻豆| 国产成人精品国内自产拍免费看 | 欧美成人亚洲成人| 国产成人高清| 国产性猛交96| 欧美日韩免费高清一区色橹橹 | 久久久久亚洲av无码专区首jn| 色婷婷一区二区| 色操视频在线| 亚洲精品日韩成人| 99久久婷婷国产精品综合| 国产精品久久婷婷| 国产97在线观看| 激情偷拍久久|