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

比 SQL 快?這個數據庫神器強的離譜!

數據庫
SPL 針對 SQL 的不足進行了革新。SPL 重新定義了并擴展許多結構化數據中的運算,增加了離散性、強化了有序計算、實現了徹底的集合化、支持對象引用、提倡分步運算。

數據庫語言的目標

要說清這個目標,先要理解數據庫是做什么的。

數據庫這個軟件,名字中有個“庫”字,會讓人覺得它主要是為了存儲的。其實不然,數據庫實現的重要功能有兩條:計算、事務!也就是我們常說的 OLAP 和 OLTP,數據庫的存儲都是為這兩件事服務的,單純的存儲并不是數據庫的目標。

我們知道,SQL 是目前數據庫的主流語言。那么,用 SQL 做這兩件事是不是很方便呢?

事務類功能主要解決數據在寫入和讀出時要保持的一致性,實現這件事的難度并不小,但對于應用程序的接口卻非常簡單,用于操縱數據庫讀寫的代碼也很簡單。如果假定目前關系數據庫的邏輯存儲模式是合理的(也就是用數據表和記錄來存儲數據,其合理性與否是另一個復雜問題,不在這里展開了),那么 SQL 在描述事務類功能時沒什么大問題,因為并不需要描述多復雜的動作,復雜性都在數據庫內部解決了。

但計算類功能卻不一樣了。

這里說的計算是個更廣泛的概念,并不只是簡單的加加減減,查找、關聯都可以看成是某種計算。

什么樣的計算體系才算好呢?

還是兩條:寫著簡單、跑得快。

寫著簡單,很好理解,就是讓程序員很快能寫出來代碼來,這樣單位時間內可以完成更多的工作;跑得快就更容易理解,我們當然希望更短時間內獲得計算結果。

其實 SQL 中的 Q 就是查詢的意思,發明它的初衷主要是為了做查詢(也就是計算),這才是 SQL 的主要目標。然而,SQL 在描述計算任務時,卻很難說是很勝任的。

SQL 為什么不行

先看寫著簡單的問題。

SQL 寫出來很象英語,有些查詢可以當英語來讀和寫(網上多得很,就不舉例了),這應當算是滿足寫著簡單這一條了吧。

且慢!我們在教科書上看到的 SQL 經常只有兩三行,這些 SQL 確實算是寫著簡單的,但如果我們嘗試一些稍復雜化的問題呢?

這是一個其實還不算很復雜的例子:計算一支股票最長連續上漲了多少天?用 SQL 寫出來是這樣的:

select max (consecutive_day)
from (select count(*) (consecutive_day
from (select sum(rise_mark) over(order by trade_date) days_no_gain
from (select trade_date,
case when closing_price>lag(closing_price) over(order by trade_date)
then 0 else 1 END rise_mark
from stock_price ) )
group by days_no_gain)

這個語句的工作原理就不解釋了,反正有點繞,同學們可以自己嘗試一下。

這是潤乾公司的招聘考題,通過率不足 20%;因為太難,后來被改成另一種方式:把 SQL 語句寫出來讓應聘者解釋它在算什么,通過率依然不高。

這說明什么?說明情況稍有復雜,SQL 就變得即難懂又難寫!

再看跑得快的問題,還是一個經常拿出來的簡單例子:1 億條數據中取前 10 名。這個任務用 SQL 寫出來并不復雜:

SELECT TOP 10 x FROM T ORDER BY x DESC

但是,這個語句對應的執行邏輯是先對所有數據進行大排序,然后再取出前 10 個,后面的不要了。大家知道,排序是一個很慢的動作,會多次遍歷數據,如果數據量大到內存裝不下,那還需要外存做緩存,性能還會進一步急劇下降。如果嚴格按這句 SQL 體現的邏輯去執行,這個運算無論如何是跑不快的。然而,很多程序員都知道這個運算并不需要大排序,也用不著外存緩存,一次遍歷用一點點內存就可以完成,也就是存在更高性能的算法。可惜的是,用 SQL 卻寫不出這樣的算法,只能寄希望于數據庫的優化器足夠聰明,能把這句 SQL 轉換成高性能算法執行,但情況復雜時數據庫的優化器也未必靠譜。

看樣子,SQL 在這兩方面做得都不夠好。這兩個并不復雜的問題都是這樣,現實中數千行的 SQL 代碼中,這種難寫且跑不快的情況比比皆是。

為什么 SQL 不行呢?

要回答這個問題,我們要分析一下用程序代碼實現計算到底是在干什么。

本質上講,編寫程序的過程,就是把解決問題的思路翻譯成計算機可執行的精確化形式語言的過程。舉例來說,就象小學生解應用題,分析問題想出解法之后,還要列出四則運算表達式。用程序計算也是一樣,不僅要想出解決問題的方法,還要把解法翻譯成計算機能理解執行的動作才算完成。

用于描述計算方法的形式語言,其核心在于所采用的代數體系。所謂代數體系,簡單說就是一些數據類型和其上的運算規則,比如小學學到的算術,就是整數和加減乘除運算。有了這套東西,我們就能把想做的運算用這個代數體系約定的符號寫出來,也就是代碼,然后計算機就可以執行了。

如果這個代數體系設計時考慮不周到,提供的數據類型和運算不方便,那就會導致描述算法非常困難。這時候會發生一個怪現象:翻譯解法到代碼的難度遠遠超過解決問題本身。

舉個例子,我們從小學習用阿拉伯數字做日常計算,做加減乘除都很方便,所有人都天經地義認為數值運算就該是這樣的。其實未必!估計很多人都知道還有一種叫做羅馬數字的東西,你知道用羅馬數字該怎么做加減乘除嗎?古羅馬人又是如何上街買菜的?

代碼難寫很大程度是代數的問題。

再看跑不快的原因。

軟件沒辦法改變硬件的性能,CPU 和硬盤該多快就是多快。不過,我們可以設計出低復雜度的算法,也就是計算量更小的算法,這樣計算機執行的動作變少,自然也就會快了。但是,光想出算法還不夠,還要把這個算法用某種形式語言寫得出來才行,否則計算機不會執行。而且,寫起來還要比較簡單,都要寫很長很麻煩,也沒有人會去用。所以呢,對于程序來講,跑得快和寫著簡單其實是同一個問題,背后還是這個形式語言采用的代數的問題。如果這個代數不好,就會導致高性能算法很難實現甚至實現不了,也就沒辦法跑得快了。就象上面說的,用 SQL 寫不出我們期望的小內存單次遍歷算法,能不能跑得快就只能寄希望于優化器。

我們再做個類比:

上過小學的同學大概都知道高斯計算 1+2+3+…+100 的小故事。普通人就是一步步地硬加 100 次,高斯小朋友很聰明,發現 1+100=101、2+99=101、…、50+51=101,結果是 50 乘 101,很快算完回家午飯了。

聽過這個故事,我們都會感慨高斯很聰明,能想到這么巧妙的辦法,即簡單又迅速。這沒有錯,但是,大家容易忽略一點:在高斯的時代,人類的算術體系(也是一個代數)中已經有了乘法!象前面所說,我們從小學習四則運算,會覺得乘法是理所當然的,然而并不是!乘法是后于加法被發明出來的。如果高斯的年代還沒有乘法,即使有聰明的高斯,也沒辦法快速解決這個問題。

目前主流數據庫是關系數據庫,之所以這么叫,是因為它的數學基礎被稱為關系代數,SQL 也就是關系代數理論上發展出來的形式語言。

現在我們能回答,為什么 SQL 在期望的兩個方面做得不夠好?問題出在關系代數上,關系代數就像一個只有加法還沒發明乘法的算術體系,很多事做不好是必然的。

關系代數已經發明五十年了,五十年前的應用需求以及硬件環境,和今天比的差異是很巨大了,繼續延用五十年前的理論來解決今天的問題,聽著就感覺太陳舊了?然而現實就是這樣,由于存量用戶太多,而且也還沒有成熟的新技術出現,基于關系代數的 SQL,今天仍然是最重要的數據庫語言。雖然這幾十年來也有一些改進完善,但根子并沒有變,面對當代的復雜需求和硬件環境,SQL 不勝任也是情理之中的事。

而且,不幸的是,這個問題是理論上的,在工程上無論如何優化也無濟于事,只能有限改善,不能根除。不過,絕大部分的數據庫開發者并不會想到這一層,或者說為了照顧存量用戶的兼容性,也沒打算想到這一層。于是,主流數據庫界一直在這個圈圈里打轉轉。

SPL 為什么能行

那么該怎樣讓計算寫著更簡單、跑得更快呢?

發明新的代數!有“乘法”的代數。在其基礎上再設計新的語言。

這就是 SPL 的由來。它的理論基礎不再是關系代數,稱為離散數據集。基于這個新代數設計的形式語言,起名為SPL(Structured Process Language)。

SPL 針對 SQL 的不足(更確切地說法是,離散數據集針對關系代數的各種缺陷)進行了革新。SPL 重新定義了并擴展許多結構化數據中的運算,增加了離散性、強化了有序計算、實現了徹底的集合化、支持對象引用、提倡分步運算。

把前面的問題用 SPL 重寫一遍有個直接感受。

一支股票最長連續上漲多少天:

stock_price.sort(trade_date).group@i(closing_price<closing_price[-1]).max(~.len())

計算思路和前面的 SQL 相同,但因為引入了有序性后,表達起來容易多了,不再繞了。

1 億條數據中取前 10 名:

T.groups(;top(-10,x))

SPL 有更豐富的集合數據類型,容易描述單次遍歷上實施簡單聚合的高效算法,不涉及大排序動作。

限于篇幅,這里不能介紹 SPL(離散數據集)的全貌。我們在這里列舉 SPL(離散數據集)針對 SQL(關系代數)的部分差異化改進:

游離記錄

離散數據集中的記錄是一種基本數據類型,它可以不依賴于數據表而獨立存在。數據表是記錄構成的集合,而構成某個數據表的記錄還可以用于構成其它數據表。比如過濾運算就是用原數據表中滿足條件的記錄構成新數據表,這樣,無論空間占用還是運算性能都更有優勢。

關系代數沒有可運算的數據類型來表示記錄,單記錄實際上是只有一行的數據表,不同數據表中的記錄也不能共享。比如,過濾運算時會復制出新記錄來構成新數據表,空間和時間成本都變大。

特別地,因為有游離記錄,離散數據集允許記錄的字段取值是某個記錄,這樣可以更方便地實現外鍵連接。

有序性

關系代數是基于無序集合設計的,集合成員沒有序號的概念,也沒有提供定位計算以及相鄰引用的機制。SQL 實踐時在工程上做了一些局部完善,使得現代 SQL 能方便地進行一部分有序運算。

離散數據集中的集合是有序的,集合成員都有序號的概念,可以用序號訪問成員,并定義了定位運算以返回成員在集合中的序號。離散數據集提供了符號以在集合運算中實現相鄰引用,并支持針對集合中某個序號位置進行計算。

有序運算很常見,卻一直是 SQL 的困難問題,即使在有了窗口函數后仍然很繁瑣。SPL 則大大改善了這個局面,前面那個股票上漲的例子就能說明問題。

離散性與集合化

關系代數中定義了豐富的集合運算,即能將集合作為整體參加運算,比如聚合、分組等。這是 SQL 比 Java 等高級語言更為方便的地方。

但關系代數的離散性非常差,沒有游離記錄。而 Java 等高級語言在這方面則沒有問題。

離散數據集則相當于將離散性和集合化結合起來了,既有集合數據類型及相關的運算,也有集合成員游離在集合之外單獨運算或再組成其它集合。可以說 SPL 集中了 SQL 和 Java 兩者的優勢。

有序運算是典型的離散性與集合化的結合場景。次序的概念只有在集合中才有意義,單個成員無所謂次序,這里體現了集合化;而有序計算又需要針對某個成員及其相鄰成員進行計算,需要離散性。

在離散性的支持下才能獲得更徹底的集合化,才能解決諸如有序計算類型的問題。

離散數據集是即有離散性又有集合化的代數體系,關系代數只有集合化。

分組理解

分組運算的本意是將一個大集合按某種規則拆成若干個子集合,關系代數中沒有數據類型能夠表示集合的集合,于是強迫在分組后做聚合運算。

離散數據集中允許集合的集合,可以表示合理的分組運算結果,分組和分組后的聚合被拆分成相互獨立的兩步運算,這樣可以針對分組子集再進行更復雜的運算。

關系代數中只有一種等值分組,即按分組鍵值劃分集合,等值分組是個完全劃分。

離散數據集認為任何拆分大集合的方法都是分組運算,除了常規的等值分組外,還提供了與有序性結合的有序分組,以及可能得到不完全劃分結果的對位分組。

聚合理解

關系代數中沒有顯式的集合數據類型,聚合計算的結果都是單值,分組后的聚合運算也是這樣,只有 SUM、COUNT、MAX、MIN 等幾種。特別地,關系代數無法把 TOPN 運算看成是聚合,針對全集的 TOPN 只能在輸出結果集時排序后取前 N 條,而針對分組子集則很難做到 TOPN,需要轉變思路拼出序號才能完成。

離散數據集提倡普遍集合,聚合運算的結果不一定是單值,仍然可能是個集合。在離散數據集中,TOPN 運算和 SUM、COUNT 這些是地位等同的,即可以針對全集也可以針對分組子集。

SPL 把 TOPN 理解成聚合運算后,在工程實現時還可以避免全量數據的排序,從而獲得高性能。而 SQL 的 TOPN 總是伴隨 ORDER BY 動作,理論上需要大排序才能實現,需要寄希望于數據庫在工程實現時做優化。

有序支持的高性能

離散數據集特別強調有序集合,利用有序的特征可以實施很多高性能算法。這是基于無序集合的關系代數無能為力的,只能寄希望于工程上的優化。

下面是部分利用有序特征后可以實施的低復雜度運算:

(1) 數據表對主鍵有序,相當于天然有一個索引。對鍵字段的過濾經常可以快速定位,以減少外存遍歷量。隨機按鍵值取數時也可以用二分法定位,在同時針對多個鍵值取數時還能重復利用索引信息。

(2) 通常的分組運算是用 HASH 算法實現的,如果我們確定地知道數據對分組鍵值有序,則可以只做相鄰對比,避免計算 HASH 值,也不會有 HASH 沖突的問題,而且非常容易并行。

(3) 數據表對鍵有序,兩個大表之間對位連接可以執行更高性能的歸并算法,只要對數據遍歷一次,不必緩存,對內存占用很小;而傳統的 HASH 值分堆方法不僅比較復雜度高,需要較大內存并做外部緩存,還可能因 HASH 函數不當而造成二次 HASH 再緩存。

(4) 大表作為外鍵表的連接。事實表小時,可以利用外鍵表有序,快速從中取出關聯鍵值對應的數據實現連接,不需要做 HASH 分堆動作。事實表也很大時,可以將外鍵表用分位點分成多個邏輯段,再將事實表按邏輯段進行分堆,這樣只需要對一個表做分堆,而且分堆過程中不會出現 HASH 分堆時的可能出現的二次分堆,計算復雜度能大幅下降。

其中 3 和 4 利用了離散數據集對連接運算的改造,如果仍然延用關系代數的定義(可能產生多對多),則很難實現這種低復雜的算法。

除了理論上的差異, SPL 還有許多工程層面的優勢,比如更易于編寫并行代碼、大內存預關聯提高外鍵連接性能等、特有的列存機制以支持隨意分段并行等。?

責任編輯:趙寧寧 來源: 程序猿
相關推薦

2021-07-28 14:20:13

正則PythonFlashText

2021-06-03 21:54:33

數據庫框架緩存

2021-12-01 23:34:10

EtcdRedis場景

2021-12-30 09:40:08

運行 Linux虛擬機

2020-08-13 07:42:15

數據庫Flyway代碼

2020-09-21 14:55:15

數據庫SQL技術

2020-11-06 14:40:50

數據庫MySQLClickHouse

2020-08-26 14:45:34

SQL數據庫數次

2010-04-19 10:00:02

Oracle SQL

2024-05-22 12:07:12

向量數據庫AI

2011-06-03 10:31:14

SQL

2010-07-15 17:28:50

SQL Server

2010-07-08 11:05:14

SQL Server數

2022-07-07 10:46:51

數據處理

2020-02-09 16:18:45

Redis快 5 倍中間件

2009-07-02 09:35:02

hibernate訪問

2010-09-27 15:51:58

SQL角色

2021-05-17 06:57:34

SQLServer數據庫

2025-08-11 08:55:30

HTML前端字體異常

2020-12-21 09:40:16

數據庫工具技術
點贊
收藏

51CTO技術棧公眾號

亚洲精品888| 日本免费成人| 国产亚洲污的网站| 成人福利在线视频| 久久久国产成人| 曰本一区二区三区视频| 欧美精品18+| 国产资源在线视频| av中文天堂在线| 成人美女在线观看| 国产精品久久久久久搜索| 中文字幕另类日韩欧美亚洲嫩草| 欧美精品密入口播放| 欧美日韩国产成人在线91| 日韩精品在线中文字幕| 亚洲成人影院麻豆| 91美女在线观看| 91老司机精品视频| aaa在线视频| 亚洲福利一区| 久久躁狠狠躁夜夜爽| 在线不卡av电影| 国产欧美自拍一区| 欧美放荡的少妇| 激情婷婷综合网| 精品三级久久| 亚洲老司机在线| 先锋在线资源一区二区三区| 无码h黄肉3d动漫在线观看| 国产一区中文字幕| 日本成人免费在线| 国产精品免费av一区二区| 欧美日韩国产高清| 久久韩国免费视频| 91麻豆精品久久毛片一级| 日韩欧美黄色| 亚洲韩国欧洲国产日产av| 992kp免费看片| 国外成人福利视频| 91久久香蕉国产日韩欧美9色| 国产精品久久中文字幕| jizz性欧美| **欧美大码日韩| 亚洲欧美日韩另类精品一区二区三区 | 狠狠躁夜夜躁人人爽天天天天97 | 国产精品久久久久久模特 | 亚洲精品高清国产一线久久| 亚洲av毛片成人精品| 成人高清视频在线| 风间由美久久久| 亚洲欧美黄色片| 丁香桃色午夜亚洲一区二区三区| eeuss一区二区三区| 99久久夜色精品国产亚洲| 久久综合综合久久综合| 国产伦精品免费视频| 中文字幕免费播放| 美国av一区二区| 91久久国产综合久久91精品网站| 亚洲一区中文字幕在线| 久久精品国产第一区二区三区| 国产精品美女999| 中文字幕观看视频| 国内精品久久久久影院色 | 美女喷白浆视频| 91九色综合| 在线观看视频一区二区 | 国产精品蜜月aⅴ在线| 欧美日韩一区精品| 不用播放器的免费av| 久久丁香四色| 亚洲国产欧美一区二区三区同亚洲| 国产白袜脚足j棉袜在线观看| 欧美一级全黄| 国产一区二区三区三区在线观看 | 污污视频在线免费看| 91丨porny丨户外露出| 日韩女优中文字幕| 色的视频在线免费看| 亚洲欧美日韩在线| 国产伦精品一区二区三区四区视频_ | 亚洲精品国产一区二区精华液| 中文字幕精品在线播放| 92久久精品| 欧美亚洲一区二区在线观看| 天天干天天色天天干| 午夜免费欧美电影| 亚洲欧美日韩中文在线制服| 99久久99久久精品免费看小说.| 亚洲精品888| 欧洲成人午夜免费大片| 中文字幕日本视频| 丁香亚洲综合激情啪啪综合| 欧美一区二区三区电影在线观看 | 国产成+人+综合+亚洲欧洲 | 日本成人片在线| 宅男噜噜噜66一区二区66| 色是在线视频| 午夜欧美视频在线观看| www黄色av| 97色婷婷成人综合在线观看| 精品欧美乱码久久久久久| 能免费看av的网站| 欧美日韩国产高清| 国产精品久久视频| 亚洲精品一级片| 国产精品午夜在线| 好吊妞无缓冲视频观看| 国产午夜亚洲精品一级在线| 亚洲精品小视频在线观看| 在线观看亚洲网站| 久久久夜夜夜| 国产精品露出视频| 麻豆网站在线| 欧美性猛交xxxx乱大交蜜桃 | 免费在线观看精品| 高清免费日韩| 米奇精品一区二区三区| 欧美午夜片在线免费观看| 天天干天天曰天天操| 精品久久影视| 日本成熟性欧美| 日韩在线视频第一页| 亚洲视频狠狠干| av免费在线播放网站| 成人高潮a毛片免费观看网站| 日韩视频精品在线| 91视频久久久| 久久女同性恋中文字幕| 欧美 日韩 亚洲 一区| 亚洲一区二区免费在线观看| 色噜噜久久综合伊人一本| 国产精品乱子伦| 99久久久免费精品国产一区二区| 大地资源网在线观看免费官网| 国产三级一区| 一个色综合导航| 日韩在线视频不卡| av高清不卡在线| 青春草国产视频| 亚洲精品国产九九九| 久久久精品在线| 国产精品区在线观看| 中文字幕视频一区| 一区二区三区视频网| jiujiure精品视频播放| 国产成人精品一区二区| 九色国产在线观看| 色哟哟精品一区| a级片在线观看| 日韩中文字幕麻豆| 日韩欧美第二区在线观看| 欧美xnxx| 色婷婷av一区二区三区在线观看 | 国产精品资源站在线| 一本色道久久综合亚洲精品婷婷| 国产91在线播放精品| 这里只有精品视频| 在线观看国产精品视频| 综合中文字幕亚洲| 日本黄色www| 国产综合色产| 久久久久久国产精品免费免费| 天堂av在线网| 尤物精品国产第一福利三区| 中文字幕在线观看精品| 亚洲日本丝袜连裤袜办公室| 91香蕉视频免费看| 亚洲伦理一区| 日本在线观看一区二区| 日韩一级特黄| 欧美国产乱视频| 天堂在线免费av| 欧美网站一区二区| 极品魔鬼身材女神啪啪精品| 成人免费视频网站在线观看| 国产欧美在线一区| 成人同人动漫免费观看| 亚洲最大福利视频网| www.51av欧美视频| 在线观看欧美成人| 亚洲a视频在线观看| 欧美性jizz18性欧美| 三级黄色片在线观看| 顶级嫩模精品视频在线看| 成年人免费大片| 一区二区电影| 裸模一区二区三区免费| 中文幕av一区二区三区佐山爱| 欧美大秀在线观看| 精品视频二区| 欧美不卡123| 少妇无套内谢久久久久| 亚洲成a人在线观看| 免费看黄色三级| 成人毛片在线观看| 欧美伦理片在线观看| 国产精品观看| 亚洲人成网站在线播放2019| 国产精品videossex| 国产精品香蕉在线观看| 国产亚av手机在线观看| 一区二区欧美久久| 免费国产精品视频| 欧美日本一道本| 中文字幕在线欧美| 亚洲国产综合在线| 亚洲女同二女同志奶水| 亚洲人午夜射精精品日韩| 亚洲视频你懂的| 精品人妻互换一区二区三区| 国产成人av网站| 中日韩av在线播放| 久久久999| 久久久久久久久久网| 亚洲成人二区| 性欧美大战久久久久久久免费观看| 久久资源综合| 国产精品日韩欧美一区二区三区| 精品亚洲a∨| 国产精品黄页免费高清在线观看| 福利小视频在线| 欧美精品制服第一页| 日本在线播放| 最近2019中文字幕一页二页| 三级视频网站在线| 精品国产露脸精彩对白| 精品国产999久久久免费| 欧美亚洲国产一区在线观看网站| 天天综合天天干| 亚洲影院久久精品| 美女视频黄免费| 亚洲欧美色综合| 欧美精品久久久久久久久46p| 国产精品剧情在线亚洲| xxxxx99| 国产精品无圣光一区二区| 国产伦精品一区二区三区视频女| 久久久精品日韩欧美| 亚洲成人网在线播放| 91丨porny丨中文| 亚洲av片不卡无码久久| 91亚洲精品一区二区乱码| 亚洲欧美日韩色| 成人毛片在线观看| 国产一级二级视频| 97久久精品人人澡人人爽| 免费看黄色aaaaaa 片| 91免费国产视频网站| 免费黄色在线视频| 久久久久久久免费视频了| x88av在线| 国产精品久久福利| 97在线观看免费高| 一区二区三区中文字幕精品精品| 九九九免费视频| 亚洲午夜在线观看视频在线| 亚州国产精品视频| 色婷婷综合五月| 在线免费观看中文字幕| 91精品国产综合久久精品麻豆| 性色av蜜臀av| 日韩av在线免费播放| 国内精品在线视频| 久久久国产影院| 538在线视频| 国产精品91久久| 91成人app| 国产精品视频在线免费观看| 日韩av不卡一区| 日韩免费电影一区二区三区| 天堂美国久久| 加勒比成人在线| 日韩国产精品久久久久久亚洲| 欧美成人福利在线观看| 国产精品一区二区在线观看不卡 | 亚洲欧美一区二区不卡| 欧美一级高潮片| 色国产精品一区在线观看| 一级特黄aaa大片| 国产一区二区你懂的| www.成人三级视频| 亚洲激情77| 亚洲最新免费视频| 亚洲国产专区校园欧美| 艹b视频在线观看| 国产ts人妖一区二区| 公侵犯人妻一区二区三区| 国产精品第一页第二页第三页| 国产一级片视频| 欧美亚洲自拍偷拍| 日本黄色不卡视频| 日韩中文字幕精品| 日本免费一区二区六区| 国产日韩欧美视频| 精品资源在线| 日韩中文在线字幕| 久久狠狠婷婷| 日韩高清一二三区| 国产精品美女久久久久久久久 | 91精品免费观看| 欧美日韩影视| 久久久国产视频| av一区在线播放| 精品综合久久| 欧美精品91| 日本中文字幕精品—区二区| 99久久伊人精品| 亚洲国产精品久| 欧美少妇性性性| 青青草在线免费视频| 国产69精品99久久久久久宅男| 日日夜夜一区| 日本一区二区三区四区高清视频 | 欧美日韩伦理片| 97色伦亚洲国产| 亚洲高清999| 热这里只有精品| 免费成人av在线| 无码人妻丰满熟妇啪啪欧美| 精品美女永久免费视频| 国内精品久久久久久久久久久 | 亚洲啊v在线| 欧美一区三区二区| 国产一区二区三区福利| 91国产高清在线| 白嫩白嫩国产精品| 亚洲国产一二三精品无码 | 狠色狠色综合久久| 人人干视频在线| 国产精品一区二区91| 中国美女黄色一级片| 91黄色小视频| 国产在线播放av| 国产成人短视频| 美女毛片一区二区三区四区| 男女视频网站在线观看| 成人午夜短视频| 国产亚洲精品女人久久久久久| 日韩亚洲欧美在线| 日韩专区av| av一区二区三区在线观看| 欧美69wwwcom| 欧美图片自拍偷拍| 亚洲电影在线免费观看| 色综合免费视频| 欧美在线观看视频| 亚洲区小说区| 成人性视频欧美一区二区三区| 久久久久国产一区二区三区四区 | 免费精品视频一区| 久久国产高清| 久操视频在线观看免费| 欧美日韩国产美女| 巨大荫蒂视频欧美大片| 91成人在线看| 亚洲激情偷拍| 黄瓜视频污在线观看| 欧美在线播放高清精品| 免费在线观看黄色网| 成人在线视频网址| 国产精品综合| 欧美成人短视频| 欧美一区二区视频网站| xxxx另类黑人| 欧美一进一出视频| 久久 天天综合| 免费在线黄色片| 日韩久久精品成人| 成人在线观看免费播放| 超碰97在线看| 不卡影院免费观看| 自拍偷拍校园春色| 欧美成人三级视频网站| 欧美wwwsss9999| 午夜免费福利视频在线观看| 亚洲乱码中文字幕| 亚洲欧洲精品视频| 国产日产欧美精品| 欧美久久一区| 天天躁日日躁aaaa视频| 91精品国产欧美一区二区成人| 精精国产xxx在线视频app| 亚洲精品成人三区| caoporen国产精品视频| 无码久久精品国产亚洲av影片| 久久亚洲精品中文字幕冲田杏梨| 国产精品久久久网站| 深夜黄色小视频| 亚洲不卡av一区二区三区| 亚洲精品承认| 久久精品五月婷婷| 国产麻豆日韩欧美久久| 精品人妻一区二区三区免费看| 久久视频免费在线播放| 国产精品嫩模av在线| 老司机av网站| 欧美日韩高清在线播放| 欧亚在线中文字幕免费| wwwjizzjizzcom|