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

高性能數(shù)據(jù)庫集群-分庫分表

數(shù)據(jù)庫 MySQL
上期我講了“讀寫分離”,讀寫分離分散了數(shù)據(jù)庫讀寫操作的壓力,但沒有分散存儲壓力,當(dāng)數(shù)據(jù)量達(dá)到千萬甚至上億條的時候,單臺數(shù)據(jù)庫服務(wù)器的存儲能力會成為系統(tǒng)的瓶頸。今天我來介紹常見的分散存儲的方法“分庫分表”,其中包括“分庫”和“分表”兩大類。

上期我講了“讀寫分離”,讀寫分離分散了數(shù)據(jù)庫讀寫操作的壓力,但沒有分散存儲壓力,當(dāng)數(shù)據(jù)量達(dá)到千萬甚至上億條的時候,單臺數(shù)據(jù)庫服務(wù)器的存儲能力會成為系統(tǒng)的瓶頸,主要體現(xiàn)在這幾個方面:

• 數(shù)據(jù)量太大,讀寫的性能會下降,即使有索引,索引也會變得很大,性能同樣會下降。

• 數(shù)據(jù)文件會變得很大,數(shù)據(jù)庫備份和恢復(fù)需要耗費(fèi)很長時間。

• 數(shù)據(jù)文件越大,極端情況下丟失數(shù)據(jù)的風(fēng)險(xiǎn)越高(例如,機(jī)房火災(zāi)導(dǎo)致數(shù)據(jù)庫主備機(jī)都發(fā)生故障)。

基于上述原因,單個數(shù)據(jù)庫服務(wù)器存儲的數(shù)據(jù)量不能太大,需要控制在一定的范圍內(nèi)。為了滿足業(yè)務(wù)數(shù)據(jù)存儲的需求,就需要將存儲分散到多臺數(shù)據(jù)庫服務(wù)器上。

今天我來介紹常見的分散存儲的方法“分庫分表”,其中包括“分庫”和“分表”兩大類。

業(yè)務(wù)分庫

業(yè)務(wù)分庫指的是按照業(yè)務(wù)模塊將數(shù)據(jù)分散到不同的數(shù)據(jù)庫服務(wù)器。例如,一個簡單的電商網(wǎng)站,包括用戶、商品、訂單三個業(yè)務(wù)模塊,我們可以將用戶數(shù)據(jù)、商品數(shù)據(jù)、訂單數(shù)據(jù)分開放到三臺不同的數(shù)據(jù)庫服務(wù)器上,而不是將所有數(shù)據(jù)都放在一臺數(shù)據(jù)庫服務(wù)器上。

高性能數(shù)據(jù)庫集群-分庫分表

 

雖然業(yè)務(wù)分庫能夠分散存儲和訪問壓力,但同時也帶來了新的問題,接下來我進(jìn)行詳細(xì)分析。

1.join 操作問題

業(yè)務(wù)分庫后,原本在同一個數(shù)據(jù)庫中的表分散到不同數(shù)據(jù)庫中,導(dǎo)致無法使用

SQL 的 join 查詢。

例如:“查詢購買了化妝品的用戶中女性用戶的列表”這個功能,雖然訂單數(shù)據(jù)中有用戶的 ID 信息,但是用戶的性別數(shù)據(jù)在用戶數(shù)據(jù)庫中,如果在同一個庫中,簡單的 join 查詢就能完成;但現(xiàn)在數(shù)據(jù)分散在兩個不同的數(shù)據(jù)庫中,無法做 join 查詢,只能采取先從訂單數(shù)據(jù)庫中查詢購買了化妝品的用戶 ID 列表,然后再到用戶數(shù)據(jù)庫中查詢這批用戶 ID 中的女性用戶列表,這樣實(shí)現(xiàn)就比簡單的 join 查詢要復(fù)雜一些。

2. 事務(wù)問題

原本在同一個數(shù)據(jù)庫中不同的表可以在同一個事務(wù)中修改,業(yè)務(wù)分庫后,表分散到不同的數(shù)據(jù)庫中,無法通過事務(wù)統(tǒng)一修改。雖然數(shù)據(jù)庫廠商提供了一些分布式事務(wù)的解決方案(例如,MySQL 的 XA),但性能實(shí)在太低,與高性能存儲的目標(biāo)是相違背的。例如,用戶下訂單的時候需要扣商品庫存,如果訂單數(shù)據(jù)和商品數(shù)據(jù)在同一個數(shù)據(jù)庫中,我們可以使用事務(wù)來保證扣減商品庫存和生成訂單的操作要么都成功要么都失敗,但分庫后就無法使用數(shù)據(jù)庫事務(wù)了,需要業(yè)務(wù)程序自己來模擬實(shí)現(xiàn)事務(wù)的功能。例如,先扣商品庫存,扣成功后生成訂單,如果因?yàn)橛唵螖?shù)據(jù)庫異常導(dǎo)致生成訂單失敗,業(yè)務(wù)程序又需要將商品庫存加上;而如果因?yàn)闃I(yè)務(wù)程序自己異常導(dǎo)致生成訂單失敗,則商品庫存就無法恢復(fù)了,需要人工通過日志等方式來手工修復(fù)庫存異常。

3. 成本問題

業(yè)務(wù)分庫同時也帶來了成本的代價,本來 1 臺服務(wù)器搞定的事情,現(xiàn)在要 3 臺,如果考慮備份,那就是 2 臺變成了 6 臺。

基于上述原因,對于小公司初創(chuàng)業(yè)務(wù),并不建議一開始就這樣拆分,主要有幾個原因:

• 初創(chuàng)業(yè)務(wù)存在很大的不確定性,業(yè)務(wù)不一定能發(fā)展起來,業(yè)務(wù)開始的時候并沒有真正的存儲和訪問壓力,業(yè)務(wù)分庫并不能為業(yè)務(wù)帶來價值。

• 業(yè)務(wù)分庫后,表之間的 join 查詢、數(shù)據(jù)庫事務(wù)無法簡單實(shí)現(xiàn)了。

• 業(yè)務(wù)分庫后,因?yàn)椴煌臄?shù)據(jù)要讀寫不同的數(shù)據(jù)庫,代碼中需要增加根據(jù)數(shù)據(jù)類型映射到不同數(shù)據(jù)庫的邏輯,增加了工作量。而業(yè)務(wù)初創(chuàng)期間最重要的是快速實(shí)現(xiàn)、快速驗(yàn)證,業(yè)務(wù)分庫會拖慢業(yè)務(wù)節(jié)奏。

有的架構(gòu)師可能會想:如果業(yè)務(wù)真的發(fā)展很快,豈不是很快就又要進(jìn)行業(yè)務(wù)分庫了?那為何不一開始就設(shè)計(jì)好呢?

其實(shí)這個問題很好回答,按照我前面提到的“架構(gòu)設(shè)計(jì)三原則”,簡單分析一下。

首先,這里的“如果”事實(shí)上發(fā)生的概率比較低,做 10 個業(yè)務(wù)有 1 個業(yè)務(wù)能活下去就很不錯了,更何況快速發(fā)展,和中彩票的概率差不多。如果我們每個業(yè)務(wù)上來就按照淘寶、微信的規(guī)模去做架構(gòu)設(shè)計(jì),不但會累死自己,還會害死業(yè)務(wù)。其次,如果業(yè)務(wù)真的發(fā)展很快,后面進(jìn)行業(yè)務(wù)分庫也不遲。因?yàn)闃I(yè)務(wù)發(fā)展好,相應(yīng)的資源投入就會加大,可以投入更多的人和更多的錢,那業(yè)務(wù)分庫帶來的代碼和業(yè)務(wù)復(fù)雜的問題就可以通過增加人來解決,成本問題也可以通過增加資金來解決。

第三,單臺數(shù)據(jù)庫服務(wù)器的性能其實(shí)也沒有想象的那么弱,一般來說,單臺數(shù)據(jù)庫服務(wù)器能夠支撐 10 萬用戶量量級的業(yè)務(wù),初創(chuàng)業(yè)務(wù)從 0 發(fā)展到 10 萬級用戶,并不是想象得那么快。

而對于業(yè)界成熟的大公司來說,由于已經(jīng)有了業(yè)務(wù)分庫的成熟解決方案,并且即使是嘗試性的新業(yè)務(wù),用戶規(guī)模也是海量的,這與前面提到的初創(chuàng)業(yè)務(wù)的小公司有本質(zhì)區(qū)別,因此最好在業(yè)務(wù)開始設(shè)計(jì)時就考慮業(yè)務(wù)分庫。例如,在淘寶上做一個新的業(yè)務(wù),由于已經(jīng)有成熟的數(shù)據(jù)庫解決方案,用戶量也很大,需要在一開始就設(shè)計(jì)業(yè)務(wù)分庫甚至接下來介紹的分表方案。

分表

將不同業(yè)務(wù)數(shù)據(jù)分散存儲到不同的數(shù)據(jù)庫服務(wù)器,能夠支撐百萬甚至千萬用戶規(guī)模的業(yè)務(wù),但如果業(yè)務(wù)繼續(xù)發(fā)展,同一業(yè)務(wù)的單表數(shù)據(jù)也會達(dá)到單臺數(shù)據(jù)庫服務(wù)器的處理瓶頸。例如,淘寶的幾億用戶數(shù)據(jù),如果全部存放在一臺數(shù)據(jù)庫服務(wù)器的一張表中,肯定是無法滿足性能要求的,此時就需要對單表數(shù)據(jù)進(jìn)行拆分。

單表數(shù)據(jù)拆分有兩種方式:垂直分表和水平分表。示意圖如下:

高性能數(shù)據(jù)庫集群-分庫分表

 

為了形象地理解垂直拆分和水平拆分的區(qū)別,可以想象你手里拿著一把刀,面對一個蛋糕切一刀:

• 從上往下切就是垂直切分,因?yàn)榈兜倪\(yùn)行軌跡與蛋糕是垂直的,這樣可以把蛋糕切成高度相等(面積可以相等也可以不相等)的兩部分,對應(yīng)到表的切分就是表記錄數(shù)相同但包含不同的列。例如,示意圖中的垂直切分,會把表切分為兩個表,一個表包含 ID、name、age、sex 列,

另外一個表包含 ID、nickname、description 列。

• 從左往右切就是水平切分,因?yàn)榈兜倪\(yùn)行軌跡與蛋糕是平行的,這樣可以把蛋糕切成面積相等(高度可以相等也可以不相等)的兩部分,對應(yīng)到表的切分就是表的列相同但包含不同的行數(shù)據(jù)。例如,示意圖中的水平切分,會把表分為兩個表,兩個表都包含 ID、name、age、sex、

nickname、description 列,但是一個表包含的是 ID 從 1 到 999999 的行數(shù)據(jù),另一個表包含的是 ID 從 1000000 到 9999999 的行數(shù)據(jù)。

上面這個示例比較簡單,只考慮了一次切分的情況,實(shí)際架構(gòu)設(shè)計(jì)過程中并不局限切分的次數(shù),可以切兩次,也可以切很多次,就像切蛋糕一樣,可以切很多刀。

單表進(jìn)行切分后,是否要將切分后的多個表分散在不同的數(shù)據(jù)庫服務(wù)器中,可以根據(jù)實(shí)際的切分效果來確定,并不強(qiáng)制要求單表切分為多表后一定要分散到不同數(shù)據(jù)庫中。原因在于單表切分為多表后,新的表即使在同一個數(shù)據(jù)庫服務(wù)器中,也可能帶來可觀的性能提升,如果性能能夠滿足業(yè)務(wù)要求,是可以不拆分到多臺數(shù)據(jù)庫服務(wù)器的,畢竟我們在上面業(yè)務(wù)分庫的內(nèi)容看到業(yè)務(wù)分庫也會引入很多復(fù)雜性的問題;如果單表拆分為多表后,單臺服務(wù)器依然無法滿足性能要求,那就不得不再次進(jìn)行業(yè)務(wù)分庫的設(shè)計(jì)了。

分表能夠有效地分散存儲壓力和帶來性能提升,但和分庫一樣,也會引入各種復(fù)雜性。

1. 垂直分表

垂直分表適合將表中某些不常用且占了大量空間的列拆分出去。例如,前面示意圖中的 nickname 和 description 字段,假設(shè)我們是一個婚戀網(wǎng)站,用戶在篩選其他用戶的時候,主要是用 age 和 sex 兩個字段進(jìn)行查詢,而

nickname 和 description 兩個字段主要用于展示,一般不會在業(yè)務(wù)查詢中用到。description 本身又比較長,因此我們可以將這兩個字段獨(dú)立到另外一張表中,這樣在查詢 age 和 sex 時,就能帶來一定的性能提升。

垂直分表引入的復(fù)雜性主要體現(xiàn)在表操作的數(shù)量要增加。例如,原來只要一次查詢就可以獲取 name、age、sex、nickname、description,現(xiàn)在需要兩次查

詢,一次查詢獲取 name、age、sex,另外一次查詢獲取 nickname、 description。

不過相比接下來要講的水平分表,這個復(fù)雜性就是小巫見大巫了。

2. 水平分表

水平分表適合表行數(shù)特別大的表,有的公司要求單表行數(shù)超過 5000 萬就必須進(jìn)行分表,這個數(shù)字可以作為參考,但并不是絕對標(biāo)準(zhǔn),關(guān)鍵還是要看表的訪問性能。對于一些比較復(fù)雜的表,可能超過 1000 萬就要分表了;而對于一些簡單的表,即使存儲數(shù)據(jù)超過 1 億行,也可以不分表。但不管怎樣,當(dāng)看到表的數(shù)據(jù)量達(dá)到千萬級別時,作為架構(gòu)師就要警覺起來,因?yàn)檫@很可能是架構(gòu)的性能瓶頸或者隱患。

水平分表相比垂直分表,會引入更多的復(fù)雜性,主要表現(xiàn)在下面幾個方面:

 路由

水平分表后,某條數(shù)據(jù)具體屬于哪個切分后的子表,需要增加路由算法進(jìn)行計(jì)算,這個算法會引入一定的復(fù)雜性。

常見的路由算法有:

范圍路由:選取有序的數(shù)據(jù)列(例如,整形、時間戳等)作為路由的條件,不同分段分散到不同的數(shù)據(jù)庫表中。以最常見的用戶 ID 為例,路由算法可以按照 1000000 的范圍大小進(jìn)行分段,1 ~ 999999 放到數(shù)據(jù)庫 1 的表中,

1000000 ~ 1999999 放到數(shù)據(jù)庫 2 的表中,以此類推。范圍路由設(shè)計(jì)的復(fù)雜點(diǎn)主要體現(xiàn)在分段大小的選取上,分段太小會導(dǎo)致切分后

子表數(shù)量過多,增加維護(hù)復(fù)雜度;分段太大可能會導(dǎo)致單表依然存在性能問題,一般建議分段大小在 100 萬至 2000 萬之間,具體需要根據(jù)業(yè)務(wù)選取合適的分段大小。

范圍路由的優(yōu)點(diǎn)是可以隨著數(shù)據(jù)的增加平滑地?cái)U(kuò)充新的表。例如,現(xiàn)在的用戶是 100 萬,如果增加到 1000 萬,只需要增加新的表就可以了,原有的數(shù)據(jù)不需要動。

范圍路由的一個比較隱含的缺點(diǎn)是分布不均勻,假如按照 1000 萬來進(jìn)行分

表,有可能某個分段實(shí)際存儲的數(shù)據(jù)量只有 1000 條,而另外一個分段實(shí)際存儲的數(shù)據(jù)量有 900 萬條。

Hash 路由:選取某個列(或者某幾個列組合也可以)的值進(jìn)行 Hash 運(yùn)算,然后根據(jù) Hash 結(jié)果分散到不同的數(shù)據(jù)庫表中。同樣以用戶 ID 為例,假如我們一開始就規(guī)劃了 10 個數(shù)據(jù)庫表,路由算法可以簡單地用 user_id % 10 的值來表示數(shù)據(jù)所屬的數(shù)據(jù)庫表編號,ID 為 985 的用戶放到編號為 5 的子表中,ID 為 10086 的用戶放到編號為 6 的字表中。

Hash 路由設(shè)計(jì)的復(fù)雜點(diǎn)主要體現(xiàn)在初始表數(shù)量的選取上,表數(shù)量太多維護(hù)比較麻煩,表數(shù)量太少又可能導(dǎo)致單表性能存在問題。而用了 Hash 路由后,增加字表數(shù)量是非常麻煩的,所有數(shù)據(jù)都要重分布。

Hash 路由的優(yōu)缺點(diǎn)和范圍路由基本相反,Hash 路由的優(yōu)點(diǎn)是表分布比較均勻,缺點(diǎn)是擴(kuò)充新的表很麻煩,所有數(shù)據(jù)都要重分布。

配置路由:配置路由就是路由表,用一張獨(dú)立的表來記錄路由信息。同樣以用

戶 ID 為例,我們新增一張 user_router 表,這個表包含 user_id 和 table_id 兩列,根據(jù) user_id 就可以查詢對應(yīng)的 table_id。

配置路由設(shè)計(jì)簡單,使用起來非常靈活,尤其是在擴(kuò)充表的時候,只需要遷移指定的數(shù)據(jù),然后修改路由表就可以了。配置路由的缺點(diǎn)就是必須多查詢一次,會影響整體性能;而且路由表本身如果太大(例如,幾億條數(shù)據(jù)),性能同樣可能成為瓶頸,如果我們再次將路由表分庫分表,則又面臨一個死循環(huán)式的路由算法選擇問題。

• join 操作

水平分表后,數(shù)據(jù)分散在多個表中,如果需要與其他表進(jìn)行 join 查詢,需要在業(yè)務(wù)代碼或者數(shù)據(jù)庫中間件中進(jìn)行多次 join 查詢,然后將結(jié)果合并。

• count() 操作

水平分表后,雖然物理上數(shù)據(jù)分散到多個表中,但某些業(yè)務(wù)邏輯上還是會將這些表當(dāng)作一個表來處理。例如,獲取記錄總數(shù)用于分頁或者展示,水平分表前用一個 count() 就能完成的操作,在分表后就沒那么簡單了。常見的處理方式有下面兩種:

count() 相加:具體做法是在業(yè)務(wù)代碼或者數(shù)據(jù)庫中間件中對每個表進(jìn)行

count() 操作,然后將結(jié)果相加。這種方式實(shí)現(xiàn)簡單,缺點(diǎn)就是性能比較低。例如,水平分表后切分為 20 張表,則要進(jìn)行 20 次 count(*) 操作,如果串行的話,可能需要幾秒鐘才能得到結(jié)果。

記錄數(shù)表:具體做法是新建一張表,假如表名為“記錄數(shù)表”,包含

table_name、row_count 兩個字段,每次插入或者刪除子表數(shù)據(jù)成功后,都更新“記錄數(shù)表”。

這種方式獲取表記錄數(shù)的性能要大大優(yōu)于 count() 相加的方式,因?yàn)橹恍枰淮魏唵尾樵兙涂梢垣@取數(shù)據(jù)。缺點(diǎn)是復(fù)雜度增加不少,對子表的操作要同步操作“記錄數(shù)表”,如果有一個業(yè)務(wù)邏輯遺漏了,數(shù)據(jù)就會不一致;且針對“記錄數(shù)表”的操作和針對子表的操作無法放在同一事務(wù)中進(jìn)行處理,異常的情況下會出現(xiàn)操作子表成功了而操作記錄數(shù)表失敗,同樣會導(dǎo)致數(shù)據(jù)不一致。

此外,記錄數(shù)表的方式也增加了數(shù)據(jù)庫的寫壓力,因?yàn)槊看吾槍ψ颖淼?insert 和 delete 操作都要 update 記錄數(shù)表,所以對于一些不要求記錄數(shù)實(shí)時保持精確的業(yè)務(wù),也可以通過后臺定時更新記錄數(shù)表。定時更新實(shí)際上就是“count() 相加”和“記錄數(shù)表”的結(jié)合,即定時通過 count() 相加計(jì)算表的記錄數(shù),然后更新記錄數(shù)表中的數(shù)據(jù)。

 order by 操作

水平分表后,數(shù)據(jù)分散到多個子表中,排序操作無法在數(shù)據(jù)庫中完成,只能由業(yè)務(wù)代碼或者數(shù)據(jù)庫中間件分別查詢每個子表中的數(shù)據(jù),然后匯總進(jìn)行排序。

實(shí)現(xiàn)方法

和數(shù)據(jù)庫讀寫分離類似,分庫分表具體的實(shí)現(xiàn)方式也是“程序代碼封裝”和“中間件封裝”,但實(shí)現(xiàn)會更復(fù)雜。讀寫分離實(shí)現(xiàn)時只要識別 SQL 操作是讀操作還是寫操作,通過簡單的判斷 SELECT、UPDATE、INSERT、DELETE 幾個關(guān)鍵字就可以做到,而分庫分表的實(shí)現(xiàn)除了要判斷操作類型外,還要判斷 SQL 中具體需要操作的表、操作函數(shù)(例如 count 函數(shù))、order by、group by 操作等,然后再根據(jù)不同的操作進(jìn)行不同的處理。例如 order by 操作,需要先從多個庫查詢到各個庫的數(shù)據(jù),然后再重新 order by 才能得到最終的結(jié)果。

小結(jié)

今天我為你講了高性能數(shù)據(jù)庫集群的分庫分表架構(gòu),包括業(yè)務(wù)分庫產(chǎn)生的問題和分表的兩種方式及其帶來的復(fù)雜度,希望對你有所幫助。

這就是今天的全部內(nèi)容,留一道思考題給你吧,你認(rèn)為什么時候引入分庫分表是合適的?是數(shù)據(jù)庫性能不夠的時候就開始分庫分表么?

責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2024-08-02 15:47:28

數(shù)據(jù)庫分庫分表

2019-01-16 14:00:54

數(shù)據(jù)庫分庫分表

2022-12-05 07:51:24

數(shù)據(jù)庫分庫分表讀寫分離

2022-06-15 07:32:24

數(shù)據(jù)庫分庫分表

2019-03-06 14:42:01

數(shù)據(jù)庫分庫分表

2021-04-01 05:40:53

分庫分表數(shù)據(jù)庫MySQL

2019-01-29 15:25:11

阿里巴巴數(shù)據(jù)庫分庫分表

2024-12-04 13:02:34

數(shù)據(jù)庫分庫分表

2019-01-30 09:53:58

數(shù)據(jù)庫性能分庫分表

2023-11-03 14:50:14

2019-08-16 10:19:01

NewSQL數(shù)據(jù)庫分庫分表

2018-05-29 08:39:26

DBA數(shù)據(jù)庫案例

2018-08-14 18:00:14

數(shù)據(jù)庫分庫分表表拆分

2023-08-11 08:59:49

分庫分表數(shù)據(jù)數(shù)據(jù)庫

2020-01-03 16:30:14

數(shù)據(jù)庫讀寫分離分庫

2022-06-04 15:28:42

微服務(wù)架構(gòu)編程語言

2021-07-28 15:44:52

Java開發(fā)數(shù)據(jù)庫

2015-03-13 19:34:41

2019-07-23 11:41:45

數(shù)據(jù)庫SQLDocker

2020-01-07 09:40:25

數(shù)據(jù)庫MySQLRedis
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

久热精品视频在线免费观看 | 日韩免费精品视频| 男人操女人动态图| a屁视频一区二区三区四区| 国产精品亲子伦对白| 92福利视频午夜1000合集在线观看| 久久久精品91| 精品香蕉视频| 精品卡一卡二卡三卡四在线| 久久国产色av免费观看| 中文国产字幕在线观看| 久久久久久久久99精品| 91精品国产高清久久久久久91裸体| 欧美一级视频免费观看| 国产精品国产三级国产在线观看| 亚洲国产天堂久久国产91| 污污的网站18| 黄色在线免费观看网站| 亚洲美女少妇撒尿| 久久久亚洲综合网站| 99久久久国产精品无码免费| 久久激情综合| 久久久久久欧美| www.99re6| 亚洲制服欧美另类| 亚洲第一页自拍| 国产精品嫩草影院8vv8| 黄色综合网址| 亚洲v精品v日韩v欧美v专区| 亚洲最新在线| 酒色婷婷桃色成人免费av网| 国产91色综合久久免费分享| 成人国产精品久久久| 91久久国产综合久久91| 亚洲日本国产| 欧美大片欧美激情性色a∨久久| 蜜桃av乱码一区二区三区| 久久久久观看| 精品久久久久久久久久久院品网 | 波多野结衣三级在线| 91成人在线看| 免费网站在线高清观看| 一本色道久久综合亚洲精品酒店 | 国产日本欧美在线观看| 波多野结衣mp4| 亚洲免费一区二区| 98精品国产自产在线观看| 久久午夜鲁丝片午夜精品| 欧美国产先锋| 欧美日韩电影在线观看| 波多野结衣不卡视频| 天天射成人网| 欧美超级免费视 在线| 色欲一区二区三区精品a片| 国产精品久久久久9999赢消| 最近2019中文字幕在线高清| 欧美a在线播放| 日本一区二区三区视频| 最新日韩中文字幕| www.99re6| 欧美精品一卡| 性欧美视频videos6一9| 日韩黄色一级大片| 午夜亚洲激情| 国产精品日韩在线观看| 在线免费av网| 国产精品一二一区| 国产精品美女诱惑| 天天干天天干天天干| 99re在线视频这里只有精品| 麻豆91蜜桃| 91在线导航| 亚洲色图视频网站| 成人av在线不卡| 在线能看的av网址| 欧美日韩国产一二三| 手机在线免费毛片| 精品自拍偷拍| 中日韩美女免费视频网址在线观看 | 天天摸天天舔天天操| 青娱乐自拍偷拍| 天天干天天摸天天操| 久久免费午夜影院| 在线观看成人一级片| 天堂av中文在线| 欧美视频精品一区| 亚洲综合婷婷久久| 最新国产一区二区| 亚洲欧美国产另类| 男人的午夜天堂| 尤物在线精品| 国产精品香蕉在线观看| a天堂视频在线| www国产精品av| 国产欧美综合一区| 国产美女高潮在线| 欧美日韩国产精品成人| 人妻激情偷乱频一区二区三区| 免费成人网www| 欧美大片在线影院| 欧美性猛交xxxx乱大交hd| 国内外成人在线视频| 玖玖玖精品中文字幕| 国产激情在线视频| 日韩欧美精品中文字幕| 欧美性受xxxx黒人xyx性爽| 欧美亚洲大陆| 欧美老女人性视频| wwwwww在线观看| av在线播放不卡| 亚洲精品偷拍视频| 我爱我色成人网| 亚洲成色777777女色窝| 一级黄色片日本| 巨乳诱惑日韩免费av| 国产精品久久国产三级国电话系列| 日本一区视频| 亚洲电影在线播放| 日韩成人av免费| 狠狠色狠狠色综合婷婷tag| 国产69精品久久久久9| 97成人在线观看| 国产日韩欧美一区二区三区乱码| 97干在线视频| 一区二区视频| 久久在线免费视频| 中文资源在线播放| 久久精品夜夜夜夜久久| 欧美色图色综合| 国产香蕉精品| 精品一区二区三区久久| 精品丝袜一区二区三区| 国产乡下妇女做爰| 国产精品自拍三区| 永久久久久久| 欧美成人毛片| 最近2019中文字幕在线高清| 特级西西444www高清大视频| wwww国产精品欧美| 波多野结衣乳巨码无在线| 亚洲高清在线一区| 色综合天天综合网国产成人网 | 蜜桃成人免费视频| 看黄在线观看| 日韩av一区二区在线观看| 国产一级理论片| 成人av午夜影院| 国产在线播放观看| 极品尤物一区| 秋霞av国产精品一区| 日中文字幕在线| 日韩欧美亚洲综合| 欧美福利第一页| 麻豆中文一区二区| 在线免费观看成人| 国产精品欧美一区二区三区不卡| 久久精品一区中文字幕| 国产精品无码AV| 亚洲精品老司机| 国产chinese中国hdxxxx| 在线国产日韩| 欧美日本亚洲| 欧美男男gaygay1069| 另类专区欧美制服同性| 亚洲精品一区二区三区蜜桃| 亚洲国产精品一区二区久久 | 97在线看免费观看视频在线观看| 香蕉久久一区二区三区| 色老头久久综合| 性色国产成人久久久精品| 国产一区二区成人久久免费影院| 欧美 国产 精品| 欧美日韩看看2015永久免费| 国产成人免费91av在线| 麻豆av免费在线观看| 日韩欧美国产精品一区| 天天爽夜夜爽夜夜爽精品| 国产欧美综合色| 免费看的av网站| 日韩天堂av| 久久视频一区| 精品国产乱码久久久久久丨区2区| 中文字幕不卡三区视频| 最近2019中文免费高清视频观看www99| 国产精品视频在线观看免费| 亚洲午夜影视影院在线观看| 丰满圆润老女人hd| 狠狠色丁香久久婷婷综合_中| 99热久久这里只有精品| 欧美日韩中字| 国产精品美女xx| 久久女人天堂| 91精品国产高清| 黄色网页在线播放| 亚洲美女性生活视频| 99热这里只有精| 91久久线看在观草草青青| 中文字幕人妻一区二| 久久青草国产手机看片福利盒子| 日韩欧美中文视频| 久久久一二三| 久艹在线免费观看| 99九九热只有国产精品| 欧美日韩精品免费看| 日韩中文字幕| 国产精品亚洲综合天堂夜夜| av资源中文在线| 久久综合久中文字幕青草| 青青草在线免费观看| 欧美不卡激情三级在线观看| 亚洲一区二区天堂| 日本精品视频一区二区| 国产在线欧美在线| 综合久久久久久| 中国特黄一级片| 久久综合久久综合亚洲| 老司机午夜免费福利| 国产毛片精品一区| 日韩欧美国产片| 日韩精品乱码免费| 日韩欧美一区二| 国产一区亚洲| 8x8x华人在线| 91精品国产自产在线观看永久∴| 日本免费高清一区| 日韩大片在线免费观看| 国产在线欧美日韩| 136福利精品导航| 91久久极品少妇xxxxⅹ软件| 香蕉久久一区| 成人黄色午夜影院| 久久青草视频| 91精品久久久久| 欧美高清你懂的| 成人免费在线视频网址| 精品国产美女a久久9999| 国产成人在线一区| 精品国产免费人成网站| 国产精品免费大片| 国产精品视频26uuu| 黄色综合网址| 国产99久久精品一区二区 夜夜躁日日躁 | 亚洲欧美日韩在线| 日本不卡一区视频| 国产女主播一区| 人成免费在线视频| 国产精品国产三级国产aⅴ原创| 日韩av片在线免费观看| 日韩在线精品强乱中文字幕| 欧美私人啪啪vps| 国产成人午夜高潮毛片| 色视频成人在线观看免| 免费高清在线观看免费| 亚洲精品国产日韩| 91免费国产精品| 好看的av在线不卡观看| 国产一二三区在线播放| 亚洲一级一区| 3d动漫一区二区三区| 亚洲一区二区三区四区五区午夜| av动漫在线观看| 日本sm残虐另类| 天天摸天天舔天天操| 国产一区二区三区国产| ass极品水嫩小美女ass| 成人在线综合网站| 国产又黄又粗又猛又爽的视频| 91老师片黄在线观看| 老头老太做爰xxx视频| 亚洲欧洲日韩在线| 黄色一级视频免费观看| 亚洲aⅴ怡春院| 婷婷激情五月综合| 欧美日韩三级一区| 国产99对白在线播放| 亚洲国产欧美一区| 九九热视频在线观看| 日日骚久久av| 美女精品视频| 国产精品都在这里| 欧美不卡在线观看| 狠狠色狠狠色综合人人| 欧美午夜精品一区二区三区电影| 国产美女视频免费| 在线综合欧美| 老司机午夜性大片| 岛国精品一区二区| 欧洲av一区二区三区| 亚洲另类在线视频| 中文字幕高清在线免费播放| 555夜色666亚洲国产免| 无码精品视频一区二区三区| 国产一区二区三区四| 欧美精品久久久久a| а√天堂中文在线资源8| 国产精品毛片a∨一区二区三区|国| gogo大尺度成人免费视频| 精品国产综合| 午夜欧美在线| 91av在线免费播放| 国产sm精品调教视频网站| 欧美丰满美乳xxⅹ高潮www| 一区二区三区高清在线| 自拍偷拍第八页| 亚洲黄色www网站| 免费av网站在线看| 欧美综合在线第二页| 亚洲图色一区二区三区| 亚洲精品一区二区三区av| 亚洲黄色免费| 中文字幕1234区| 国产亚洲短视频| 日本免费在线播放| 717成人午夜免费福利电影| 免费看黄色一级视频| 久久精品国产亚洲精品| 日韩一区二区三区在线免费观看 | 国产欧美视频在线观看| 久久国产在线观看| 欧美精品日日鲁夜夜添| 福利视频在线导航| 91精品国产乱码久久久久久蜜臀| 日韩亚洲精品在线观看| 人人妻人人澡人人爽精品欧美一区| 久久人人97超碰国产公开结果| 中文成人无字幕乱码精品区| 一区二区三区四区蜜桃| 国产精品日韩无码| 色偷偷偷亚洲综合网另类| 刘亦菲一区二区三区免费看| 精品高清视频| 影音先锋久久精品| 国产精品无码自拍| 一区二区三区日本| 国产不卡精品视频| 精品综合久久久久久97| 亚洲热av色在线播放| 亚洲一卡二卡三卡四卡无卡网站在线看| 老鸭窝毛片一区二区三区 | 国产高清免费观看| 久热99视频在线观看| 中文成人在线| a级黄色片网站| 国产一区二区在线免费观看| 91人妻一区二区三区蜜臀| 欧美高清视频一二三区| 午夜免费视频在线国产| 国产色婷婷国产综合在线理论片a| 日韩88av| 亚洲精品在线网址| 亚洲一区二区三区影院| 亚洲精品97久久中文字幕| 欧美极品少妇与黑人| 精品按摩偷拍| 一本大道熟女人妻中文字幕在线| 2014亚洲片线观看视频免费| 国产男人搡女人免费视频| 中文字幕一区二区精品| www.超碰在线观看| 亚洲视频狠狠| 色一情一区二区三区| 亚洲激情成人在线| 国产成人手机在线| 51精品在线观看| 欧美丝袜丝交足nylons172| 17c国产在线| 一区二区三区鲁丝不卡| 手机看片国产1024| 欧洲美女免费图片一区| 日本电影一区二区| 黄色a级三级三级三级| 亚洲一区二区欧美| 欧美日韩在线精品一区二区三区激情综| 日韩美女在线观看一区| 久久电影院7| 久久黄色一级视频| 性做久久久久久| 91se在线| 成人自拍爱视频| 日韩在线观看一区二区| 免费成人深夜夜行网站| 精品成人a区在线观看| 春暖花开亚洲一区二区三区| 亚洲精美视频| 暴力调教一区二区三区| 国产天堂第一区| 欧美日韩国产va另类| 亚洲丝袜啪啪| 亚洲天堂av一区二区三区| 欧美日韩视频在线| 好了av在线| 欧美日韩在线精品一区二区三区| 久久精品国产999大香线蕉| 日韩少妇高潮抽搐| 日韩在线中文字| 精品亚洲免a| 国产精品igao网网址不卡| 91国偷自产一区二区三区观看| a级片国产精品自在拍在线播放| 久久精品二区|