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

以MySQL為例,帶你從原理上理解那些所謂的數據庫軍規

數據庫 MySQL
數據庫永遠是應用最關鍵的一環,同時越到高并發階段,數據庫往往成為瓶頸,如果數據庫表和索引不在一開始就進行良好的設計,則后期數據庫橫向擴展,分庫分表都會遇到困難。

[[221820]]

本文是微服務實戰系列文章的第三篇,前兩篇鏈接如下:

數據庫永遠是應用最關鍵的一環,同時越到高并發階段,數據庫往往成為瓶頸,如果數據庫表和索引不在一開始就進行良好的設計,則后期數據庫橫向擴展,分庫分表都會遇到困難。

對于互聯網公司來講,一般都會使用MySQL數據庫。

一、數據庫的總體架構

我們首先來看MySQL數據的總體架構如下:

 

這是一張非常經典的MySQL的系統架構圖,通過這個圖可以看出MySQL各個部分的功能。

當客戶端連接數據庫的時候,首先面對的是連接池,用于管理用戶的連接,并會做一定的認證和鑒權。

連接了數據庫之后,客戶端會發送SQL語句,而SQL接口這個模塊就是來接受用戶的SQL語句的。

SQL語句往往需要符合嚴格的語法規則,因而要有語法解析器對語句進行語法解析,解析語法的原理如同編譯原理中的學到的那樣,從語句變成語法樹。

對于用戶屬于的查詢可以進行優化,從而可以選擇最快的查詢路徑,這就是優化器的作用。

為了加快查詢速度,會有查詢緩存模塊,如果查詢緩存有***的查詢結果,查詢語句就可以直接去查詢緩存中取數據。

上面的所有的組件都是數據庫服務層,接下來是數據庫引擎層,當前主流的數據庫引擎就是InnoDB。

對于數據庫有任何的修改,數據庫服務層會有binary log記錄下來,這是主備復制的基礎。

對于數據庫引擎層,一個著名的圖如下:

 

在存儲引擎層,也有緩存,也有日志,最終數據是落到盤上的。

存儲引擎層的緩存也是用于提高性能的,但是同數據庫服務層的緩存不同,數據庫服務層的緩存是查詢緩存,而數據庫引擎層的緩存讀寫都緩存。數據庫服務層的緩存是基于查詢邏輯的,而數據庫引擎引擎的緩存是基于數據頁的,可以說是物理的。

哪怕是數據的寫入僅僅寫入到了數據庫引擎層中的緩存,對于數據庫服務層來講,就算是已經持久化了,當然這個時候會造成緩存頁和硬盤上的頁的數據的不一致,這種不一致由數據庫引擎層的日志來保證完整性。

所以數據庫引擎層的日志和數據庫服務層的也不同,服務層的日志記錄的是一個個的修改邏輯,而引擎層的日志記錄的是緩存頁和數據頁的物理差異。

二、數據庫的工作流程

在收到一個查詢的時候,MySQL的架構中的各個組件是如此工作的:

客戶端同數據庫服務層建立TCP連接,連接管理模塊會建立連接,并請求一個連接線程。如果連接池中有空閑的連接線程,則分配給這個連接,如果沒有,在沒有超過***連接數的情況下,創建新的連接線程負責這個客戶端。

在真正的操作之前,還需要調用用戶模塊進行授權檢查,來驗證用戶是否有權限。通過后,方才提供服務,連接線程開始接收并處理來自客戶端的SQL語句。

連接線程接收到SQL語句之后,將語句交給SQL語句解析模塊進行語法分析和語義分析。

如果是一個查詢語句,則可以先看查詢緩存中是否有結果,如果有結果可以直接返回給客戶端。

如果查詢緩存中沒有結果,就需要真的查詢數據庫引擎層了,于是發給SQL優化器,進行查詢的優化。如果是表變更,則分別交給insert、update、delete、create、alter處理模塊進行處理。

接下來就是請求數據庫引擎層,打開表,如果需要的話獲取相應的鎖。

接下來的處理過程就到了數據庫引擎層,例如InnoDB。

在數據庫引擎層,要先查詢緩存頁中有沒有相應的數據,如果有則可以直接返回,如果沒有就要從磁盤上去讀取。

當在磁盤中找到相應的數據之后,則會加載到緩存中來,從而使得后面的查詢更加高效,由于內存有限,多采用變通的LRU表來管理緩存頁,保證緩存的都是經常訪問的數據。

獲取數據后返回給客戶端,關閉連接,釋放連接線程,過程結束。

三、數據庫索引的原理

在整個過程中,最容易稱為瓶頸點的是數據的讀寫,往往意味著要順序或者隨機讀寫磁盤,而讀寫磁盤的速度往往是比較慢的。

如果加快這個過程呢?相信大家都猜到了就是建立索引。

為什么索引能夠加快這個過程呢?

相信大家都逛過美食城,里面眾多家餐館琳瑯滿目,如果你不著急呢,肚子不餓,對搜索的性能沒有要求,就可以在商場里面慢慢逛,逛一家看一家,知道找到自己想吃的餐館。但是當你餓了,或者你們約好了餐館,你一定想直奔那個餐館,這個時候,你往往會去看樓層的索引圖,快速的查找你目標餐館的位置,找到后,直奔主題,就會大大節約時間,這就是索引的作用。

所以索引就是通過值,快速的找到它的位置,從而可以快速的訪問。

索引的另外一個作用就是不用真正的查看數據,就能夠做一些判斷,例如商場里面有沒有某個餐館,你看一下索引就知道了,不必真的到商場里面逛一圈,再如找出所有的川菜館,也是只要看索引就可以了,不用一家一家川菜館跑。

那么在MySQL中,索引是如何工作的呢?

MySQL的索引結構,往往是一棵B+樹。

一棵M階B+樹具有如下的性質:

  1. 節點分索引節點和數據節點。索引節點相當于B樹的內部節點,所有的索引節點組成一棵B樹,具有B樹的所有的特性。在索引節點中,存放著Key和指針,并不存放具體的元素。數據節點相當與B樹的外部節點,B樹的外部節點為空,在B+樹中被利用了起來,用于存放真正的數據元素,里面包含了Key和元素的其他信息,但是沒有指針。
  2. 整棵索引節點組成的B樹僅僅用來查找具有某個Key的數據元素位于哪個外部節點。在索引節點中找到了Key,事情沒有結束,要繼續找到數據節點,然后將數據節點中的元素讀出來,或者二分查找,或者順序掃描來尋找真正的數據元素。
  3. M這個階數僅僅用來控制索引節點部分的度,至于每個數據節點包含多少元素,與M無關。
  4. 另外有一個鏈表,將所有的數據節點串起來,可以順序訪問。

這個定義的比較抽象,我們來看一個具體的例子。

從圖中我們可以看出,這是一個3階B+樹,而一個外部數據節點最多包含5項。如果插入的數據在數據節點,如果不引起分裂和合并,則索引節點組成的B樹就不會變。

如果在71到75的外部節點插入一項76,則引起分裂,71、72、73成為一個數據節點,74、75、76成為一個數據節點,而對于索引節點來講相當于插入一個Key為74的過程。

如果在41到43的外部節點中刪除43,則引起合并,41、42、61、62、63合并成一個節點,對于索引節點來講,相當于刪除Key為60的過程。

查找的時候,由于B+樹層高很小,所以能夠比較快速的定位,例如我們要查找值62,在根節點發現大于40則訪問右面,小于70則訪問左面,大于60則訪問右面,在葉子節點的第二個,就找到了62,成功定位。

在MySQL的InnoDB中,有兩種類型的B+樹索引,一種稱為聚簇索引,一種稱為二級索引。

聚簇索引的葉子節點就是數據節點,往往是主鍵作為聚簇索引,二級索引的葉子節點存放的是KEY字段加主鍵值。因而通過二級索引訪問數據,要訪問兩次索引。

還有一種索引的形式稱為組合索引,或者復合索引,可以在多個列上建立索引。

這種索引的排序規則為,先比較***列,在***列相等的情況下,比較第二列,以此類推。

四、數據庫索引的優缺點

數據庫索引的優勢最明顯的就是減少I/O,下面分析幾種場景。

對于=條件的字段,可以直接通過查找B+樹的方式,通過很少的硬盤讀取次數(相當于B+樹層高),就能夠到達葉子節點,然后直接定位到數據的位置。

對于范圍的字段,由于B+樹里面都是排好序的,范圍可以很快的通過樹進行定位。

同理對于orderby、group by、distinct/max、min,由于B+樹是排好序的,也是能夠很快的得到結果的。

還有一個常見的場景稱為索引覆蓋數據。例如A, B兩個字段作為條件字段,常出現A=a AND B=b,同時select C、D時候,往往會建聯合索引(A、B),是一個二級索引,所以搜索的時候,通過二級索引的B+樹能夠很快的找到相應的葉子節點和記錄,但是記錄中有的是聚簇索引的ID,所以還需要查找一次聚簇索引的B+樹,找到真正的表中的記錄,然后在記錄中,將C、D讀取出來。如果建立聯合索引的時候為(A、B、C、D),則在二級索引的B+樹中就有了所有的數據,可以直接返回了,減少了一次搜索樹的過程。

當然索引肯定是有代價的,天下沒有免費的午餐。

索引帶來的好處多是讀的效率的提高,而索引帶來的代價就是寫的效率的降低。

插入和修改數據,都有可能意味著索引的改變。

插入的時候,往往會在主鍵上建設聚簇索引,因而主鍵***使用自增長,這樣插入的數據就總是在***,而且是順序的,效率比較高。主鍵不要使用UUID,這樣順序比較隨機,會帶來隨機的寫入,效率比較差。主鍵不要使用和業務有關,因為與業務相關意味著會被更新,將面臨著一次刪除和重新插入,效率會比較差。

通過上面對于B+樹的原理的介紹,我們可以看出B+樹的分裂代價還是比較大的,而分裂往往就產生于插入的過程中。

而對于數據的修改,則基本相當于刪除再插入,代價也比較大。

對于一些字符串的列的二級索引,往往會造成隨機的寫入和讀取,對I/O的壓力也比較大。

五、解讀數據庫軍規背后的原理

了解了這兩種索引的原理,我們就能夠解釋為什么很多所謂的數據庫的軍規長這個樣子了。下面我們來一一解釋。

什么情況下應該使用組合索引而非單獨索引呢?

假設有條件語句A=a AND B=b,如果A和B是兩個單獨的索引,在AND條件下只有一個索引起作用,對于B則要逐個判斷,而如果使用組合索引(A、B),只要遍歷一棵樹就可以了,大大增加了效率。但是對于A=a OR B=b,由于是或的關系,因而組合索引是不起作用的,因而可以使用單獨索引,這個時候,兩個索引可以同時起作用。

為什么索引要有區分度,組合索引中應該講有區分度的放在前面?

如果沒有區分度,例如用性別,相當于把整個大表分成兩部分,查找數據還是需要遍歷半個表才能找到,使得索引失去了意義。 

如果有組合索引,還需要單列索引嗎?

如果組合索引是(A、B),則對于條件A=a,是可以用上這個組合索引的,因為組合索引是先按照***列進行排序的,所以沒必要對于A單獨建立一個索引,但是對于B=b就用不上了,因為只有在***列相同的情況下,才比較第二列,因而第二列相同的,可以分布在不同的節點上,沒辦法快速定位。

索引是越多越好嗎?

當然不是,只有在必要的地方添加索引,索引不但會使得插入和修改的效率降低,而且在查詢的時候,有一個查詢優化器,太多的索引會讓優化器困惑,可能沒有辦法找到正確的查詢路徑,從而選擇了慢的索引。

為什么要使用自增主鍵?

因為字符串主鍵和隨機主鍵會使得數據隨機插入,效率比較差,主鍵應該少更新,避免B+樹和頻繁合并和分裂。

為什么盡量不使用NULL?

NULL在B+樹里面比較難以處理,往往需要特殊的邏輯進行處理,反而降低了效率。

為什么不要在更新頻繁的字段上建立索引?

更新一個字段意味著相應的索引也要更新,更新往往意味著刪除然后再插入,索引本來是一種事先在寫的階段形成一定的數據結構,從而使得在讀的階段效率較高的方式,但是如果一個字段是寫多讀少,則不建議使用索引。

為什么在查詢條件里面不要使用函數?

例如ID+1=10這種條件,索引是事先寫入的時候生成好的,ID+1這種操作在查詢階段,索引無能為例,沒辦法把所有的索引都先做一個計算,然后再比較吧,代價太大了,因而應該使用ID=10-1。

為什么不要使用NOT等負向查詢條件?

你可以想象一下,對于一棵B+樹,跟節點是40,如果你的條件是等于20,就去左面查,你的條件等于50,就去右面查,但是你的條件是不等于66,索引應該咋辦?還不是遍歷一遍才知道。

為什么模糊查詢不要以通配符開頭?

對于一棵B+樹來講,如果根是字符def,如果通配符在后面,例如abc%,則應該搜索左面,例如efg%,則應該搜索右面,如果通配符在前面%abc,則不知道應該走哪一面,還是都掃描一遍吧。

為什么OR要改成IN,或者使用Union?

OR查詢條件的優化往往比較難找到***的路徑,尤其是OR的條件比較多的時候,尤其如此,對于同一個字段,使用IN就好一些,數據庫會對IN里面的條件進行排序,并統一通過二分搜索的方法處理。對于不同的字段,使用Union,則可以讓每一個子查詢都使用索引。

為什么數據類型應該盡量小,常用整型來代替字符型,長字符類型可以考慮使用前綴索引?

因為數據庫是按照頁存放的,每一頁的大小是一樣的,如果數據類型比較大,則頁數會比較多,每一頁放的數據會比較少,樹的高度會比較高,因而搜索數據要讀取的I/O數目會比較多,插入的時候節點也容易分裂,效率會降低。使用整型來代替字符型多是這個考慮,整型對于索引有更高的效率,例如IP地址等。如果有長字符類型需要使用索引進行查詢,為了不要使得索引太大,可以考慮將字段的前綴進行索引,而非整個字段。

六、查詢優化的方法論

要找到需要優化的SQL語句,首先要收集有問題的SQL語句。

MySQL 數據庫提供了慢SQL日志功能,通過參數slow_query_log,獲取執行時間超過一定閾值的SQL語錄列表。

沒有使用索引的SQL語句,可以通過long_queries_not_using_indexes參數開啟。

min_examined_row_limit,掃描記錄數大于該值的SQL語句才會被記入慢SQL日志。

找到有問題的語句,接下來就是通過explainSQL,獲取SQL的執行計劃,是否通過索引掃描記錄,可以通過創建索引來優化執行效率。是否掃描記錄數過多。是否持鎖時間過長,是否存在鎖沖突。返回的記錄數是否較多。

接下來可以定制化的優化。沒有被索引覆蓋的過濾條件涉及的字段,在區分度較大的字段上創建索引,如果涉及多個字段,盡量創建聯合索引。

掃描記錄數非常多,返回記錄數不多,區分度較差,重新評估SQL語句涉及的字段,選擇區分度高的多個字段創建索引。

掃描記錄數非常多,返回記錄數也非常多,過濾條件不強,增加SQL過濾條件

schema_redundant_indexes查看有哪些冗余索引。 

如果多個索引涉及字段順序一致,則可以組成一個聯合索引schema_unused_indexes查看哪些索引從沒有被使用。

七、讀寫分離的原理

數據庫往往寫少讀多,所以性能優化的***步就是讀寫分離。

主從復制基于主節點上的服務層的日志實現的,而從節點上有一個IO線程讀取這個日志,然后寫入本地。另有一個線程從本地日志讀取后在從節點重新執行。

如圖是主從異步復制的流程圖。在主實例寫入引擎后就返回成功,然后將事件發給從實例,在從實例上執行。這種同步方式速度較快,但是在主掛了的時候,如果還沒有復制,則可能存在數據丟失問題。

數據庫同步復制也不同,是當從節點落盤后再返回客戶端,當然這樣會使得性能有所降低,網易數據庫團隊是通過組提交,并行復制等技術將性能提上來。

有了主從復制,在數據庫DAO層可以設置讀寫分離策略,也有通過數據庫中間件做這個事情的。 

其實數據庫日志還有很多其他用處,如使用Canal(阿里巴巴開源項目:基于MySQL數據庫Binlog的增量訂閱&消費)訂閱數據庫的Binlog,可以用于更新緩存等。 

責任編輯:龐桂玉 來源: Docker
相關推薦

2011-08-04 09:57:03

dbmonsterMySQL

2017-02-17 09:57:52

2023-06-26 08:43:57

OracleTRACE葉節點

2021-07-09 13:58:16

MySQL數據庫運維

2024-03-04 08:18:55

MySQ數據庫.NET

2023-07-17 10:45:03

向量數據庫NumPy

2016-12-20 12:34:46

存儲MySQL流程

2010-08-10 09:19:45

SNSMySQL

2020-08-31 10:48:11

MySQL數據庫數據庫技巧

2018-09-17 16:30:24

數據庫MySQL小技巧

2022-06-20 05:40:25

數據庫MySQL查詢

2010-04-22 12:56:48

Oracle數據庫

2017-02-16 09:42:00

數據庫58到家存儲

2017-02-16 13:46:27

可視化工具數據庫

2025-09-11 01:55:00

2018-04-18 17:08:45

2021-12-13 22:59:23

MySQL數據庫SQL

2020-02-02 13:59:59

MySQL數據庫線程

2010-06-07 13:30:15

點贊
收藏

51CTO技術棧公眾號

亚洲精品一区二区在线看| aa视频在线观看| 精品一区二区免费在线观看| 欧美精品亚州精品| 在线免费观看日韩av| 丰满少妇一区| 亚洲高清免费一级二级三级| 日本中文不卡| 亚洲免费一级片| 欧美aaa在线| 国内精品视频久久| 最新日韩免费视频| 日韩激情毛片| 欧美一区二区三区视频在线观看| 欧美一级在线看| 午夜视频成人| 91麻豆swag| 91福利入口| 中国a一片一级一片| 激情综合在线| 久久天天躁狠狠躁夜夜躁| 中日韩精品一区二区三区| 欧美二区观看| 欧美日韩国产一区二区三区地区| 国产毛片视频网站| av在线播放观看| 中文天堂在线一区| 欧美动漫一区二区| 欧美特级特黄aaaaaa在线看| 久久99久久精品| 国产成人avxxxxx在线看| 麻豆一区产品精品蜜桃的特点| 超碰成人久久| 亚洲色图国产精品| 好吊日免费视频| 精品综合久久88少妇激情| 欧美日韩高清一区二区| 天天爽人人爽夜夜爽| 中文字幕21页在线看| 亚洲成人av资源| 欧美久久久久久久久久久久久久| 黄色网址在线免费观看| 中文文精品字幕一区二区| 欧美一区二区在线视频观看| 色资源在线观看| 国产资源在线一区| 国产在线播放91| 一级黄色片视频| 美女一区二区视频| 国产噜噜噜噜久久久久久久久| 国产性生活视频| 久久久xxx| 国产精品久久久久久av福利软件| 激情视频网站在线观看| 亚洲影视在线| 国产成人精品在线| 国产一级精品毛片| 蜜桃久久av一区| 国产精品一区久久| 91色在线播放| 国产精品原创巨作av| 96pao国产成视频永久免费| 99久久精品免费看国产交换| 国产精品羞羞答答xxdd| eeuss一区二区三区| 亚洲第一页视频| 成人91在线观看| 免费在线观看91| 成人影视在线播放| 国产精品福利一区| 精品免费久久久久久久| 成年网站在线视频网站| 欧美色另类天堂2015| 精品免费国产一区二区| 久久亚洲精品中文字幕| 欧美一区二区三区不卡| 中文字幕在线视频播放| 综合色就爱涩涩涩综合婷婷| 中文字幕日韩精品在线| 国模无码国产精品视频| 伊人激情综合| 国产精品日韩在线播放| av手机免费看| 91小视频在线免费看| 亚洲看片网站| 欧美巨大xxxx做受沙滩| 色婷婷精品大在线视频| 一区二区三区四区毛片| 9l视频自拍九色9l视频成人| 亚洲剧情一区二区| 99成人在线观看| 韩日成人av| 国产精品美女999| 精品国产99久久久久久宅男i| 不卡大黄网站免费看| 亚洲国产精品毛片| 国产嫩草在线视频| 欧美日韩国产区一| 中文字幕 亚洲一区| 国产一卡不卡| 国内精久久久久久久久久人| 久草热在线观看| 成人国产亚洲欧美成人综合网| 日本一区二区三区www| 羞羞的视频在线观看| 在线一区二区三区四区| 中文字幕制服丝袜| 日韩精品水蜜桃| 欧美亚洲国产日本| xxxx国产精品| 国产精品久久久久久亚洲毛片| 欧美一级视频免费看| 日韩黄色碟片| 亚洲色图国产精品| 欧美福利视频一区二区| 国模一区二区三区白浆 | 91麻豆精品| 亚洲免费av网址| 久久久久99精品| 九色|91porny| 日本成人黄色免费看| 菠萝蜜视频在线观看www入口| 欧美日韩在线三区| 日韩乱码人妻无码中文字幕久久| 亚洲午夜精品久久久久久app| 国产精品久久久久久久久久小说| 天天干视频在线观看| 一级精品视频在线观看宜春院| 免费一区二区三区在线观看| 一区二区美女| 欧美一级视频免费在线观看| 亚洲高清视频在线播放| 亚洲情趣在线观看| 日本免费色视频| 日韩中文首页| 国产日韩欧美夫妻视频在线观看| 国产香蕉在线| 在线观看视频欧美| 亚洲第一香蕉网| 在线亚洲自拍| 久久99久久精品国产| heyzo高清在线| 555夜色666亚洲国产免| 91av手机在线| 韩国av一区二区三区四区| 亚洲精品tv久久久久久久久| 国产成人精品一区二区三区在线 | 国产日韩欧美亚洲一区| 羞羞视频在线观看不卡| 欧美刺激午夜性久久久久久久| 91日韩中文字幕| 国产精品羞羞答答xxdd| 日韩在线观看a| 噜噜噜天天躁狠狠躁夜夜精品 | 中文字幕高清在线免费播放| 久久久不卡影院| 国产一级特黄a大片免费| 区一区二视频| 成人在线小视频| 污视频在线看网站| 亚洲成人教育av| 五月天激情国产综合婷婷婷| 久久天堂av综合合色蜜桃网| 狠狠操精品视频| 大片网站久久| 亚洲一区二区三区四区在线播放 | 五月综合激情日本mⅴ| 国产精品无码电影| 久久久久久自在自线| 亚洲欧美99| 麻豆久久一区| 97高清免费视频| 国内在线免费高清视频| 欧美日本精品一区二区三区| 精品欧美一区二区久久久久| 成人国产精品免费观看视频| wwwxxx黄色片| 99久久久久| 国产日韩一区二区| 99re66热这里只有精品4| 久久精品国产v日韩v亚洲| 亚洲成熟女性毛茸茸| 黑人巨大精品欧美一区二区一视频| 一道本在线观看| 国产一区91精品张津瑜| 一女被多男玩喷潮视频| 日韩激情免费| 国产私拍一区| 免费成人高清在线视频| 欧美高清在线视频观看不卡| 男人天堂亚洲二区| 91精品国产综合久久福利| 欧美一级视频免费观看| 国产精品高潮久久久久无| 亚洲男人在线天堂| 精品在线播放免费| 精品国产一二三四区| 91亚洲自偷观看高清| 精品一区二区三区自拍图片区| 日韩电影精品| 2019av中文字幕| 麻豆传媒免费在线观看| 日韩电影在线观看永久视频免费网站| 中文字幕 人妻熟女| 五月综合激情网| 欧美日韩综合一区二区| 中文字幕精品三区| 亚洲一区二区乱码| 国产一区二区三区观看| 黄色一级二级三级| 亚洲国产国产亚洲一二三| 尤物国产精品| 精品国产乱码久久久久久果冻传媒| 成人区精品一区二区| 97欧美成人| 欧美主播福利视频| 国内高清免费在线视频| 欧美成aaa人片免费看| av中文字幕在线| 亚洲精品一区二区在线| 熟妇人妻av无码一区二区三区| 欧美日韩国产中文| 中文在线观看免费高清| 欧美三级免费观看| 日韩成人在线免费视频| 亚洲精品高清视频在线观看| 亚洲综合久久av一区二区三区| 久久久91精品国产一区二区三区| 这里只有精品在线观看视频| 国产黄色91视频| 在线观看免费不卡av| 喷白浆一区二区| 熟妇人妻va精品中文字幕| 国产精品普通话对白| 99在线精品免费视频| 亚洲私人影院| 加勒比成人在线| 欧美午夜a级限制福利片| 欧美黄网在线观看| 综合激情一区| 色一情一乱一乱一区91| 欧美国内亚洲| 日韩欧美一级在线| 午夜亚洲福利| av在线观看地址| 亚洲国产高清视频| 国产二级片在线观看| 国产午夜精品一区二区三区欧美 | 国产无精乱码一区二区三区| 亚洲一区二区四区蜜桃| 久久免费小视频| 亚洲一区二区三区爽爽爽爽爽 | 黄网站app在线观看| 久久精品一偷一偷国产| 97超碰资源站在线观看| 久久亚洲精品网站| 女子免费在线观看视频www| 欧美激情一区二区三区在线视频观看| 免费看电影在线| 97精品久久久| 欧美xxx视频| 国产精品欧美日韩久久| 中文字幕成人| 高清国产在线一区| 成人在线视频观看| 99porn视频在线| 欧美重口另类| 天天爽天天狠久久久| 久久中文字幕av一区二区不卡| 特级西西444| av成人毛片| 91福利国产成人精品播放| 国产在线播精品第三| wwwxxxx在线观看| www成人在线观看| 日日操免费视频| 亚洲一区二区三区美女| 中文字幕第四页| 91精品麻豆日日躁夜夜躁| 免费av一级片| 中文国产亚洲喷潮| 激情网站在线| 国产精品久久久av| 综合视频一区| 天堂一区二区三区| 欧美日韩一区自拍| 99草草国产熟女视频在线| 国产中文一区二区三区| 亚洲av网址在线| 136国产福利精品导航| 日韩av综合在线| 欧美女孩性生活视频| 四虎精品成人免费网站| 91日韩视频| 久久久人成影片一区二区三区观看 | 一区二区日韩在线观看| 亚洲成人黄色在线| 免费a在线看| 日本韩国在线不卡| 亚洲精品不卡在线观看| 日韩欧美精品一区二区| 激情欧美日韩| 亚洲一区二区中文字幕在线观看| 91亚洲精品久久久蜜桃| 在线免费观看亚洲视频| 91国产成人在线| 国产小视频一区| 精品国内亚洲在观看18黄| 电影一区二区三区| 国产精品国色综合久久| 99久久www免费| 妓院一钑片免看黄大片| 成人午夜私人影院| 午夜国产福利一区二区| 欧美婷婷六月丁香综合色| 少妇av在线播放| 欧美剧在线观看| 成人亚洲免费| 日韩欧美第二区在线观看| 一区二区日本视频| av在线天堂网| 亚洲免费高清视频在线| 一级片视频网站| 亚洲新中文字幕| 欧美18av| 欧美精品一区二区三区久久| 亚洲另类自拍| 香蕉视频污视频| 亚洲曰韩产成在线| 国产ts变态重口人妖hd| 久久久国产成人精品| 激情久久一区二区| 午夜精品亚洲一区二区三区嫩草| 丝袜美腿亚洲一区| av网站免费在线播放| 精品久久久久久| 污污网站在线免费观看| 午夜精品久久久久久久久久久久 | 日韩在线观看第一页| 精品福利av导航| av在线理伦电影| 国产美女99p| 亚洲作爱视频| 91精品国产自产| 色中色一区二区| 国产黄色在线| 国产精品一区二区三区在线播放 | 久久激情视频久久| 国产一区二区| 欧美日韩中文字幕在线播放 | 欧美日韩国产高清一区二区三区 | 18性欧美xxxⅹ性满足| 亚洲国产合集| 国产av人人夜夜澡人人爽| 中文字幕va一区二区三区| 一级全黄裸体免费视频| 欧美成人在线免费视频| 99精品中文字幕在线不卡| 亚洲熟妇国产熟妇肥婆| 久久久国产精品不卡| 一二三四区在线| 九九视频这里只有精品| 国产精品对白| 国产a视频免费观看| 国产精品萝li| 狠狠人妻久久久久久综合麻豆| 91精品国产91久久久久| 韩日一区二区三区| 粉色视频免费看| 亚洲成av人片| 国产日本在线视频| 97久草视频| 亚洲综合国产| 亚洲综合久久av一区二区三区| 欧美大片日本大片免费观看| 成人av观看| 中文字幕99| 97se狠狠狠综合亚洲狠狠| 日本丰满少妇做爰爽爽| 免费不卡欧美自拍视频| 日韩大胆成人| 国产色视频在线播放| 亚洲国产日韩综合久久精品| 国产在线观看网站| 国产高清精品一区二区三区| 日韩中文字幕区一区有砖一区| 中国毛片直接看| 精品无人区乱码1区2区3区在线| 久久99国产精品二区高清软件| 97干在线视频| 中文成人av在线| 香蕉视频911| 亚洲最大福利网站| 日韩经典中文字幕一区| 免费一级片视频| 夜夜躁日日躁狠狠久久88av| 99这里只有精品视频| 黄色手机在线视频| 精品欧美aⅴ在线网站| 国产一二区在线观看|