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

久久99热精品| 精品少妇一区二区三区在线视频| 日韩午夜视频在线观看| 中文字幕日产av| 影音先锋日韩在线| 精品成人一区二区| 精品久久久久久无码国产| 免费超碰在线| 99re热视频精品| 国产区精品在线观看| 日本三级视频在线| 日韩免费av| 亚洲高清久久网| 国产又大又黄又猛| 国模私拍一区二区国模曼安| 国产精品乱人伦一区二区| 国产伦视频一区二区三区| 国产精品sm调教免费专区| 黄色成人在线网址| 在线午夜精品自拍| 欧美亚一区二区三区| 日韩欧美激情电影| 欧美三级在线播放| 黑鬼大战白妞高潮喷白浆| 里番在线播放| **网站欧美大片在线观看| 麻豆91av| 日本黄色免费视频| 国产精品1区二区.| 成人精品视频在线| 亚洲永久精品一区| 久久综合九色综合欧美狠狠| 97超级碰碰碰久久久| 欧产日产国产v| 99精品在线| 国产一区二区三区久久精品| 国产精品久久无码| 动漫3d精品一区二区三区乱码| 欧美日韩国产成人在线免费| 欧美一级黄色片视频| 18aaaa精品欧美大片h| 亚洲精品日产精品乱码不卡| 日本黄色播放器| 北条麻妃在线| 日本一区二区成人| 日韩免费电影一区二区三区| 黄网站在线观看| 久久午夜色播影院免费高清| 久久综合狠狠综合久久综青草| 欧美熟妇另类久久久久久不卡| 国产乱子伦一区二区三区国色天香 | 黄色性生活一级片| 欧美中文一区| 亚洲国内高清视频| 国产黑丝在线观看| 欧美日韩大片免费观看| 亚洲精品99999| 中文字幕影片免费在线观看| 久久夜色精品国产噜噜av小说| 精品美女在线播放| 欧美做受高潮中文字幕 | 欧美日韩精品久久| 牛牛热在线视频| 久久蜜臀中文字幕| 少妇特黄a一区二区三区| 国产高清免费av在线| 国产精品系列在线| 黄瓜视频免费观看在线观看www| 黄色免费网站在线观看| 一区二区高清视频在线观看| 丰满少妇大力进入| 一级毛片久久久| 91久久一区二区| 久久撸在线视频| 免费欧美网站| 亚洲丁香久久久| 97超碰在线资源| 日韩国产一区二区三区| 久久手机精品视频| 国产在线视频卡一卡二| 蜜桃视频一区| 成人精品一区二区三区| 亚洲免费成人在线| 久久久国产精品麻豆| 一区二区三区的久久的视频| 性欧美videoshd高清| 精品美女国产在线| 污版视频在线观看| 精品三级av在线导航| 亚洲日本成人网| 一区二区三区影视| 亚洲欧美日韩视频二区| 国产精品一区二区三| 亚洲精品中文字幕成人片| 2021中文字幕一区亚洲| 色呦呦网站入口| 成人ssswww在线播放| 欧美日韩一区二区在线视频| 自拍视频第一页| 精品国产不卡| 久久久亚洲福利精品午夜| 久久久成人免费视频| 韩国成人精品a∨在线观看| 国产一区二区三区色淫影院| 91短视频版在线观看www免费| 亚洲精品五月天| 激情五月婷婷久久| 国产精品欧美大片| www.日韩免费| 国产中文字幕视频| 粉嫩一区二区三区性色av| 日韩福利在线| 九色porny视频在线观看| 欧美精品xxxxbbbb| a级片在线观看| 激情六月综合| 91久久久久久久一区二区| 十九岁完整版在线观看好看云免费| 中文字幕一区二区三区在线播放| 欧美亚洲另类色图| 一区中文字幕| 久久成人在线视频| 自拍偷拍福利视频| 久久久精品蜜桃| 精品视频在线观看一区| 精品国产18久久久久久二百| 国产一区二区三区久久精品 | 7777精品伊久久久大香线蕉语言| 激情小说 在线视频| 精品久久久视频| 9.1在线观看免费| 国产精品国产三级国产在线观看 | 国产精品毛片久久久久久| 国产精品专区在线| 亚洲日本va| 久久国产精品久久国产精品| 中文字幕永久免费视频| 18video性欧美19sex高清| 成人毛片一区二区三区| 蜜桃传媒一区二区亚洲av| 福利一区视频| 日精品一区二区三区| 成人网页在线免费观看| 日本中文字幕在线视频| 色婷婷综合久久久| 欧美性xxxx图片| 免费网站成人| 国产欧美久久久精品影院| 亚洲国产精品久久久久婷蜜芽| silk一区二区三区精品视频| 久精品免费视频| 国产农村妇女毛片精品久久| 亚洲男人天堂一区| 波多野结衣电影免费观看| 欧美国内亚洲| 国产精品免费一区二区| 91在线三级| 亚洲精品日韩久久久| 人妻 日韩精品 中文字幕| 久久亚洲精品小早川怜子| 免费日韩视频在线观看| blacked蜜桃精品一区| 国产精品一区=区| av超碰免费在线| 精品区一区二区| 男人的天堂一区| 久久精品亚洲麻豆av一区二区 | 少妇在线看www| 亚洲美女自拍视频| 中文字幕av资源| 亚洲男人的天堂在线aⅴ视频| 三大队在线观看| 中文高清一区| 天天爽天天狠久久久| 91麻豆精品国产综合久久久| 欧美高清第一页| 日韩a级作爱片一二三区免费观看| 色婷婷综合久久久中文一区二区| 国产精品一区二区亚洲| 国产伦精一区二区三区| www.日本在线播放| 欧美午夜精品一区二区三区电影| 91免费欧美精品| av毛片午夜不卡高**水| 亚洲无限av看| www.亚洲黄色| 色哦色哦哦色天天综合| 日韩成人毛片视频| av激情综合网| jizz18女人| 最新日韩av| 亚洲一区三区在线观看| 福利欧美精品在线| 国产精品视频yy9099| 国精产品一区一区三区mba下载| 亚洲精品自拍偷拍| 99久久精品免费看国产交换| 欧美日韩国产丝袜另类| 午夜精品福利在线视频| 久久先锋资源网| 日韩精品xxx| 日韩国产精品久久| 日本黄大片在线观看| 日本道不卡免费一区| 精品国产一区二区三区久久久久久| 免费污视频在线一区| 久久久久久久一| 日本在线看片免费人成视1000| 亚洲精品动漫100p| 91在线公开视频| 色一情一乱一乱一91av| 久草免费在线视频观看| 国产精品嫩草影院av蜜臀| 国产精品嫩草av| 国产酒店精品激情| 杨幂毛片午夜性生毛片| 国产一区91| 黄色一级片黄色| 91精品国产成人观看| 日本一区不卡| 窝窝社区一区二区| 国产一区二区无遮挡| 欧美视频三区| 国产啪精品视频网站| 国产精品亚洲d| 欧美一级电影久久| av成人 com a| 高清欧美性猛交xxxx| av香蕉成人| 久久艹在线视频| 国产日产一区二区三区| 色系列之999| 大片免费播放在线视频| 亚洲欧洲成视频免费观看| 人妻精品一区一区三区蜜桃91| 91精品国产综合久久婷婷香蕉| 中文字幕一区二区三区人妻四季 | 国产亚洲一区二区三区不卡| 久久久久久久久久久久久久一区| 高潮久久久久久久久久久久久久 | 亚洲福利一区二区三区| 久草视频在线资源| 一区二区三区丝袜| 免费毛片在线播放免费| 一区二区三区加勒比av| 欧美丰满艳妇bbwbbw| 亚洲精品中文在线影院| 国产美女福利视频| 一区二区三区欧美久久| 九九九久久久久| 亚洲最大成人综合| 精品一区免费观看| 欧美日韩免费在线| 国产伦精品一区二区三区视频我| 欧美性猛交xxxx乱大交3| 日本免费在线观看视频| 91黄色免费网站| 一本在线免费视频| 亚洲欧美另类视频| 亚洲激情成人在线| 国产亚洲小视频| 天天色 色综合| 欧美a视频在线观看| 欧美亚洲国产一区在线观看网站| 精品国产www| 欧美一区二区私人影院日本| 亚洲大尺度视频| 亚洲精品国产品国语在线| 欧美日韩国产亚洲沙发| 国产一区二区三区在线视频| 香港伦理在线| 欧美精品videos| 欧美三级网址| 91精品国产综合久久久久久久久 | 成人午夜免费影院| 亚洲欧美日韩国产另类专区| 日韩av女优在线观看| 色综合天天在线| 国产免费不卡av| 亚洲精品狠狠操| 97电影在线| 久久久久国产一区二区三区| 亚洲精品永久免费视频| 国产欧美一区二区三区久久人妖| 一区二区网站| 无遮挡亚洲一区| 亚洲午夜激情在线| 午夜视频在线瓜伦| 国产超碰在线一区| 成人无码av片在线观看| 亚洲一区二区中文在线| www.av88| 亚洲国产精品成人一区二区| 成年人视频在线观看免费| 久久777国产线看观看精品| 欧美香蕉视频| 国产精品xxx在线观看www| 成人免费电影网址| www.99热这里只有精品| 激情综合色丁香一区二区| 黄色录像a级片| 亚洲免费大片在线观看| 五月婷婷激情五月| 亚洲国产欧美一区二区丝袜黑人| 欧美性天天影视| 日本一区二区三区在线播放| 亚洲91网站| 中文字幕制服丝袜在线| 久久国产精品毛片| aaa黄色大片| 亚洲免费观看高清完整版在线观看 | 国产精品19p| 国产精品久久午夜夜伦鲁鲁| 亚洲精品午夜国产va久久成人| 欧美一级日韩免费不卡| 91xxx在线观看| 国产91色在线免费| 欧美自拍视频| www.xxx麻豆| 国内精品一区二区| 91pron在线| 久久久一二三区| 成人欧美一区二区三区1314| 亚洲精品午夜国产va久久成人| 日韩三级精品电影久久久| 国产youjizz在线| 青青草原成人在线视频| 风间由美一区二区av101| 日本天堂免费a| 黑人巨大精品欧美黑白配亚洲| 黄色av免费播放| 91福利视频网站| 九一国产在线| 日本精品性网站在线观看| 另类图片第一页| www.av中文字幕| 91免费视频大全| 日韩成人在线免费视频| 精品成人一区二区三区四区| 青草av在线| 国产欧美一区二区在线播放| 欧美午夜不卡| 亚洲午夜久久久久久久久| 亚洲综合自拍偷拍| 深夜福利视频网站| 性金发美女69hd大尺寸| 欧美顶级毛片在线播放| 无码播放一区二区三区| 91老师片黄在线观看| 久久久久99精品成人片我成大片| 亚洲成人黄色网| 91丝袜在线| 奇米精品在线| 蜜桃久久久久久久| 国产稀缺精品盗摄盗拍| 91精品一区二区三区久久久久久| 成人短视频在线观看| 91精品天堂| 亚洲黄页一区| 手机av免费看| 欧美日韩中字一区| 50度灰在线| 国产原创精品| 日韩国产欧美在线播放| 波兰性xxxxx极品hd| 日韩欧美在线综合网| 爱啪视频在线观看视频免费| 久久另类ts人妖一区二区| 日韩激情一二三区| 我要看黄色一级片| 亚洲第一中文字幕在线观看| 欧美性suv| 今天免费高清在线观看国语| 播五月开心婷婷综合| 亚洲男人天堂网址| 久久色在线播放| 噜噜噜天天躁狠狠躁夜夜精品| 午夜精品在线免费观看| 亚洲蜜臀av乱码久久精品蜜桃| 天堂av一区二区三区| 国产精品电影观看| 午夜精品网站| 国产人妻大战黑人20p| 欧美一区中文字幕| 永久免费毛片在线播放| 一级一片免费播放| 91麻豆国产自产在线观看| 国产一区二区三区在线观看| 久久久亚洲精选| 欧美gay男男猛男无套| 男男一级淫片免费播放| 欧美日韩国产影片| 蜜桃视频m3u8在线观看| 资源网第一页久久久| 99久久99久久精品免费看蜜桃 | 亚洲福利一区| 欧美日韩中文字幕视频| 亚洲精品美女在线观看| 国产精品成人3p一区二区三区 | 精品少妇theporn|