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

MySQL性能優(yōu)化二十大實戰(zhàn)經(jīng)驗

數(shù)據(jù)庫 MySQL
本文將為大家介紹的是二十條MySQL性能優(yōu)化的經(jīng)驗,這些小經(jīng)驗有助于大家更好的使用MySQL進(jìn)行WEB開發(fā)。

今天,數(shù)據(jù)庫的操作越來越成為整個應(yīng)用的性能瓶頸了,這點對于Web應(yīng)用尤其明顯。關(guān)于數(shù)據(jù)庫的性能,這并不只是DBA才需要擔(dān)心的事,而這更是我們程序員需要去關(guān)注的事情。當(dāng)我們?nèi)ピO(shè)計數(shù)據(jù)庫表結(jié)構(gòu),對操作數(shù)據(jù)庫時(尤其是查表時的SQL語句),我們都需要注意數(shù)據(jù)操作的性能。這里,我們不會講過多的SQL語句的優(yōu)化,而只是針對MySQL這一Web應(yīng)用最多的數(shù)據(jù)庫。希望下面的這些優(yōu)化技巧對你有用。

1. 為查詢緩存優(yōu)化你的查詢

大多數(shù)的MySQL服務(wù)器都開啟了查詢緩存。這是提高性最有效的方法之一,而且這是被MySQL的數(shù)據(jù)庫引擎處理的。當(dāng)有很多相同的查詢被執(zhí)行了多次的時候,這些查詢結(jié)果會被放到一個緩存中,這樣,后續(xù)的相同的查詢就不用操作表而直接訪問緩存結(jié)果了。

這里最主要的問題是,對于程序員來說,這個事情是很容易被忽略的。因為,我們某些查詢語句會讓MySQL不使用緩存。請看下面的示例:

實例

上面兩條SQL語句的差別就是 CURDATE() ,MySQL的查詢緩存對這個函數(shù)不起作用。所以,像 NOW() 和 RAND() 或是其它的諸如此類的SQL函數(shù)都不會開啟查詢緩存,因為這些函數(shù)的返回是會不定的易變的。所以,你所需要的就是用一個變量來代替MySQL的函數(shù),從而開啟緩存。

2. EXPLAIN 你的 SELECT 查詢

使用 EXPLAIN 關(guān)鍵字可以讓你知道MySQL是如何處理你的SQL語句的。這可以幫你分析你的查詢語句或是表結(jié)構(gòu)的性能瓶頸。

EXPLAIN 的查詢結(jié)果還會告訴你你的索引主鍵被如何利用的,你的數(shù)據(jù)表是如何被搜索和排序的……等等,等等。

挑一個你的SELECT語句(推薦挑選那個最復(fù)雜的,有多表聯(lián)接的),把關(guān)鍵字EXPLAIN加到前面。你可以使用phpmyadmin來做這個事。然后,你會看到一張表格。下面的這個示例中,我們忘記加上了group_id索引,并且有表聯(lián)接:

表連接

我們可以看到,前一個結(jié)果顯示搜索了 7883 行,而后一個只是搜索了兩個表的 9 和 16 行。查看rows列可以讓我們找到潛在的性能問題。

3. 當(dāng)只要一行數(shù)據(jù)時使用 LIMIT 1

當(dāng)你查詢表的有些時候,你已經(jīng)知道結(jié)果只會有一條結(jié)果,但因為你可能需要去fetch游標(biāo),或是你也許會去檢查返回的記錄數(shù)。

在這種情況下,加上 LIMIT 1 可以增加性能。這樣一樣,MySQL數(shù)據(jù)庫引擎會在找到一條數(shù)據(jù)后停止搜索,而不是繼續(xù)往后查少下一條符合記錄的數(shù)據(jù)。

下面的示例,只是為了找一下是否有“中國”的用戶,很明顯,后面的會比前面的更有效率。(請注意,第一條中是Select *,第二條是Select 1)

4. 為搜索字段建索引

索引并不一定就是給主鍵或是唯一的字段。如果在你的表中,有某個字段你總要會經(jīng)常用來做搜索,那么,請為其建立索引吧。

為搜索字段建索引""

從上圖你可以看到那個搜索字串 “last_name LIKE ‘a%’”,一個是建了索引,一個是沒有索引,性能差了4倍左右。

另外,你應(yīng)該也需要知道什么樣的搜索是不能使用正常的索引的。例如,當(dāng)你需要在一篇大的文章中搜索一個詞時,如: “WHERE post_content LIKE ‘%apple%’”,索引可能是沒有意義的。你可能需要使用MySQL全文索引 或是自己做一個索引(比如說:搜索關(guān)鍵詞或是Tag什么的)

5. 在Join表的時候使用相當(dāng)類型的例,并將其索引

如果你的應(yīng)用程序有很多 JOIN 查詢,你應(yīng)該確認(rèn)兩個表中Join的字段是被建過索引的。這樣,MySQL內(nèi)部會啟動為你優(yōu)化Join的SQL語句的機制。

而且,這些被用來Join的字段,應(yīng)該是相同的類型的。例如:如果你要把 DECIMAL 字段和一個 INT 字段Join在一起,MySQL就無法使用它們的索引。對于那些STRING類型,還需要有相同的字符集才行。(兩個表的字符集有可能不一樣)

6. 千萬不要 ORDER BY RAND()

想打亂返回的數(shù)據(jù)行?隨機挑一個數(shù)據(jù)?真不知道誰發(fā)明了這種用法,但很多新手很喜歡這樣用。但你確不了解這樣做有多么可怕的性能問題。

如果你真的想把返回的數(shù)據(jù)行打亂了,你有N種方法可以達(dá)到這個目的。這樣使用只讓你的數(shù)據(jù)庫的性能呈指數(shù)級的下降。這里的問題是:MySQL會不得不去執(zhí)行RAND()函數(shù)(很耗CPU時間),而且這是為了每一行記錄去記行,然后再對其排序。就算是你用了Limit 1也無濟于事(因為要排序)

下面的示例是隨機挑一條記錄

隨機挑一條記錄

7. 避免 SELECT *

從數(shù)據(jù)庫里讀出越多的數(shù)據(jù),那么查詢就會變得越慢。并且,如果你的數(shù)據(jù)庫服務(wù)器和WEB服務(wù)器是兩\臺\獨立的服務(wù)器的話,這還會增加網(wǎng)絡(luò)傳輸?shù)呢?fù)載。

所以,你應(yīng)該養(yǎng)成一個需要什么就取什么的好的習(xí)慣。

8. 永遠(yuǎn)為每張表設(shè)置一個ID

我們應(yīng)該為數(shù)據(jù)庫里的每張表都設(shè)置一個ID做為其主鍵,而且最好的是一個INT型的(推薦使用UNSIGNED),并設(shè)置上自動增加的AUTO_INCREMENT標(biāo)志。

就算是你 users 表有一個主鍵叫 “email”的字段,你也別讓它成為主鍵。使用 VARCHAR 類型來當(dāng)主鍵會使用得性能下降。另外,在你的程序中,你應(yīng)該使用表的ID來構(gòu)造你的數(shù)據(jù)結(jié)構(gòu)。

而且,在MySQL數(shù)據(jù)引擎下,還有一些操作需要使用主鍵,在這些情況下,主鍵的性能和設(shè)置變得非常重要,比如,集群,分區(qū)……

在這里,只有一個情況是例外,那就是“關(guān)聯(lián)表”的“外鍵”,也就是說,這個表的主鍵,通過若干個別的表的主鍵構(gòu)成。我們把這個情況叫做“外鍵”。比如:有一個“學(xué)生表”有學(xué)生的ID,有一個“課程表”有課程ID,那么,“成績表”就是“關(guān)聯(lián)表”了,其關(guān)聯(lián)了學(xué)生表和課程表,在成績表中,學(xué)生ID和課程ID叫“外鍵”其共同組成主鍵。

9. 使用 ENUM 而不是 VARCHAR

ENUM 類型是非常快和緊湊的。在實際上,其保存的是 TINYINT,但其外表上顯示為字符串。這樣一來,用這個字段來做一些選項列表變得相當(dāng)?shù)耐昝馈?/p>

如果你有一個字段,比如“性別”,“國家”,“民族”,“狀態(tài)”或“部門”,你知道這些字段的取值是有限而且固定的,那么,你應(yīng)該使用 ENUM 而不是 VARCHAR。

MySQL也有一個“建議”(見第十條)告訴你怎么去重新組織你的表結(jié)構(gòu)。當(dāng)你有一個 VARCHAR 字段時,這個建議會告訴你把其改成 ENUM 類型。使用 PROCEDURE ANALYSE() 你可以得到相關(guān)的建議。

10. 從 PROCEDURE ANALYSE() 取得建議

PROCEDURE ANALYSE() 會讓 MySQL 幫你去分析你的字段和其實際的數(shù)據(jù),并會給你一些有用的建議。只有表中有實際的數(shù)據(jù),這些建議才會變得有用,因為要做一些大的決定是需要有數(shù)據(jù)作為基礎(chǔ)的。

例如,如果你創(chuàng)建了一個 INT 字段作為你的主鍵,然而并沒有太多的數(shù)據(jù),那么,PROCEDURE ANALYSE()會建議你把這個字段的類型改成 MEDIUMINT 。或是你使用了一個 VARCHAR 字段,因為數(shù)據(jù)不多,你可能會得到一個讓你把它改成 ENUM 的建議。這些建議,都是可能因為數(shù)據(jù)不夠多,所以決策做得就不夠準(zhǔn)。

在phpmyadmin里,你可以在查看表時,點擊 “Propose table structure” 來查看這些建議

一定要注意,這些只是建議,只有當(dāng)你的表里的數(shù)據(jù)越來越多時,這些建議才會變得準(zhǔn)確。一定要記住,你才是最終做決定的人。

11. 盡可能的使用 NOT NULL

除非你有一個很特別的原因去使用 NULL 值,你應(yīng)該總是讓你的字段保持 NOT NULL。這看起來好像有點爭議,請往下看。

首先,問問你自己“Empty”和“NULL”有多大的區(qū)別(如果是INT,那就是0和NULL)?如果你覺得它們之間沒有什么區(qū)別,那么你就不要使用NULL。(你知道嗎?在 Oracle 里,NULL 和 Empty 的字符串是一樣的!)

不要以為 NULL 不需要空間,其需要額外的空間,并且,在你進(jìn)行比較的時候,你的程序會更復(fù)雜。 當(dāng)然,這里并不是說你就不能使用NULL了,現(xiàn)實情況是很復(fù)雜的,依然會有些情況下,你需要使用NULL值。

下面摘自MySQL自己的文檔:

摘自MySQL自己的文檔""

12. Prepared Statements

Prepared Statements很像存儲過程,是一種運行在后臺的SQL語句集合,我們可以從使用 prepared statements 獲得很多好處,無論是性能問題還是安全問題。

Prepared Statements 可以檢查一些你綁定好的變量,這樣可以保護(hù)你的程序不會受到“SQL注入式”攻擊。當(dāng)然,你也可以手動地檢查你的這些變量,然而,手動的檢查容易出問題,而且很經(jīng)常會被程序員忘了。當(dāng)我們使用一些framework或是ORM的時候,這樣的問題會好一些。

在性能方面,當(dāng)一個相同的查詢被使用多次的時候,這會為你帶來可觀的性能優(yōu)勢。你可以給這些Prepared Statements定義一些參數(shù),而MySQL只會解析一次。

雖然最新版本的MySQL在傳輸Prepared Statements是使用二進(jìn)制形勢,所以這會使得網(wǎng)絡(luò)傳輸非常有效率。

當(dāng)然,也有一些情況下,我們需要避免使用Prepared Statements,因為其不支持查詢緩存。但據(jù)說版本5.1后支持了。

在PHP中要使用prepared statements,你可以查看其使用手冊:mysqli 擴展 或是使用數(shù)據(jù)庫抽象層,如: PDO.

13. 無緩沖的查詢

正常的情況下,當(dāng)你在當(dāng)你在你的腳本中執(zhí)行一個SQL語句的時候,你的程序會停在那里直到?jīng)]這個SQL語句返回,然后你的程序再往下繼續(xù)執(zhí)行。你可以使用無緩沖查詢來改變這個行為。

關(guān)于這個事情,在PHP的文檔中有一個非常不錯的說明: mysql_unbuffered_query() 函數(shù):

上面那句話翻譯過來是說,mysql_unbuffered_query() 發(fā)送一個SQL語句到MySQL而并不像mysql_query()一樣去自動fethch和緩存結(jié)果。這會相當(dāng)節(jié)約很多可觀的內(nèi)存,尤其是那些會產(chǎn)生大量結(jié)果的查詢語句,并且,你不需要等到所有的結(jié)果都返回,只需要第一行數(shù)據(jù)返回的時候,你就可以開始馬上開始工作于查詢結(jié)果了。

然而,這會有一些限制。因為你要么把所有行都讀走,或是你要在進(jìn)行下一次的查詢前調(diào)用 mysql_free_result() 清除結(jié)果。而且, mysql_num_rows() 或 mysql_data_seek() 將無法使用。所以,是否使用無緩沖的查詢你需要仔細(xì)考慮。

14. 把IP地址存成 UNSIGNED INT

很多程序員都會創(chuàng)建一個 VARCHAR(15) 字段來存放字符串形式的IP而不是整形的IP。如果你用整形來存放,只需要4個字節(jié),并且你可以有定長的字段。而且,這會為你帶來查詢上的優(yōu)勢,尤其是當(dāng)你需要使用這樣的WHERE條件:IP between ip1 and ip2。

我們必需要使用UNSIGNED INT,因為 IP地址會使用整個32位的無符號整形。

而你的查詢,你可以使用 INET_ATON() 來把一個字符串IP轉(zhuǎn)成一個整形,并使用 INET_NTOA() 把一個整形轉(zhuǎn)成一個字符串IP。在PHP中,也有這樣的函數(shù) ip2long() 和 long2ip()。

15. 固定長度的表會更快

如果表中的所有字段都是“固定長度”的,整個表會被認(rèn)為是 “static” 或 “fixed-length”。 例如,表中沒有如下類型的字段: VARCHAR,TEXT,BLOB。只要你包括了其中一個這些字段,那么這個表就不是“固定長度靜態(tài)表”了,這樣,MySQL 引擎會用另一種方法來處理。

固定長度的表會提高性能,因為MySQL搜尋得會更快一些,因為這些固定的長度是很容易計算下一個數(shù)據(jù)的偏移量的,所以讀取的自然也會很快。而如果字段不是定長的,那么,每一次要找下一條的話,需要程序找到主鍵。

并且,固定長度的表也更容易被緩存和重建。不過,唯一的副作用是,固定長度的字段會浪費一些空間,因為定長的字段無論你用不用,他都是要分配那么多的空間。

使用“垂直分割”技術(shù)(見下一條),你可以分割你的表成為兩個一個是定長的,一個則是不定長的。

16. 垂直分割

“垂直分割”是一種把數(shù)據(jù)庫中的表按列變成幾張表的方法,這樣可以降低表的復(fù)雜度和字段的數(shù)目,從而達(dá)到優(yōu)化的目的。(以前,在銀行做過項目,見過一張表有100多個字段,很恐怖)

示例一:在Users表中有一個字段是家庭地址,這個字段是可選字段,相比起,而且你在數(shù)據(jù)庫操作的時候除了個人信息外,你并不需要經(jīng)常讀取或是改寫這個字段。那么,為什么不把他放到另外一張表中呢? 這樣會讓你的表有更好的性能,大家想想是不是,大量的時候,我對于用戶表來說,只有用戶ID,用戶名,口令,用戶角色等會被經(jīng)常使用。小一點的表總是會有好的性能。

示例二: 你有一個叫 “last_login” 的字段,它會在每次用戶登錄時被更新。但是,每次更新時會導(dǎo)致該表的查詢緩存被清空。所以,你可以把這個字段放到另一個表中,這樣就不會影響你對用戶ID,用戶名,用戶角色的不停地讀取了,因為查詢緩存會幫你增加很多性能。

另外,你需要注意的是,這些被分出去的字段所形成的表,你不會經(jīng)常性地去Join他們,不然的話,這樣的性能會比不分割時還要差,而且,會是極數(shù)級的下降。

17. 拆分大的 DELETE 或 INSERT 語句

如果你需要在一個在線的網(wǎng)站上去執(zhí)行一個大的 DELETE 或 INSERT 查詢,你需要非常小心,要避免你的操作讓你的整個網(wǎng)站停止相應(yīng)。因為這兩個操作是會鎖表的,表一鎖住了,別的操作都進(jìn)不來了。

Apache 會有很多的子進(jìn)程或線程。所以,其工作起來相當(dāng)有效率,而我們的服務(wù)器也不希望有太多的子進(jìn)程,線程和數(shù)據(jù)庫鏈接,這是極大的占服務(wù)器資源的事情,尤其是內(nèi)存。

如果你把你的表鎖上一段時間,比如30秒鐘,那么對于一個有很高訪問量的站點來說,這30秒所積累的訪問進(jìn)程/線程,數(shù)據(jù)庫鏈接,打開的文件數(shù),可能不僅僅會讓你泊WEB服務(wù)Crash,還可能會讓你的整臺服務(wù)器馬上掛了。

所以,如果你有一個大的處理,你定你一定把其拆分,使用 LIMIT 條件是一個好的方法。下面是一個示例:

18. 越小的列會越快

對于大多數(shù)的數(shù)據(jù)庫引擎來說,硬盤操作可能是最重大的瓶頸。所以,把你的數(shù)據(jù)變得緊湊會對這種情況非常有幫助,因為這減少了對硬盤的訪問。

參看 MySQL 的文檔 Storage Requirements 查看所有的數(shù)據(jù)類型。

如果一個表只會有幾列罷了(比如說字典表,配置表),那么,我們就沒有理由使用 INT 來做主鍵,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 會更經(jīng)濟一些。如果你不需要記錄時間,使用 DATE 要比 DATETIME 好得多。

當(dāng)然,你也需要留夠足夠的擴展空間,不然,你日后來干這個事,你會死的很難看,參看Slashdot的例子(2009年11月06日),一個簡單的ALTER TABLE語句花了3個多小時,因為里面有一千六百萬條數(shù)據(jù)。

19. 選擇正確的存儲引擎

在 MySQL 中有兩個存儲引擎 MyISAM 和 InnoDB,每個引擎都有利有弊。酷殼以前文章《MySQL: InnoDB 還是 MyISAM?》討論和這個事情。

MyISAM 適合于一些需要大量查詢的應(yīng)用,但其對于有大量寫操作并不是很好。甚至你只是需要update一個字段,整個表都會被鎖起來,而別的進(jìn)程,就算是讀進(jìn)程都無法操作直到讀操作完成。另外,MyISAM 對于 SELECT COUNT(*) 這類的計算是超快無比的。

InnoDB 的趨勢會是一個非常復(fù)雜的存儲引擎,對于一些小的應(yīng)用,它會比 MyISAM 還慢。他是它支持“行鎖” ,于是在寫操作比較多的時候,會更優(yōu)秀。并且,他還支持更多的高級應(yīng)用,比如:事務(wù)。

下面是MySQL的手冊

target=”_blank”MyISAM Storage Engine

InnoDB Storage Engine

20. 使用一個對象關(guān)系映射器(Object Relational Mapper)

使用 ORM (Object Relational Mapper),你能夠獲得可靠的性能增漲。一個ORM可以做的所有事情,也能被手動的編寫出來。但是,這需要一個高級專家。

ORM 的最重要的是“Lazy Loading”,也就是說,只有在需要的去取值的時候才會去真正的去做。但你也需要小心這種機制的副作用,因為這很有可能會因為要去創(chuàng)建很多很多小的查詢反而會降低性能。

ORM 還可以把你的SQL語句打包成一個事務(wù),這會比單獨執(zhí)行他們快得多得多。

目前,個人最喜歡的PHP的ORM是:Doctrine。

21. 小心“永久鏈接”

“永久鏈接”的目的是用來減少重新創(chuàng)建MySQL鏈接的次數(shù)。當(dāng)一個鏈接被創(chuàng)建了,它會永遠(yuǎn)處在連接的狀態(tài),就算是數(shù)據(jù)庫操作已經(jīng)結(jié)束了。而且,自從我們的Apache開始重用它的子進(jìn)程后——也就是說,下一次的HTTP請求會重用Apache的子進(jìn)程,并重用相同的 MySQL 鏈接。

PHP手冊:mysql_pconnect()

在理論上來說,這聽起來非常的不錯。但是從個人經(jīng)驗(也是大多數(shù)人的)上來說,這個功能制造出來的麻煩事更多。因為,你只有有限的鏈接數(shù),內(nèi)存問題,文件句柄數(shù),等等。

而且,Apache 運行在極端并行的環(huán)境中,會創(chuàng)建很多很多的了進(jìn)程。這就是為什么這種“永久鏈接”的機制工作地不好的原因。在你決定要使用“永久鏈接”之前,你需要好好地考慮一下你的整個系統(tǒng)的架構(gòu)。

責(zé)任編輯:彭凡 來源: 毛蛋網(wǎng)
相關(guān)推薦

2010-02-23 16:17:59

2018-05-09 08:35:59

2011-07-07 10:49:41

JavaScript

2025-05-30 08:09:28

2009-04-20 08:51:50

MySQL查詢優(yōu)化數(shù)據(jù)庫

2017-03-14 18:48:06

Android性能優(yōu)化內(nèi)存優(yōu)化

2015-11-10 09:50:51

IT實施計劃IT

2015-11-10 09:40:55

IT實施計劃IT

2009-10-20 09:17:27

2013-01-25 10:37:51

敏捷開發(fā)

2023-10-23 13:03:04

2017-11-02 15:07:56

代碼重寫代碼開發(fā)

2017-01-05 16:29:00

2025-07-09 07:15:00

AIGenAICIO

2009-02-20 10:09:00

網(wǎng)吧掉線路由器

2021-05-19 20:20:56

Oracle歸檔修復(fù)

2019-12-03 10:46:07

PHP高并發(fā)架構(gòu)

2013-05-27 14:03:10

綜合布線布線經(jīng)驗

2009-05-25 10:21:00

光纜網(wǎng)絡(luò)光纖測試

2021-12-24 08:18:01

CIO數(shù)據(jù)分析
點贊
收藏

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

99热这里只有精品在线| 色婷婷亚洲一区二区三区| 欧美性色综合网| 91探花福利精品国产自产在线| 亚洲黄色免费在线观看| 久热国产在线| 欧美日韩另类图片| 日av在线不卡| 精品国产乱码91久久久久久网站| 在线不卡视频一区二区| 在线免费黄色av| 亚洲天堂中文字幕在线观看| 国产精品久久夜| 日本中文字幕不卡免费| 污污免费在线观看| 怡红院在线播放| 经典一区二区三区| 伊人激情综合网| 国产a级一级片| 少妇一区二区三区四区| 午夜日韩在线| 91精品在线麻豆| 91香蕉视频网址| 91免费欧美精品| 中国美女乱淫免费看视频| 另类视频在线| 国产传媒一区在线| 欧美成人精品在线| 国产欧美精品一二三| 欧美激情免费| 国产一区欧美一区| 欧美老妇交乱视频| 亚洲一级Av无码毛片久久精品| 欧美中文字幕精在线不卡| 国产丝袜美腿一区二区三区| 国产成人精品一区二区三区| 人妻大战黑人白浆狂泄| 日韩一区二区三区在线看| 伊人开心综合网| 国产精品二区三区| 日韩特级黄色片| 国产99亚洲| 调教+趴+乳夹+国产+精品| 国产偷久久久精品专区| 天堂网av手机版| 欧美日韩爆操| 国产丝袜一区二区三区| 日日摸天天爽天天爽视频| a中文在线播放| 精品亚洲porn| 国产精品免费观看在线| 极品魔鬼身材女神啪啪精品| 999国产精品一区| 欧美视频精品一区| 亚洲韩国在线| 亚洲卡一卡二卡三| 鲁大师成人一区二区三区| 伊人男人综合视频网| 欧美黑人欧美精品刺激| 国精品产品一区| 亚洲激情在线播放| 视频一区二区视频| 超碰免费公开在线| 99久久er热在这里只有精品66| 国产99视频在线观看| 国产精品视频一区在线观看| 亚洲91中文字幕无线码三区| 亚洲精品国产美女| 欧美成人福利在线观看| 欧美人与动牲性行为| 亚洲在线一区二区三区| 午夜精品一区二区在线观看| 99在线小视频| 国产成人精品免费网站| 国产精品美女久久久免费| 无码一区二区三区| 黄色av一区| 中文字幕亚洲精品| 亚洲黄色免费在线观看| 欧美激情在线精品一区二区三区| 一本一本久久a久久精品牛牛影视| 欧美午夜激情影院| 五月国产精品| 日韩欧美精品在线视频| 国产一二三四在线视频| av影视在线看| 亚洲人成亚洲人成在线观看图片| 欧美不卡三区| 人人妻人人澡人人爽人人欧美一区 | 欧美性xxxxxx| 99热这里只有精品在线播放| av第一福利在线导航| 欧美日韩视频免费播放| 超碰97在线看| 日本高清中文字幕在线| 久久美女高清视频| 国产亚洲欧美另类一区二区三区| 水莓100在线视频| 国产69精品久久777的优势| 精品欧美一区二区三区久久久 | 日韩电影在线一区二区三区| 久久久久久久久亚洲| 任我爽在线视频| 九九在线高清精品视频| 久久精品国产综合| 天天舔天天操天天干| 欧美另类视频| 国产成人综合精品| 精品女同一区二区三区| 国产裸体歌舞团一区二区| 国产精品视频网站| 亚洲大尺度网站| 亚洲国产精品v| 日本视频一区在线观看| 美女毛片在线看| 久久日一线二线三线suv| 91制片厂免费观看| 伊人网在线播放| 欧美日韩一二三四五区| 日本国产一级片| 国产欧美88| 日韩久久久精品| 亚欧精品视频一区二区三区| 亚洲精选成人| 欧美一级片一区| 欧美a视频在线观看| 国产在线看一区| 视频一区二区三区免费观看| 麻豆免费版在线观看| 色综合久久99| 伊人久久一区二区三区| 一区二区日韩欧美| 久久久久久久国产精品视频| 91亚洲欧美激情| 国产成人亚洲精品青草天美| 亚洲高清在线播放| 免费欧美电影| 69p69国产精品| 亚洲午夜精品久久久久久高潮| 日本午夜一区| 一本色道久久88综合日韩精品| 伊人久久综合视频| 日韩经典一区二区| 精品蜜桃一区二区三区| 福利在线免费视频| 色94色欧美sute亚洲线路二| 国产传媒免费观看| 加勒比中文字幕精品| 亚洲天堂第一页| 日韩欧美123区| 久久精品免费看| 国产高清自拍一区| 欧美亚洲天堂| 精品久久久久久久人人人人传媒 | 成人爽a毛片免费啪啪红桃视频| 久久久精品国产| 99精品在线看| xfplay精品久久| 中文字幕色一区二区| 久久久久久一区二区三区四区别墅| 一区二区三区久久精品| 欧美日韩a v| 成人一二三区视频| 人禽交欧美网站免费| 亚洲第一二三四区| 在线a欧美视频| 一本久道久久综合无码中文| 成人不卡免费av| 亚洲精品高清国产一线久久| 国产欧美在线观看免费| 久久精品99久久久久久久久| 99在线小视频| 欧美日韩免费看| 日本乱子伦xxxx| 久久精品国产精品亚洲精品| 裸体裸乳免费看| 少妇精品视频一区二区免费看| 精品乱码亚洲一区二区不卡| 国产无套粉嫩白浆内谢| 精品一区二区三区在线播放| 鲁鲁视频www一区二区| 在线观看福利电影| 永久免费精品影视网站| 国产www视频| 欧美日韩综合视频网址| 国产精品久久免费观看| 国产麻豆视频一区| 国产欧美日韩网站| 欧美电影院免费观看| 国产午夜精品视频免费不卡69堂| 日本天堂在线视频| 国产在线播放一区二区三区| 韩国无码av片在线观看网站| 图片一区二区| 在线观看精品国产视频| 国产富婆一级全黄大片| 欧美日韩亚洲一区二区三区| 秋霞欧美一区二区三区视频免费| 日韩精品一二三| 99视频精品全部免费看| 亚洲人成伊人成综合图片| 国内精品一区二区三区四区| 亚洲国产www| 欧美性猛交xxxx黑人| 黄色a级片在线观看| 久久精品国产精品亚洲红杏| 欧日韩免费视频| 日韩精品诱惑一区?区三区| 国产精品久久久久久久久婷婷 | 97精品中文字幕| 国产精品视频网站| av资源中文在线天堂| 最近2019年好看中文字幕视频| 波多野结衣激情视频| 亚洲一区在线观看视频| 国产清纯白嫩初高中在线观看性色| 影音先锋日韩在线| 欧美美乳视频网站在线观看| 人人视频精品| 欧美精品福利在线| 日本精品一区二区三区在线播放| 亚洲免费伊人电影在线观看av| 亚洲欧美另类在线视频| 一区二区成人在线视频| 91精品人妻一区二区三区| 亚洲欧美日韩综合国产aⅴ| 欧美精品一区在线| 91精品短视频| 1区1区3区4区产品乱码芒果精品| 欧美v亚洲v| 久久精品国产成人| 国产精品ⅴa有声小说| 欧美日韩黄色影视| 成人免费毛片xxx| 欧美激情一区二区在线| www.久久av.com| 日韩精品电影在线观看| 欧美成人三级在线视频| 九热爱视频精品视频| 好吊色欧美一区二区三区四区| 狂野欧美xxxx韩国少妇| 成人久久一区二区三区| 国产又色又爽又黄刺激在线视频| 日韩av中文在线| 草久视频在线观看| 亚洲国产日韩在线一区模特| 97人妻天天摸天天爽天天| 国产91高潮流白浆在线麻豆 | 人人妻人人澡人人爽欧美一区双 | 精品噜噜噜噜久久久久久久久试看| 国产精品特级毛片一区二区三区| 一区二区免费在线| 青青草原在线免费观看视频| 久久麻豆一区二区| 日韩一级视频在线观看| 91日韩在线专区| a级大片在线观看| 国产高清视频一区| 善良的小姨在线| 久久久久久夜| 男人的天堂日韩| 极品中文字幕一区| 日本黑人久久| 精品产国自在拍| 国产精品综合久久久久久| 国产精品对白久久久久粗| 国产精品久久视频| 国产精品久久久久久妇女| 久久99久久99精品免观看粉嫩| 中文字幕免费高清电视剧网站在线观看| 欧美精品生活片| ****av在线网毛片| 日韩av电影在线免费播放| 国产精品4hu.www| 91嫩草国产在线观看| 高潮按摩久久久久久av免费| 久久综合色一本| 91综合久久一区二区| 日韩精品免费一区| 91久久在线| 亚洲一二三区av| 国产麻豆精品在线| av直播在线观看| 日韩一区日韩二区| 欧美性受xxxx黑人| 亚洲免费在线观看| 日日操免费视频| 亚洲国产精品国自产拍av| 国产精品精品软件男同| 亚洲成人你懂的| 中文在线字幕av| 91国偷自产一区二区使用方法| 国产又粗又猛又爽又黄91| 亚洲大胆人体视频| 性一交一乱一色一视频麻豆| 精品无人区乱码1区2区3区在线| 在线激情网站| 最近的2019中文字幕免费一页| 在线中文字幕电影| 欧美诱惑福利视频| 精品一区二区三区免费看| 久久综合福利| 亚洲视频在线免费| 日韩中文字幕免费在线| 粉嫩高潮美女一区二区三区| 色婷婷国产精品免| 污片在线观看一区二区| 99久久精品日本一区二区免费| 亚洲女人被黑人巨大进入| av在线看片| 国产精品极品美女粉嫩高清在线| 欧美××××黑人××性爽| 92福利视频午夜1000合集在线观看| 亚洲国产天堂| 久久婷婷人人澡人人喊人人爽| 欧美变态网站| 中文字幕色呦呦| 精品一区二区三区在线观看| brazzers精品成人一区| 亚洲福利一二三区| 国产模特av私拍大尺度| 中文国产成人精品久久一| 在线中文字幕播放| 国产日韩二区| 国产精品扒开腿做爽爽爽软件| 久久国产激情视频| 久久久777精品电影网影网| 色噜噜噜噜噜噜| 精品久久香蕉国产线看观看亚洲| 99热这里只有精品5| 伊人久久久久久久久久久| 美女福利一区二区| 成人中心免费视频| 欧美日一区二区| 能在线观看的av网站| 久久精品视频一区二区| 天堂在线免费观看视频| 日韩亚洲欧美高清| 五月天婷婷视频| 中文字幕亚洲欧美| 一区二区视频免费完整版观看| 欧美午夜免费| 日韩高清在线电影| 人人人妻人人澡人人爽欧美一区| 日韩欧美亚洲成人| 色综合久久网女同蕾丝边| 日韩中文字幕在线视频播放| 国产丝袜精品丝袜| 97伦理在线四区| 欧美日韩福利| 中文字幕在线国产| 亚洲一区二区三区四区在线| 午夜精品小视频| 高清欧美性猛交| 色先锋久久影院av| 久久精品免费一区二区| 久久久久久毛片| 在线观看污污网站| 在线视频日韩精品| 亚洲精品69| 国产三级中文字幕| 国产成人精品亚洲777人妖| 欧美日韩偷拍视频| 欧美亚洲尤物久久| jyzzz在线观看视频| 国产精品一区二区女厕厕| 老司机凹凸av亚洲导航| 少妇高潮喷水在线观看| 99re热这里只有精品视频| 日韩av大片在线观看| 亚洲天堂av女优| 国产精品久久久久久av公交车| 欧洲金发美女大战黑人| 99综合电影在线视频| 欧美黄色aaa| 欧美变态口味重另类| 欧美在线极品| 亚洲狠狠婷婷综合久久久| 国产一区 二区 三区一级| 一级aaa毛片| 一区二区亚洲精品国产| 精品久久免费| aa在线免费观看| 欧美经典三级视频一区二区三区| 国产suv精品一区二区69| 欧美亚洲午夜视频在线观看| 日韩成人综合| 免费a v网站| 亚洲影院久久精品| 日产精品久久久久久久性色| 国产区精品在线观看| 伊甸园亚洲一区| 国产欧美一区二| 五月天亚洲精品| 日本免费视频在线观看| 国产一区二区中文字幕免费看| 久久精品国产精品亚洲精品| 中文在线观看免费网站| 最好看的2019年中文视频| 精品精品国产毛片在线看|