国产欧美精品专区一区二区_91www永久在线精品果冻传媒_日韩成人亚洲综合专区无码av_欧美激情一区二区三区高清视频_免费福利在线视频亚洲_日韩精品无码人妻自慰喷水_把腿张开老子cao哭你动态图_51a性爱高清免费视频_国产无码资源在线观看資源免費看_再深点灬舒服灬太大了网站

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

十步優(yōu)化SQL Server中的數(shù)據(jù)訪問(wèn)

admin
2011年3月15日 0:25 本文熱度 4156
故事開(kāi)篇:你和你的團(tuán)隊(duì)經(jīng)過(guò)不懈努力,終于使網(wǎng)站成功上線,剛開(kāi)始時(shí),注冊(cè)用戶較少,網(wǎng)站性能表現(xiàn)不錯(cuò),但隨著注冊(cè)用戶的增多,訪問(wèn)速度開(kāi)始變慢,一些用戶開(kāi)始發(fā)來(lái)郵件表示抗議,事情變得越來(lái)越糟,為了留住用戶,你開(kāi)始著手調(diào)查訪問(wèn)變慢的原因。

  經(jīng)過(guò)緊張的調(diào)查,你發(fā)現(xiàn)問(wèn)題出在數(shù)據(jù)庫(kù)上,當(dāng)應(yīng)用程序嘗試訪問(wèn)/更新數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)執(zhí)行得相當(dāng)慢,再次深入調(diào)查數(shù)據(jù)庫(kù)后,你發(fā)現(xiàn)數(shù)據(jù)庫(kù)表增長(zhǎng)得很大,有些表甚至有上千萬(wàn)行數(shù)據(jù),測(cè)試團(tuán)隊(duì)開(kāi)始在生產(chǎn)數(shù)據(jù)庫(kù)上測(cè)試,發(fā)現(xiàn)訂單提交過(guò)程需要花5分鐘時(shí)間,但在網(wǎng)站上線前的測(cè)試中,提交一次訂單只需要2/3秒。


  類(lèi)似這種故事在世界各個(gè)角落每天都會(huì)上演,幾乎每個(gè)開(kāi)發(fā)人員在其開(kāi)發(fā)生涯中都會(huì)遇到這種事情,我也曾多次遇到這種情況,因此我希望將我解決這種問(wèn)題的經(jīng)驗(yàn)和大家分享。


  如果你正身處這種項(xiàng)目,逃避不是辦法,只有勇敢地去面對(duì)現(xiàn)實(shí)。首先,我認(rèn)為你的應(yīng)用程序中一定沒(méi)有寫(xiě)數(shù)據(jù)訪問(wèn)程序,我將在這個(gè)系列的文章中介紹如何編寫(xiě)最佳的數(shù)據(jù)訪問(wèn)程序,以及如何優(yōu)化現(xiàn)有的數(shù)據(jù)訪問(wèn)程序。


  范圍


  在正式開(kāi)始之前,有必要澄清一下本系列文章的寫(xiě)作邊界,我想談的是“事務(wù)性(OLTP)SQL Server數(shù)據(jù)庫(kù)中的數(shù)據(jù)訪問(wèn)性能優(yōu)化”,但文中介紹的這些技巧也可以用于其它數(shù)據(jù)庫(kù)平臺(tái)。


  同時(shí),我介紹的這些技巧主要是面向程序開(kāi)發(fā)人員的,雖然DBA也是優(yōu)化數(shù)據(jù)庫(kù)的一支主要力量,但DBA使用的優(yōu)化方法不在我的討論范圍之內(nèi)。


  當(dāng)一個(gè)基于數(shù)據(jù)庫(kù)的應(yīng)用程序運(yùn)行起來(lái)很慢時(shí),90%的可能都是由于數(shù)據(jù)訪問(wèn)程序的問(wèn)題,要么是沒(méi)有優(yōu)化,要么是沒(méi)有按最佳方法編寫(xiě)代碼,因此你需要審查和優(yōu)化你的數(shù)據(jù)訪問(wèn)/處理程序。


  我將會(huì)談到10個(gè)步驟來(lái)優(yōu)化數(shù)據(jù)訪問(wèn)程序,先從最基本的索引說(shuō)起吧!


  第一步:應(yīng)用正確的索引


  我之所以先從索引談起是因?yàn)椴捎谜_的索引會(huì)使生產(chǎn)系統(tǒng)的性能得到質(zhì)的提升,另一個(gè)原因是創(chuàng)建或修改索引是在數(shù)據(jù)庫(kù)上進(jìn)行的,不會(huì)涉及到修改程序,并可以立即見(jiàn)到成效。


  我們還是溫習(xí)一下索引的基礎(chǔ)知識(shí)吧,我相信你已經(jīng)知道什么是索引了,但我見(jiàn)到很多人都還不是很明白,我先給大家將一個(gè)故事吧。


  很久以前,在一個(gè)古城的的大圖書(shū)館中珍藏有成千上萬(wàn)本書(shū)籍,但書(shū)架上的書(shū)沒(méi)有按任何順序擺放,因此每當(dāng)有人詢(xún)問(wèn)某本書(shū)時(shí),圖書(shū)管理員只有挨個(gè)尋找,每一次都要花費(fèi)大量的時(shí)間。


  [這就好比數(shù)據(jù)表沒(méi)有主鍵一樣,搜索表中的數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)引擎必須進(jìn)行全表掃描,效率極其低下。]


  更糟的是圖書(shū)館的圖書(shū)越來(lái)越多,圖書(shū)管理員的工作變得異常痛苦,有一天來(lái)了一個(gè)聰明的小伙子,他看到圖書(shū)管理員的痛苦工作后,想出了一個(gè)辦法,他建議將每本書(shū)都編上號(hào),然后按編號(hào)放到書(shū)架上,如果有人指定了圖書(shū)編號(hào),那么圖書(shū)管理員很快就可以找到它的位置了。


  [給圖書(shū)編號(hào)就象給表創(chuàng)建主鍵一樣,創(chuàng)建主鍵時(shí),會(huì)創(chuàng)建聚集索引樹(shù),表中的所有行會(huì)在文件系統(tǒng)上根據(jù)主鍵值進(jìn)行物理排序,當(dāng)查詢(xún)表中任一行時(shí),數(shù)據(jù)庫(kù)首先使用聚集索引樹(shù)找到對(duì)應(yīng)的數(shù)據(jù)頁(yè)(就象首先找到書(shū)架一樣),然后在數(shù)據(jù)頁(yè)中根據(jù)主鍵鍵值找到目標(biāo)行(就象找到書(shū)架上的書(shū)一樣)。]


  于是圖書(shū)管理員開(kāi)始給圖書(shū)編號(hào),然后根據(jù)編號(hào)將書(shū)放到書(shū)架上,為此他花了整整一天時(shí)間,但最后經(jīng)過(guò)測(cè)試,他發(fā)現(xiàn)找書(shū)的效率大大提高了。


  [在一個(gè)表上只能創(chuàng)建一個(gè)聚集索引,就象書(shū)只能按一種規(guī)則擺放一樣。]


  但問(wèn)題并未完全解決,因?yàn)楹芏嗳擞洸蛔?shū)的編號(hào),只記得書(shū)的名字,圖書(shū)管理員無(wú)賴(lài)又只有掃描所有的圖書(shū)編號(hào)挨個(gè)尋找,但這次他只花了20分鐘,以前未給圖書(shū)編號(hào)時(shí)要花2-3小時(shí),但與根據(jù)圖書(shū)編號(hào)查找圖書(shū)相比,時(shí)間還是太長(zhǎng)了,因此他向那個(gè)聰明的小伙子求助。


  [這就好像你給Product表增加了主鍵ProductID,但除此之外沒(méi)有建立其它索引,當(dāng)使用Product Name進(jìn)行檢索時(shí),數(shù)據(jù)庫(kù)引擎又只要進(jìn)行全表掃描,逐個(gè)尋找了。]


  聰明的小伙告訴圖書(shū)管理員,之前已經(jīng)創(chuàng)建好了圖書(shū)編號(hào),現(xiàn)在只需要再創(chuàng)建一個(gè)索引或目錄,將圖書(shū)名稱(chēng)和對(duì)應(yīng)的編號(hào)一起存儲(chǔ)起來(lái),但這一次是按圖書(shū)名稱(chēng)進(jìn)行排序,如果有人想找“Database Management System”一書(shū),你只需要跳到“D”開(kāi)頭的目錄,然后按照編號(hào)就可以找到圖書(shū)了。


  于是圖書(shū)管理員興奮地花了幾個(gè)小時(shí)創(chuàng)建了一個(gè)“圖書(shū)名稱(chēng)”目錄,經(jīng)過(guò)測(cè)試,現(xiàn)在找一本書(shū)的時(shí)間縮短到1分鐘了(其中30秒用于從“圖書(shū)名稱(chēng)”目錄中查找編號(hào),另外根據(jù)編號(hào)查找圖書(shū)用了30秒)。


  圖書(shū)管理員開(kāi)始了新的思考,讀者可能還會(huì)根據(jù)圖書(shū)的其它屬性來(lái)找書(shū),如作者,于是他用同樣的辦法為作者也創(chuàng)建了目錄,現(xiàn)在可以根據(jù)圖書(shū)編號(hào),書(shū)名和作者在1分鐘內(nèi)查找任何圖書(shū)了,圖書(shū)管理員的工作變得輕松了,故事也到此結(jié)束。


  到此,我相信你已經(jīng)完全理解了索引的真正含義。假設(shè)我們有一個(gè)Products表,創(chuàng)建了一個(gè)聚集索引(根據(jù)表的主鍵自動(dòng)創(chuàng)建的),我們還需要在ProductName列上創(chuàng)建一個(gè)非聚集索引,創(chuàng)建非聚集索引時(shí),數(shù)據(jù)庫(kù)引擎會(huì)為非聚集索引自動(dòng)創(chuàng)建一個(gè)索引樹(shù)(就象故事中的“圖書(shū)名稱(chēng)”目錄一樣),產(chǎn)品名稱(chēng)會(huì)存儲(chǔ)在索引頁(yè)中,每個(gè)索引頁(yè)包括一定范圍的產(chǎn)品名稱(chēng)和它們對(duì)應(yīng)的主鍵鍵值,當(dāng)使用產(chǎn)品名稱(chēng)進(jìn)行檢索時(shí),數(shù)據(jù)庫(kù)引擎首先會(huì)根據(jù)產(chǎn)品名稱(chēng)查找非聚集索引樹(shù)查出主鍵鍵值,然后使用主鍵鍵值查找聚集索引樹(shù)找到最終的產(chǎn)品。


  下圖顯示了一個(gè)索引樹(shù)的結(jié)構(gòu)



  圖 1 索引樹(shù)結(jié)構(gòu)


  它叫做B+樹(shù)(或平衡樹(shù)),中間節(jié)點(diǎn)包含值的范圍,指引SQL引擎應(yīng)該在哪里去查找特定的索引值,葉子節(jié)點(diǎn)包含真正的索引值,如果這是一個(gè)聚集索引樹(shù),葉子節(jié)點(diǎn)就是物理數(shù)據(jù)頁(yè),如果這是一個(gè)非聚集索引樹(shù),葉子節(jié)點(diǎn)包含索引值和聚集索引鍵(數(shù)據(jù)庫(kù)引擎使用它在聚集索引樹(shù)中查找對(duì)應(yīng)的行)。


  通常,在索引樹(shù)中查找目標(biāo)值,然后跳到真實(shí)的行,這個(gè)過(guò)程是花不了什么時(shí)間的,因此索引一般會(huì)提高數(shù)據(jù)檢索速度。下面的步驟將有助于你正確應(yīng)用索引。


  確保每個(gè)表都有主鍵


  這樣可以確保每個(gè)表都有聚集索引(表在磁盤(pán)上的物理存儲(chǔ)是按照主鍵順序排列的),使用主鍵檢索表中的數(shù)據(jù),或在主鍵字段上進(jìn)行排序,或在where子句中指定任意范圍的主鍵鍵值時(shí),其速度都是非??斓?。


  在下面這些列上創(chuàng)建非聚集索引:


  1)搜索時(shí)經(jīng)常使用到的;


  2)用于連接其它表的;


  3)用于外鍵字段的;


  4)高選中性的;


  5)ORDER BY子句使用到的;


  6)XML類(lèi)型。


  下面是一個(gè)創(chuàng)建索引的例子: 



CREATE INDEX

  NCLIX_OrderDetails_ProductID
ON

  dbo.OrderDetails(ProductID)

  也可以使用SQL Server管理工作臺(tái)在表上創(chuàng)建索引,如圖2所示。



  圖 2 使用SQL Server管理工作臺(tái)創(chuàng)建索引
 



  第二步:創(chuàng)建適當(dāng)?shù)母采w索引


  假設(shè)你在Sales表(SelesID,SalesDate,SalesPersonID,ProductID,Qty)的外鍵列(ProductID)上創(chuàng)建了一個(gè)索引,假設(shè)ProductID列是一個(gè)高選中性列,那么任何在where子句中使用索引列(ProductID)的select查詢(xún)都會(huì)更快,如果在外鍵上沒(méi)有創(chuàng)建索引,將會(huì)發(fā)生全部掃描,但還有辦法可以進(jìn)一步提升查詢(xún)性能。


  假設(shè)Sales表有10,000行記錄,下面的SQL語(yǔ)句選中400行(總行數(shù)的4%): 



SELECT SalesDate, SalesPersonID FROM Sales WHERE ProductID = 112

  我們來(lái)看看這條SQL語(yǔ)句在SQL執(zhí)行引擎中是如何執(zhí)行的:


  1)Sales表在ProductID列上有一個(gè)非聚集索引,因此它查找非聚集索引樹(shù)找出ProductID=112的記錄;


  2)包含ProductID = 112記錄的索引頁(yè)也包括所有的聚集索引鍵(所有的主鍵鍵值,即SalesID);


  3)針對(duì)每一個(gè)主鍵(這里是400),SQL Server引擎查找聚集索引樹(shù)找出真實(shí)的行在對(duì)應(yīng)頁(yè)面中的位置;


  SQL Server引擎從對(duì)應(yīng)的行查找SalesDate和SalesPersonID列的值。


  在上面的步驟中,對(duì)ProductID = 112的每個(gè)主鍵記錄(這里是400),SQL Server引擎要搜索400次聚集索引樹(shù)以檢索查詢(xún)中指定的其它列(SalesDate,SalesPersonID)。


  如果非聚集索引頁(yè)中包括了聚集索引鍵和其它兩列(SalesDate,,SalesPersonID)的值,SQL Server引擎可能不會(huì)執(zhí)行上面的第3和4步,直接從非聚集索引樹(shù)查找ProductID列速度還會(huì)快一些,直接從索引頁(yè)讀取這三列的數(shù)值。


  幸運(yùn)的是,有一種方法實(shí)現(xiàn)了這個(gè)功能,它被稱(chēng)為“覆蓋索引”,在表列上創(chuàng)建覆蓋索引時(shí),需要指定哪些額外的列值需要和聚集索引鍵值(主鍵)一起存儲(chǔ)在索引頁(yè)中。下面是在Sales 表ProductID列上創(chuàng)建覆蓋索引的例子: 



CREATE INDEX NCLIX_Sales_ProductID--Index name

  
ON dbo.Sales(ProductID)--Column on which index is to be created

  INCLUDE(SalesDate, SalesPersonID)
--Additional column values to include

  應(yīng)該在那些select查詢(xún)中常使用到的列上創(chuàng)建覆蓋索引,但覆蓋索引中包括過(guò)多的列也不行,因?yàn)楦采w索引列的值是存儲(chǔ)在內(nèi)存中的,這樣會(huì)消耗過(guò)多內(nèi)存,引發(fā)性能下降。


  創(chuàng)建覆蓋索引時(shí)使用數(shù)據(jù)庫(kù)調(diào)整顧問(wèn)


  我們知道,當(dāng)SQL出問(wèn)題時(shí),SQL Server引擎中的優(yōu)化器根據(jù)下列因素自動(dòng)生成不同的查詢(xún)計(jì)劃:


  1)數(shù)據(jù)量


  2)統(tǒng)計(jì)數(shù)據(jù)


  3)索引變化


  4)TSQL中的參數(shù)值


  5)服務(wù)器負(fù)載


  這就意味著,對(duì)于特定的SQL,即使表和索引結(jié)構(gòu)是一樣的,但在生產(chǎn)服務(wù)器和在測(cè)試服務(wù)器上產(chǎn)生的執(zhí)行計(jì)劃可能會(huì)不一樣,這也意味著在測(cè)試服務(wù)器上創(chuàng)建的索引可以提高應(yīng)用程序的性能,但在生產(chǎn)服務(wù)器上創(chuàng)建同樣的索引卻未必會(huì)提高應(yīng)用程序的性能。因?yàn)闇y(cè)試環(huán)境中的執(zhí)行計(jì)劃利用了新創(chuàng)建的索引,但在生產(chǎn)環(huán)境中執(zhí)行計(jì)劃可能不會(huì)利用新創(chuàng)建的索引(例如,一個(gè)非聚集索引列在生產(chǎn)環(huán)境中不是一個(gè)高選中性列,但在測(cè)試環(huán)境中可能就不一樣)。


  因此我們?cè)趧?chuàng)建索引時(shí),要知道執(zhí)行計(jì)劃是否會(huì)真正利用它,但我們?cè)趺床拍苤滥?答案就是在測(cè)試服務(wù)器上模擬生產(chǎn)環(huán)境負(fù)載,然后創(chuàng)建合適的索引并進(jìn)行測(cè)試,如果這樣測(cè)試發(fā)現(xiàn)索引可以提高性能,那么它在生產(chǎn)環(huán)境也就更可能提高應(yīng)用程序的性能了。


  雖然要模擬一個(gè)真實(shí)的負(fù)載比較困難,但目前已經(jīng)有很多工具可以幫助我們。


  使用SQL profiler跟蹤生產(chǎn)服務(wù)器,盡管不建議在生產(chǎn)環(huán)境中使用SQL profiler,但有時(shí)沒(méi)有辦法,要診斷性能問(wèn)題關(guān)鍵所在,必須得用,在http://msdn.microsoft.com/en-us/library/ms181091.aspx有SQL profiler的使用方法。


  使用SQL profiler創(chuàng)建的跟蹤文件,在測(cè)試服務(wù)器上利用數(shù)據(jù)庫(kù)調(diào)整顧問(wèn)創(chuàng)建一個(gè)類(lèi)似的負(fù)載,大多數(shù)時(shí)候,調(diào)整顧問(wèn)會(huì)給出一些可以立即使用的索引建議,在http://msdn.microsoft.com/en-us/library/ms166575.aspx有調(diào)整顧問(wèn)的詳細(xì)介紹。



  第三步:整理索引碎片


  你可能已經(jīng)創(chuàng)建好了索引,并且所有索引都在工作,但性能卻仍然不好,那很可能是產(chǎn)生了索引碎片,你需要進(jìn)行索引碎片整理。


  什么是索引碎片?


  由于表上有過(guò)度地插入、修改和刪除操作,索引頁(yè)被分成多塊就形成了索引碎片,如果索引碎片嚴(yán)重,那掃描索引的時(shí)間就會(huì)變長(zhǎng),甚至導(dǎo)致索引不可用,因此數(shù)據(jù)檢索操作就慢下來(lái)了。


  有兩種類(lèi)型的索引碎片:內(nèi)部碎片和外部碎片。


  內(nèi)部碎片:為了有效的利用內(nèi)存,使內(nèi)存產(chǎn)生更少的碎片,要對(duì)內(nèi)存分頁(yè),內(nèi)存以頁(yè)為單位來(lái)使用,最后一頁(yè)往往裝不滿,于是形成了內(nèi)部碎片。


  外部碎片:為了共享要分段,在段的換入換出時(shí)形成外部碎片,比如5K的段換出后,有一個(gè)4k的段進(jìn)來(lái)放到原來(lái)5k的地方,于是形成1k的外部碎片。


  如何知道是否發(fā)生了索引碎片?


  執(zhí)行下面的SQL語(yǔ)句就知道了(下面的語(yǔ)句可以在SQL Server 2005及后續(xù)版本中運(yùn)行,用你的數(shù)據(jù)庫(kù)名替換掉這里的AdventureWorks):



 SELECT object_name(dt.object_id) Tablename,si.name

  IndexName,dt.avg_fragmentation_in_percent
AS

  ExternalFragmentation,dt.avg_page_space_used_in_percent
AS

  InternalFragmentation

  
FROM

  (

  
SELECT object_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent

  
FROM sys.dm_db_index_physical_stats (db_id('AdventureWorks'),null,null,null,'DETAILED'

  )

  
WHERE index_id <> 0) AS dt INNER JOIN sys.indexes si ON si.object_id=dt.object_id

  
AND si.index_id=dt.index_id AND dt.avg_fragmentation_in_percent>10

  
AND dt.avg_page_space_used_in_percent<75 ORDER BY avg_fragmentation_in_percent DESC

  執(zhí)行后顯示AdventureWorks數(shù)據(jù)庫(kù)的索引碎片信息。



  圖 3 索引碎片信息


  使用下面的規(guī)則分析結(jié)果,你就可以找出哪里發(fā)生了索引碎片:


  1)ExternalFragmentation的值>10表示對(duì)應(yīng)的索引發(fā)生了外部碎片;


  2)InternalFragmentation的值<75表示對(duì)應(yīng)的索引發(fā)生了內(nèi)部碎片。


  如何整理索引碎片?


  有兩種整理索引碎片的方法:


  1)重組有碎片的索引:執(zhí)行下面的命令


  ALTER INDEX ALL ON TableName REORGANIZE


  2)重建索引:執(zhí)行下面的命令


  ALTER INDEX ALL ON TableName REBUILD WITH (FILLFACTOR=90,ONLINE=ON)


  也可以使用索引名代替這里的“ALL”關(guān)鍵字重組或重建單個(gè)索引,也可以使用SQL Server管理工作臺(tái)進(jìn)行索引碎片的整理。



  圖 4 使用SQL Server管理工作臺(tái)整理索引碎片


  什么時(shí)候用重組,什么時(shí)候用重建呢?


  當(dāng)對(duì)應(yīng)索引的外部碎片值介于10-15之間,內(nèi)部碎片值介于60-75之間時(shí)使用重組,其它情況就應(yīng)該使用重建。


  值得注意的是重建索引時(shí),索引對(duì)應(yīng)的表會(huì)被鎖定,但重組不會(huì)鎖表,因此在生產(chǎn)系統(tǒng)中,對(duì)大表重建索引要慎重,因?yàn)樵诖蟊砩蟿?chuàng)建索引可能會(huì)花幾個(gè)小時(shí),幸運(yùn)的是,從SQL Server 2005開(kāi)始,微軟提出了一個(gè)解決辦法,在重建索引時(shí),將ONLINE選項(xiàng)設(shè)置為ON,這樣可以保證重建索引時(shí)表仍然可以正常使用。


  雖然索引可以提高查詢(xún)速度,但如果你的數(shù)據(jù)庫(kù)是一個(gè)事務(wù)型數(shù)據(jù)庫(kù),大多數(shù)時(shí)候都是更新操作,更新數(shù)據(jù)也就意味著要更新索引,這個(gè)時(shí)候就要兼顧查詢(xún)和更新操作了,因?yàn)樵贠LTP數(shù)據(jù)庫(kù)表上創(chuàng)建過(guò)多的索引會(huì)降低整體數(shù)據(jù)庫(kù)性能。


  我給大家一個(gè)建議:如果你的數(shù)據(jù)庫(kù)是事務(wù)型的,平均每個(gè)表上不能超過(guò)5個(gè)索引,如果你的數(shù)據(jù)庫(kù)是數(shù)據(jù)倉(cāng)庫(kù)型,平均每個(gè)表可以創(chuàng)建10個(gè)索引都沒(méi)問(wèn)題。



  在前面我們介紹了如何正確使用索引,調(diào)整索引是見(jiàn)效最快的性能調(diào)優(yōu)方法,但一般而言,調(diào)整索引只會(huì)提高查詢(xún)性能。除此之外,我們還可以調(diào)整數(shù)據(jù)訪問(wèn)代碼和TSQL,本文就介紹如何以最優(yōu)的方法重構(gòu)數(shù)據(jù)訪問(wèn)代碼和TSQL。


  第四步:將TSQL代碼從應(yīng)用程序遷移到數(shù)據(jù)庫(kù)中


  也許你不喜歡我的這個(gè)建議,你或你的團(tuán)隊(duì)可能已經(jīng)有一個(gè)默認(rèn)的潛規(guī)則,那就是使用ORM(Object Relational Mapping,即對(duì)象關(guān)系映射)生成所有SQL,并將SQL放在應(yīng)用程序中,但如果你要優(yōu)化數(shù)據(jù)訪問(wèn)性能,或需要調(diào)試應(yīng)用程序性能問(wèn)題,我建議你將SQL代碼移植到數(shù)據(jù)庫(kù)上(使用存儲(chǔ)過(guò)程,視圖,函數(shù)和觸發(fā)器),原因如下:


  1、使用存儲(chǔ)過(guò)程,視圖,函數(shù)和觸發(fā)器實(shí)現(xiàn)應(yīng)用程序中SQL代碼的功能有助于減少應(yīng)用程序中SQL復(fù)制的弊端,因?yàn)楝F(xiàn)在只在一個(gè)地方集中處理SQL,為以后的代碼復(fù)用打下了良好的基礎(chǔ)。


  2、使用數(shù)據(jù)庫(kù)對(duì)象實(shí)現(xiàn)所有的TSQL有助于分析TSQL的性能問(wèn)題,同時(shí)有助于你集中管理TSQL代碼。


  3、將TS QL移植到數(shù)據(jù)庫(kù)上去后,可以更好地重構(gòu)TSQL代碼,以利用數(shù)據(jù)庫(kù)的高級(jí)索引特性。此外,應(yīng)用程序中沒(méi)了SQL代碼也將更加簡(jiǎn)潔。


  雖然這一步可能不會(huì)象前三步那樣立竿見(jiàn)影,但做這一步的主要目的是為后面的優(yōu)化步驟打下基礎(chǔ)。如果在你的應(yīng)用程序中使用ORM(如NHibernate)實(shí)現(xiàn)了數(shù)據(jù)訪問(wèn)例行程序,在測(cè)試或開(kāi)發(fā)環(huán)境中你可能發(fā)現(xiàn)它們工作得很好,但在生產(chǎn)數(shù)據(jù)庫(kù)上卻可能遇到問(wèn)題,這時(shí)你可能需要反思基于ORM的數(shù)據(jù)訪問(wèn)邏輯,利用TSQL對(duì)象實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)例行程序是一種好辦法,這樣做有更多的機(jī)會(huì)從數(shù)據(jù)庫(kù)角度來(lái)優(yōu)化性能。


  我向你保證,如果你花1-2人月來(lái)完成遷移,那以后肯定不止節(jié)約1-2人年的的成本。


  OK!假設(shè)你已經(jīng)照我的做的了,完全將TSQL遷移到數(shù)據(jù)庫(kù)上去了,下面就進(jìn)入正題吧!



  第五步:識(shí)別低效TSQL,采用最佳實(shí)踐重構(gòu)和應(yīng)用TSQL


  由于每個(gè)程序員的能力和習(xí)慣都不一樣,他們編寫(xiě)的TSQL可能風(fēng)格各異,部分代碼可能不是最佳實(shí)現(xiàn),對(duì)于水平一般的程序員可能首先想到的是編寫(xiě)TSQL實(shí)現(xiàn)需求,至于性能問(wèn)題日后再說(shuō),因此在開(kāi)發(fā)和測(cè)試時(shí)可能發(fā)現(xiàn)不了問(wèn)題。


  也有一些人知道最佳實(shí)踐,但在編寫(xiě)代碼時(shí)由于種種原因沒(méi)有采用最佳實(shí)踐,等到用戶發(fā)飆的那天才乖乖地重新埋頭思考最佳實(shí)踐。


  我覺(jué)得還是有必要介紹一下具有都有哪些最佳實(shí)踐。


  1、在查詢(xún)中不要使用“select *”


  (1)檢索不必要的列會(huì)帶來(lái)額外的系統(tǒng)開(kāi)銷(xiāo),有句話叫做“該省的則省”;


  (2)數(shù)據(jù)庫(kù)不能利用“覆蓋索引”的優(yōu)點(diǎn),因此查詢(xún)緩慢。


  2、在select清單中避免不必要的列,在連接條件中避免不必要的表


  (1)在select查詢(xún)中如有不必要的列,會(huì)帶來(lái)額外的系統(tǒng)開(kāi)銷(xiāo),特別是LOB類(lèi)型的列;


  (2)在連接條件中包含不必要的表會(huì)強(qiáng)制數(shù)據(jù)庫(kù)引擎檢索和匹配不需要的數(shù)據(jù),增加了查詢(xún)執(zhí)行時(shí)間。


  3、不要在子查詢(xún)中使用count()求和執(zhí)行存在性檢查


  (1)不要使用



SELECT column_list FROM table WHERE 0 < (SELECT count(*) FROM table2 WHERE ..)

  使用



SELECT column_list FROM table WHERE EXISTS (SELECT * FROM table2 WHERE ...)

  代替;


  (2)當(dāng)你使用count()時(shí),SQL Server不知道你要做的是存在性檢查,它會(huì)計(jì)算所有匹配的值,要么會(huì)執(zhí)行全表掃描,要么會(huì)掃描最小的非聚集索引;


  (3)當(dāng)你使用EXISTS時(shí),SQL Server知道你要執(zhí)行存在性檢查,當(dāng)它發(fā)現(xiàn)第一個(gè)匹配的值時(shí),就會(huì)返回TRUE,并停止查詢(xún)。類(lèi)似的應(yīng)用還有使用IN或ANY代替count()。


  4、避免使用兩個(gè)不同類(lèi)型的列進(jìn)行表的連接


  (1)當(dāng)連接兩個(gè)不同類(lèi)型的列時(shí),其中一個(gè)列必須轉(zhuǎn)換成另一個(gè)列的類(lèi)型,級(jí)別低的會(huì)被轉(zhuǎn)換成高級(jí)別的類(lèi)型,轉(zhuǎn)換操作會(huì)消耗一定的系統(tǒng)資源;


  (2)如果你使用兩個(gè)不同類(lèi)型的列來(lái)連接表,其中一個(gè)列原本可以使用索引,但經(jīng)過(guò)轉(zhuǎn)換后,優(yōu)化器就不會(huì)使用它的索引了。例如: 



SELECT column_list FROM small_table, large_table WHERE

  smalltable.float_column
= large_table.int_column

  在這個(gè)例子中,SQL Server會(huì)將int列轉(zhuǎn)換為float類(lèi)型,因?yàn)閕nt比f(wàn)loat類(lèi)型的級(jí)別低,large_table.int_column上的索引就不會(huì)被使用,但smalltable.float_column上的索引可以正常使用。


  5、避免死鎖


  (1)在你的存儲(chǔ)過(guò)程和觸發(fā)器中訪問(wèn)同一個(gè)表時(shí)總是以相同的順序;


  (2)事務(wù)應(yīng)經(jīng)可能地縮短,在一個(gè)事務(wù)中應(yīng)盡可能減少涉及到的數(shù)據(jù)量;


  (3)永遠(yuǎn)不要在事務(wù)中等待用戶輸入。


  6、使用“基于規(guī)則的方法”而不是使用“程序化方法”編寫(xiě)TSQL


  (1)數(shù)據(jù)庫(kù)引擎專(zhuān)門(mén)為基于規(guī)則的SQL進(jìn)行了優(yōu)化,因此處理大型結(jié)果集時(shí)應(yīng)盡量避免使用程序化的方法(使用游標(biāo)或UDF[User Defined Functions]處理返回的結(jié)果集) ;


  (2)如何擺脫程序化的SQL呢?有以下方法:


  - 使用內(nèi)聯(lián)子查詢(xún)替換用戶定義函數(shù);


  - 使用相關(guān)聯(lián)的子查詢(xún)替換基于游標(biāo)的代碼;


  - 如果確實(shí)需要程序化代碼,至少應(yīng)該使用表變量代替游標(biāo)導(dǎo)航和處理結(jié)果集。



  7、避免使用count(*)獲得表的記錄數(shù)


  (1)為了獲得表中的記錄數(shù),我們通常使用下面的SQL語(yǔ)句:



 SELECT COUNT(*) FROM dbo.orders

  這條語(yǔ)句會(huì)執(zhí)行全表掃描才能獲得行數(shù)。


  (2)但下面的SQL語(yǔ)句不會(huì)執(zhí)行全表掃描一樣可以獲得行數(shù):



SELECT rows FROM sysindexes

  
WHERE id = OBJECT_ID('dbo.Orders') AND indid < 2

  8、避免使用動(dòng)態(tài)SQL


  除非迫不得已,應(yīng)盡量避免使用動(dòng)態(tài)SQL,因?yàn)椋?/P>

  (1)動(dòng)態(tài)SQL難以調(diào)試和故障診斷;


  (2)如果用戶向動(dòng)態(tài)SQL提供了輸入,那么可能存在SQL注入風(fēng)險(xiǎn)。


  9、避免使用臨時(shí)表


  (1)除非卻有需要,否則應(yīng)盡量避免使用臨時(shí)表,相反,可以使用表變量代替;


  (2)大多數(shù)時(shí)候(99%),表變量駐扎在內(nèi)存中,因此速度比臨時(shí)表更快,臨時(shí)表駐扎在TempDb數(shù)據(jù)庫(kù)中,因此臨時(shí)表上的操作需要跨數(shù)據(jù)庫(kù)通信,速度自然慢。


  10、使用全文搜索搜索文本數(shù)據(jù),取代like搜索


  全文搜索始終優(yōu)于like搜索:


  (1)全文搜索讓你可以實(shí)現(xiàn)like不能完成的復(fù)雜搜索,如搜索一個(gè)單詞或一個(gè)短語(yǔ),搜索一個(gè)與另一個(gè)單詞或短語(yǔ)相近的單詞或短語(yǔ),或者是搜索同義詞;


  (2)實(shí)現(xiàn)全文搜索比實(shí)現(xiàn)like搜索更容易(特別是復(fù)雜的搜索);


  11、使用union實(shí)現(xiàn)or操作


  (1)在查詢(xún)中盡量不要使用or,使用union合并兩個(gè)不同的查詢(xún)結(jié)果集,這樣查詢(xún)性能會(huì)更好;


  (2)如果不是必須要不同的結(jié)果集,使用union all效果會(huì)更好,因?yàn)樗粫?huì)對(duì)結(jié)果集排序。


  12、為大對(duì)象使用延遲加載策略


  (1)在不同的表中存儲(chǔ)大對(duì)象(如VARCHAR(MAX),Image,Text等),然后在主表中存儲(chǔ)這些大對(duì)象的引用;


  (2)在查詢(xún)中檢索所有主表數(shù)據(jù),如果需要載入大對(duì)象,按需從大對(duì)象表中檢索大對(duì)象。


  13、使用VARCHAR(MAX),VARBINARY(MAX) 和 NVARCHAR(MAX)


  (1)在SQL Server 2000中,一行的大小不能超過(guò)800字節(jié),這是受SQL Server內(nèi)部頁(yè)面大小8KB的限制造成的,為了在單列中存儲(chǔ)更多的數(shù)據(jù),你需要使用TEXT,NTEXT或IMAGE數(shù)據(jù)類(lèi)型(BLOB);


  (2)這些和存儲(chǔ)在相同表中的其它數(shù)據(jù)不一樣,這些頁(yè)面以B-Tree結(jié)構(gòu)排列,這些數(shù)據(jù)不能作為存儲(chǔ)過(guò)程或函數(shù)中的變量,也不能用于字符串函數(shù),如REPLACE,CHARINDEX或SUBSTRING,大多數(shù)時(shí)候你必須使用READTEXT,WRITETEXT和UPDATETEXT;


  (3)為了解決這個(gè)問(wèn)題,在SQL Server 2005中增加了VARCHAR(MAX),VARBINARY(MAX) 和 NVARCHAR(MAX),這些數(shù)據(jù)類(lèi)型可以容納和BLOB相同數(shù)量的數(shù)據(jù)(2GB),和其它數(shù)據(jù)類(lèi)型使用相同的數(shù)據(jù)頁(yè);


  (4)當(dāng)MAX數(shù)據(jù)類(lèi)型中的數(shù)據(jù)超過(guò)8KB時(shí),使用溢出頁(yè)(在ROW_OVERFLOW分配單元中)指向源數(shù)據(jù)頁(yè),源數(shù)據(jù)頁(yè)仍然在IN_ROW分配單元中。


  14、在用戶定義函數(shù)中使用下列最佳實(shí)踐


  不要在你的存儲(chǔ)過(guò)程,觸發(fā)器,函數(shù)和批處理中重復(fù)調(diào)用函數(shù),例如,在許多時(shí)候,你需要獲得字符串變量的長(zhǎng)度,無(wú)論如何都不要重復(fù)調(diào)用LEN函數(shù),只調(diào)用一次即可,將結(jié)果存儲(chǔ)在一個(gè)變量中,以后就可以直接使用了。
 



  15、在存儲(chǔ)過(guò)程中使用下列最佳實(shí)踐


  (1)不要使用SP_xxx作為命名約定,它會(huì)導(dǎo)致額外的搜索,增加I/O(因?yàn)橄到y(tǒng)存儲(chǔ)過(guò)程的名字就是以SP_開(kāi)頭的),同時(shí)這么做還會(huì)增加與系統(tǒng)存儲(chǔ)過(guò)程名稱(chēng)沖突的幾率;


  (2)將Nocount設(shè)置為On避免額外的網(wǎng)絡(luò)開(kāi)銷(xiāo);


  (3)當(dāng)索引結(jié)構(gòu)發(fā)生變化時(shí),在EXECUTE語(yǔ)句中(第一次)使用WITH RECOMPILE子句,以便存儲(chǔ)過(guò)程可以利用最新創(chuàng)建的索引;


  (4)使用默認(rèn)的參數(shù)值更易于調(diào)試。


  16、在觸發(fā)器中使用下列最佳實(shí)踐


  (1)最好不要使用觸發(fā)器,觸發(fā)一個(gè)觸發(fā)器,執(zhí)行一個(gè)觸發(fā)器事件本身就是一個(gè)耗費(fèi)資源的過(guò)程;


  (2)如果能夠使用約束實(shí)現(xiàn)的,盡量不要使用觸發(fā)器;


  (3)不要為不同的觸發(fā)事件(Insert,Update和Delete)使用相同的觸發(fā)器;


  (4)不要在觸發(fā)器中使用事務(wù)型代碼。


  17、在視圖中使用下列最佳實(shí)踐


  (1)為重新使用復(fù)雜的TSQL塊使用視圖,并開(kāi)啟索引視圖;


  (2)如果你不想讓用戶意外修改表結(jié)構(gòu),使用視圖時(shí)加上SCHEMABINDING選項(xiàng);


  (3)如果只從單個(gè)表中檢索數(shù)據(jù),就不需要使用視圖了,如果在這種情況下使用視圖反倒會(huì)增加系統(tǒng)開(kāi)銷(xiāo),一般視圖會(huì)涉及多個(gè)表時(shí)才有用。


  18、在事務(wù)中使用下列最佳實(shí)踐


  (1)SQL Server 2005之前,在BEGIN TRANSACTION之后,每個(gè)子查詢(xún)修改語(yǔ)句時(shí),必須檢查@@ERROR的值,如果值不等于0,那么最后的語(yǔ)句可能會(huì)導(dǎo)致一個(gè)錯(cuò)誤,如果發(fā)生任何錯(cuò)誤,事務(wù)必須回滾。從SQL Server 2005開(kāi)始,Try..Catch..代碼塊可以處理TSQL中的事務(wù),因此在事務(wù)型代碼中最好加上Try…Catch…;


  (2)避免使用嵌套事務(wù),使用@@TRANCOUNT變量檢查事務(wù)是否需要啟動(dòng)(為了避免嵌套事務(wù));


  (3)盡可能晚啟動(dòng)事務(wù),提交和回滾事務(wù)要盡可能快,以減少資源鎖定時(shí)間。


  要完全列舉最佳實(shí)踐不是本文的初衷,當(dāng)你了解了這些技巧后就應(yīng)該拿來(lái)使用,否則了解了也沒(méi)有價(jià)值。此外,你還需要評(píng)審和監(jiān)視數(shù)據(jù)訪問(wèn)代碼是否遵循下列標(biāo)準(zhǔn)和最佳實(shí)踐。


  如何分析和識(shí)別你的TSQL中改進(jìn)的范圍?


  理想情況下,大家都想預(yù)防疾病,而不是等病發(fā)了去治療。但實(shí)際上這個(gè)愿望根本無(wú)法實(shí)現(xiàn),即使你的團(tuán)隊(duì)成員全都是專(zhuān)家級(jí)人物,我也知道你有進(jìn)行評(píng)審,但代碼仍然一團(tuán)糟,因此需要知道如何治療疾病一樣重要。


  首先需要知道如何診斷性能問(wèn)題,診斷就得分析TSQL,找出瓶頸,然后重構(gòu),要找出瓶頸就得先學(xué)會(huì)分析執(zhí)行計(jì)劃。



  理解查詢(xún)執(zhí)行計(jì)劃


  當(dāng)你將SQL語(yǔ)句發(fā)給SQL Server引擎后,SQL Server首先要確定最合理的執(zhí)行方法,查詢(xún)優(yōu)化器會(huì)使用很多信息,如數(shù)據(jù)分布統(tǒng)計(jì),索引結(jié)構(gòu),元數(shù)據(jù)和其它信息,分析多種可能的執(zhí)行計(jì)劃,最后選擇一個(gè)最佳的執(zhí)行計(jì)劃。


  可以使用SQL Server Management Studio預(yù)覽和分析執(zhí)行計(jì)劃,寫(xiě)好SQL語(yǔ)句后,點(diǎn)擊SQL Server Management Studio上的評(píng)估執(zhí)行計(jì)劃按鈕查看執(zhí)行計(jì)劃,如圖1所示。



  圖 1 在Management Studio中評(píng)估執(zhí)行計(jì)劃


  在執(zhí)行計(jì)劃圖中的每個(gè)圖標(biāo)代表計(jì)劃中的一個(gè)行為(操作),應(yīng)從右到左閱讀執(zhí)行計(jì)劃,每個(gè)行為都一個(gè)相對(duì)于總體執(zhí)行成本(100%)的成本百分比。


  在上面的執(zhí)行計(jì)劃圖中,右邊的那個(gè)圖標(biāo)表示在HumanResources表上的一個(gè)“聚集索引掃描”操作(閱讀表中所有主鍵索引值),需要100%的總體查詢(xún)執(zhí)行成本,圖中左邊那個(gè)圖標(biāo)表示一個(gè)select操作,它只需要0%的總體查詢(xún)執(zhí)行成本。


  下面是一些比較重要的圖標(biāo)及其對(duì)應(yīng)的操作:



  圖 2 常見(jiàn)的重要圖標(biāo)及對(duì)應(yīng)的操作


  注意執(zhí)行計(jì)劃中的查詢(xún)成本,如果說(shuō)成本等于100%,那很可能在批處理中就只有這個(gè)查詢(xún),如果在一個(gè)查詢(xún)窗口中有多個(gè)查詢(xún)同時(shí)執(zhí)行,那它們肯定有各自的成本百分比(小于100%)。


  如果想知道執(zhí)行計(jì)劃中每個(gè)操作詳細(xì)情況,將鼠標(biāo)指針移到對(duì)應(yīng)的圖標(biāo)上即可,你會(huì)看到類(lèi)似于下面的這樣一個(gè)窗口。



  圖 3 查看執(zhí)行計(jì)劃中行為(操作)的詳細(xì)信息


  這個(gè)窗口提供了詳細(xì)的評(píng)估信息,上圖顯示了聚集索引掃描的詳細(xì)信息,它要查找AdventureWorks數(shù)據(jù)庫(kù)HumanResources方案下Employee表中 Gender = ‘M’的行,它也顯示了評(píng)估的I/O,CPU成本。


  查看執(zhí)行計(jì)劃時(shí),我們應(yīng)該獲得什么信息


  當(dāng)你的查詢(xún)很慢時(shí),你就應(yīng)該看看預(yù)估的執(zhí)行計(jì)劃(當(dāng)然也可以查看真實(shí)的執(zhí)行計(jì)劃),找出耗時(shí)最多的操作,注意觀察以下成本通常較高的操作:


  1、表掃描(Table Scan)


  當(dāng)表沒(méi)有聚集索引時(shí)就會(huì)發(fā)生,這時(shí)只要?jiǎng)?chuàng)建聚集索引或重整索引一般都可以解決問(wèn)題。


  2、聚集索引掃描(Clustered Index Scan)


  有時(shí)可以認(rèn)為等同于表掃描,當(dāng)某列上的非聚集索引無(wú)效時(shí)會(huì)發(fā)生,這時(shí)只要?jiǎng)?chuàng)建一個(gè)非聚集索引就ok了。


  3、哈希連接(Hash Join)


  當(dāng)連接兩個(gè)表的列沒(méi)有被索引時(shí)會(huì)發(fā)生,只需在這些列上創(chuàng)建索引即可。


  4、嵌套循環(huán)(Nested Loops)


  當(dāng)非聚集索引不包括select查詢(xún)清單的列時(shí)會(huì)發(fā)生,只需要?jiǎng)?chuàng)建覆蓋索引問(wèn)題即可解決。


  5、RID查找(RID Lookup)


  當(dāng)你有一個(gè)非聚集索引,但相同的表上卻沒(méi)有聚集索引時(shí)會(huì)發(fā)生,此時(shí)數(shù)據(jù)庫(kù)引擎會(huì)使用行ID查找真實(shí)的行,這時(shí)一個(gè)代價(jià)高的操作,這時(shí)只要在該表上創(chuàng)建聚集索引即可。


  TSQL重構(gòu)真實(shí)的故事


  只有解決了實(shí)際的問(wèn)題后,知識(shí)才轉(zhuǎn)變?yōu)閮r(jià)值。當(dāng)我們檢查應(yīng)用程序性能時(shí),發(fā)現(xiàn)一個(gè)存儲(chǔ)過(guò)程比我們預(yù)期的執(zhí)行得慢得多,在生產(chǎn)數(shù)據(jù)庫(kù)中檢索一個(gè)月的銷(xiāo)售數(shù)據(jù)居然要50秒,下面就是這個(gè)存儲(chǔ)過(guò)程的執(zhí)行語(yǔ)句:


  exec uspGetSalesInfoForDateRange ‘1/1/2009’, 31/12/2009,’Cap’


  Tom受命來(lái)優(yōu)化這個(gè)存儲(chǔ)過(guò)程,下面是這個(gè)存儲(chǔ)過(guò)程的代碼:



 ALTER PROCEDURE uspGetSalesInfoForDateRange

  
@startYear DateTime,

  
@endYear DateTime,

  
@keyword nvarchar(50)

  
AS

  
BEGIN

  
SET NOCOUNT ON;

  
SELECT

  Name,

  ProductNumber,

  ProductRates.CurrentProductRate Rate,

  ProductRates.CurrentDiscount Discount,

  OrderQty Qty,

  dbo.ufnGetLineTotal(SalesOrderDetailID) Total,

  OrderDate,

  DetailedDescription

  
FROM

  Products
INNER JOIN OrderDetails

  
ON Products.ProductID = OrderDetails.ProductID

  
INNER JOIN Orders

  
ON Orders.SalesOrderID = OrderDetails.SalesOrderID

  
INNER JOIN ProductRates

  
ON

  Products.ProductID
= ProductRates.ProductID

  
WHERE

  OrderDate
between @startYear and @endYear

  
AND

  (

  ProductName
LIKE '' + @keyword + ' %' OR

  ProductName
LIKE '% ' + @keyword + ' ' + '%' OR

  ProductName
LIKE '% ' + @keyword + '%' OR

  Keyword
LIKE '' + @keyword + ' %' OR

  Keyword
LIKE '% ' + @keyword + ' ' + '%' OR

  Keyword
LIKE '% ' + @keyword + '%'

  )

  
ORDER BY

  ProductName

  
END

  
GO


  分析索引


  首先,Tom想到了審查這個(gè)存儲(chǔ)過(guò)程使用到的表的索引,很快他發(fā)現(xiàn)下面兩列的索引無(wú)故丟失了:


  OrderDetails.ProductID


  OrderDetails.SalesOrderID


  他在這兩個(gè)列上創(chuàng)建了非聚集索引,然后再執(zhí)行存儲(chǔ)過(guò)程:


  exec uspGetSalesInfoForDateRange ‘1/1/2009’, 31/12/2009 with recompile


  性能有所改變,但仍然低于預(yù)期(這次花了35秒),注意這里的with recompile子句告訴SQL Server引擎重新編譯存儲(chǔ)過(guò)程,重新生成執(zhí)行計(jì)劃,以利用新創(chuàng)建的索引。


  分析查詢(xún)執(zhí)行計(jì)劃


  Tom接下來(lái)查看了SQL Server Management Studio中的執(zhí)行計(jì)劃,通過(guò)分析,他找到了某些重要的線索:


  1、發(fā)生了一次表掃描,即使該表已經(jīng)正確設(shè)置了索引,而表掃描占據(jù)了總體查詢(xún)執(zhí)行時(shí)間的30%;


  2、發(fā)生了一個(gè)嵌套循環(huán)連接。


  Tom想知道是否有索引碎片,因?yàn)樗兴饕渲枚际钦_的,通過(guò)TSQL他知道了有兩個(gè)索引都產(chǎn)生了碎片,很快他重組了這兩個(gè)索引,于是表掃描消失了,現(xiàn)在執(zhí)行存儲(chǔ)過(guò)程的時(shí)間減少到25秒了。


  為了消除嵌套循環(huán)連接,他又在表上創(chuàng)建了覆蓋索引,時(shí)間進(jìn)一步減少到23秒。


  實(shí)施最佳實(shí)踐


  Tom發(fā)現(xiàn)有個(gè)UDF有問(wèn)題,代碼如下: 



ALTER FUNCTION [dbo].[ufnGetLineTotal]

  (

  
@SalesOrderDetailID int

  )

  
RETURNS money

  
AS

  
BEGIN

  
DECLARE @CurrentProductRate money

  
DECLARE @CurrentDiscount money

  
DECLARE @Qty int

  
SELECT

  
@CurrentProductRate = ProductRates.CurrentProductRate,

  
@CurrentDiscount = ProductRates.CurrentDiscount,

  
@Qty = OrderQty

  
FROM

  ProductRates
INNER JOIN OrderDetails ON

  OrderDetails.ProductID
= ProductRates.ProductID

  
WHERE

  OrderDetails.SalesOrderDetailID
= @SalesOrderDetailID

  
RETURN (@CurrentProductRate-@CurrentDiscount)*@Qty

  
END

  在計(jì)算訂單總金額時(shí)看起來(lái)代碼很程序化,Tom決定在UDF的SQL中使用內(nèi)聯(lián)SQL。


  dbo.ufnGetLineTotal(SalesOrderDetailID) Total -- 舊代碼


  (CurrentProductRate-CurrentDiscount)*OrderQty Total -- 新代碼


  執(zhí)行時(shí)間一下子減少到14秒了。


  在select查詢(xún)清單中放棄不必要的Text列


  為了進(jìn)一步提升性能,Tom決定檢查一下select查詢(xún)清單中使用的列,很快他發(fā)現(xiàn)有一個(gè)Products.DetailedDescription列是Text類(lèi)型,通過(guò)對(duì)應(yīng)用程序代碼的走查,Tom發(fā)現(xiàn)其實(shí)這一列的數(shù)據(jù)并不會(huì)立即用到,于是他將這一列從select查詢(xún)清單中取消掉,時(shí)間一下子從14秒減少到6秒,于是Tom決定使用一個(gè)存儲(chǔ)過(guò)程應(yīng)用延遲加載策略加載這個(gè)Text列。


  最后Tom還是不死心,認(rèn)為6秒也無(wú)法接受,于是他再次仔細(xì)檢查了SQL代碼,他發(fā)現(xiàn)了一個(gè)like子句,經(jīng)過(guò)反復(fù)研究他認(rèn)為這個(gè)like搜索完全可以用全文搜索替換,最后他用全文搜索替換了like搜索,時(shí)間一下子降低到1秒,至此Tom認(rèn)為調(diào)優(yōu)應(yīng)該暫時(shí)結(jié)束了。


  小結(jié)


  看起來(lái)我們介紹了好多種優(yōu)化數(shù)據(jù)訪問(wèn)的技巧,但大家要知道優(yōu)化數(shù)據(jù)訪問(wèn)是一個(gè)無(wú)止境的過(guò)程,同樣大家要相信一個(gè)信念,無(wú)論你的系統(tǒng)多么龐大,多么復(fù)雜,只要靈活運(yùn)用我們所介紹的這些技巧,你一樣可以馴服它們。下一篇將介紹高級(jí)索引和反范式化。



  經(jīng)過(guò)索引優(yōu)化,重構(gòu)TSQL后你的數(shù)據(jù)庫(kù)還存在性能問(wèn)題嗎?完全有可能,這時(shí)必須得找另外的方法才行。SQL Server在索引方面還提供了某些高級(jí)特性,可能你還從未使用過(guò),利用高級(jí)索引會(huì)顯著地改善系統(tǒng)性能,本文將從高級(jí)索引技術(shù)談起,另外還將介紹反范式化技術(shù)。


  第六步:應(yīng)用高級(jí)索引


  實(shí)施計(jì)算列并在這些列上創(chuàng)建索引


  你可能曾經(jīng)寫(xiě)過(guò)從數(shù)據(jù)庫(kù)查詢(xún)一個(gè)結(jié)果集的應(yīng)用程序代碼,對(duì)結(jié)果集中每一行進(jìn)行計(jì)算生成最終顯示輸出的信息。例如,你可能有一個(gè)查詢(xún)從數(shù)據(jù)庫(kù)檢索訂單信息,在應(yīng)用程序代碼中你可能已經(jīng)通過(guò)對(duì)產(chǎn)品和銷(xiāo)售量執(zhí)行算術(shù)操作計(jì)算出了總的訂單價(jià)格,但為什么你不在數(shù)據(jù)庫(kù)中執(zhí)行這些操作呢?


  請(qǐng)看下面這張圖,你可以通過(guò)指定一個(gè)公式將一個(gè)數(shù)據(jù)庫(kù)表列作為計(jì)算列,你的TSQL在查詢(xún)清單中包括這個(gè)計(jì)算列,SQL引擎將會(huì)應(yīng)用這個(gè)公式計(jì)算出這一列的值,在執(zhí)行查詢(xún)時(shí),數(shù)據(jù)庫(kù)引擎將會(huì)計(jì)算訂單總價(jià),并為計(jì)算列返回結(jié)果。



  圖 1 計(jì)算列


  使用計(jì)算列你可以將計(jì)算工作全部交給后端執(zhí)行,但如果表的行數(shù)太多可能計(jì)算性能也不高,如果計(jì)算列出現(xiàn)在Select查詢(xún)的where子句中情況會(huì)更糟,在這種情況下,為了匹配where子句指定的值,數(shù)據(jù)庫(kù)引擎不得不計(jì)算表中所有行中計(jì)算列的值,這是一個(gè)低效的過(guò)程,因?yàn)樗偸切枰頀呙杌蛉奂饕龗呙琛?/P>

  因此問(wèn)題就來(lái)了,如何提高計(jì)算列的性能呢?解決辦法是在計(jì)算列上創(chuàng)建索引,當(dāng)計(jì)算列上有索引后,SQL Server會(huì)提前計(jì)算結(jié)果,然后在結(jié)果之上構(gòu)建索引。此外,當(dāng)對(duì)應(yīng)列(計(jì)算列依賴(lài)的列)的值更新時(shí),計(jì)算列上的索引值也會(huì)更新。因此,在執(zhí)行查詢(xún)時(shí),數(shù)據(jù)庫(kù)引擎不會(huì)為結(jié)果集中的每一行都執(zhí)行一次計(jì)算公式,相反,通過(guò)索引可直接獲得計(jì)算列預(yù)先計(jì)算出的值,因此在計(jì)算列上創(chuàng)建一個(gè)索引將會(huì)加快查詢(xún)速度。


  提示:如果你想在計(jì)算列上創(chuàng)建索引,必須確保計(jì)算列上的公式不能包括任何“非確定的”函數(shù),例如getdate()就是一個(gè)非確定的函數(shù),因?yàn)槊看握{(diào)用它,它返回的值都是不一樣的。


  創(chuàng)建索引視圖


  你是否知道可以在視圖上創(chuàng)建索引?OK,不知道沒(méi)關(guān)系,看了我的介紹你就明白了。


  為什么要使用視圖?


  大家都知道,視圖本身不存儲(chǔ)任何數(shù)據(jù),只是一條編譯的select語(yǔ)句。數(shù)據(jù)庫(kù)會(huì)為視圖生成一個(gè)執(zhí)行計(jì)劃,視圖是可以重復(fù)使用的,因?yàn)閳?zhí)行計(jì)劃也可以重復(fù)使用。


  視圖本身不會(huì)帶來(lái)性能的提升,我曾經(jīng)以為它會(huì)“記住”查詢(xún)結(jié)果,但后來(lái)我才知道它除了是一個(gè)編譯了的查詢(xún)外,其它什么都不是,視圖根本記不住查詢(xún)結(jié)果,我敢打賭好多剛接觸SQL的人都會(huì)有這個(gè)錯(cuò)誤的想法。


  但是現(xiàn)在我要告訴你一個(gè)方法讓視圖記住查詢(xún)結(jié)果,其實(shí)非常簡(jiǎn)單,就是在視圖上創(chuàng)建索引就可以了。


  如果你在視圖上應(yīng)用了索引,視圖就成為索引視圖,對(duì)于一個(gè)索引視圖,數(shù)據(jù)庫(kù)引擎處理SQL,并在數(shù)據(jù)文件中存儲(chǔ)結(jié)果,和聚集表類(lèi)似,當(dāng)基礎(chǔ)表中的數(shù)據(jù)發(fā)生變化時(shí),SQL Server會(huì)自動(dòng)維護(hù)索引,因此當(dāng)你在索引視圖上查詢(xún)時(shí),數(shù)據(jù)庫(kù)引擎簡(jiǎn)單地從索引中查找值,速度當(dāng)然就很快了,因此在視圖上創(chuàng)建索引可以明顯加快查詢(xún)速度。


  但請(qǐng)注意,天下沒(méi)有免費(fèi)的午餐,創(chuàng)建索引視圖可以提升性能,當(dāng)基礎(chǔ)表中的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)庫(kù)引擎也會(huì)更新索引,因此,當(dāng)視圖要處理很多行,且要求和,當(dāng)數(shù)據(jù)和基礎(chǔ)表不經(jīng)常發(fā)生變化時(shí),就應(yīng)該考慮創(chuàng)建索引視圖。


  如何創(chuàng)建索引視圖?


  1)創(chuàng)建/修改視圖時(shí)指定SCHEMABINDING選項(xiàng):



REATE VIEW dbo.vOrderDetails

  
WITH SCHEMABINDING

  
AS

  
SELECT

  2)在視圖上創(chuàng)建一個(gè)唯一的聚集索引;


  3)視需要在視圖上創(chuàng)建一個(gè)非聚集索引。


  不是所有視圖上都可以創(chuàng)建索引,在視圖上創(chuàng)建索引存在以下限制:


  1)創(chuàng)建視圖時(shí)使用了SCHEMABINDING選項(xiàng),這種情況下,數(shù)據(jù)庫(kù)引擎不允許你改變表的基礎(chǔ)結(jié)構(gòu);


  2)視圖不能包含任何非確定性函數(shù),DISTINCT子句和子查詢(xún);


  3)視圖中的底層表必須由聚集索引(主鍵)。


  如果你發(fā)現(xiàn)你的應(yīng)用程序中使用的TSQL是用視圖實(shí)現(xiàn)的,但存在性能問(wèn)題,那此時(shí)給視圖加上索引可能會(huì)帶來(lái)性能的提升。


  為用戶定義函數(shù)(UDF)創(chuàng)建索引


  在用戶定義函數(shù)上也可以創(chuàng)建索引,但不能直接在它上面創(chuàng)建索引,需要?jiǎng)?chuàng)建一個(gè)輔助的計(jì)算列,公式就使用用戶定義函數(shù),然后在這個(gè)計(jì)算列字段上創(chuàng)建索引。具體步驟如下:


  1)首先創(chuàng)建一個(gè)確定性的函數(shù)(如果不存在的話),在函數(shù)定義中添加SCHEMABINDING選項(xiàng),如:



CREATE FUNCTION [dbo.ufnGetLineTotal]

  (

  
-- Add the parameters for the function here

  
@UnitPrice [money],

  
@UnitPriceDiscount [money],

  
@OrderQty [smallint]

  )

  
RETURNS money

  
WITH SCHEMABINDING

  
AS

  
BEGIN

  
return (((@UnitPrice*((1.0)-@UnitPriceDiscount))*@OrderQty))

  
END

  2)在目標(biāo)表上增加一個(gè)計(jì)算列,使用前面定義的函數(shù)作為該列的計(jì)算公式,如圖2所示。



CREATE FUNCTION [dbo.ufnGetLineTotal]

  (

  
-- Add the parameters for the function here

  
@UnitPrice [money],

  
@UnitPriceDiscount [money],

  
@OrderQty [smallint]

  )

  
RETURNS money

  
WITH SCHEMABINDING

  
AS

  
BEGIN

  
return (((@UnitPrice*((1.0)-@UnitPriceDiscount))*@OrderQty))

  
END
 


圖 2 指定UDF為計(jì)算列的結(jié)算公式

  3)在計(jì)算列上創(chuàng)建索引


  當(dāng)你的查詢(xún)中包括UDF時(shí),如果在該UDF上創(chuàng)建了以計(jì)算列為基礎(chǔ)的索引,特別是兩個(gè)表或視圖的連接條件中使用了UDF,性能都會(huì)有明顯的改善。


  在XML列上創(chuàng)建索引


  在SQL Server(2005和后續(xù)版本)中,XML列是以二進(jìn)制大對(duì)象(BLOB)形式存儲(chǔ)的,可以使用XQuery進(jìn)行查詢(xún),但如果沒(méi)有索引,每次查詢(xún)XML數(shù)據(jù)類(lèi)型時(shí)都非常耗時(shí),特別是大型XML實(shí)例,因?yàn)镾QL Server在運(yùn)行時(shí)需要分隔二進(jìn)制大對(duì)象評(píng)估查詢(xún)。為了提升XML數(shù)據(jù)類(lèi)型上的查詢(xún)性能,XML列可以索引,XML索引分為兩類(lèi)。


  主XML索引


  創(chuàng)建XML列上的主索引時(shí),SQL Server會(huì)切碎XML內(nèi)容,創(chuàng)建多個(gè)數(shù)據(jù)行,包括元素,屬性名,路徑,節(jié)點(diǎn)類(lèi)型和值等,創(chuàng)建主索引讓SQL Server更輕松地支持XQuery請(qǐng)求。下面是創(chuàng)建一個(gè)主XML索引的示例語(yǔ)法?!?/P>


CREATE PRIMARY XML INDEX
index_name
ON <object> ( xml_column )

  次要XML索引


  雖然XML數(shù)據(jù)已經(jīng)被切條,但SQL Server仍然要掃描所有切條的數(shù)據(jù)才能找到想要的結(jié)果,為了進(jìn)一步提升性能,還需要在主XML索引之上創(chuàng)建次要XML索引。有三種次要XML索引。


  1)“路徑”(Path)次要XML索引:使用.exist()方法確定一個(gè)特定的路徑是否存在時(shí)它很有用;


  2)“值”(Value)次要XML索引:用于執(zhí)行基于值的查詢(xún),但不知道完整的路徑或路徑包括通配符時(shí);


  3)“屬性”(Secondary)次要XML索引:知道路徑時(shí)檢索屬性的值。


  下面是一個(gè)創(chuàng)建次要XML索引的示例:



CREATE XML INDEX
index_name
ON <object> ( xml_column )
USING XML
INDEX primary_xml_index_name
FOR { VALUE | PATH | PROPERTY }

  請(qǐng)注意,上面講的原則是基礎(chǔ),如果盲目地在表上創(chuàng)建索引,不一定會(huì)提升性能,因?yàn)橛袝r(shí)在某些表的某些列上創(chuàng)建索引時(shí),可能會(huì)致使插入和更新操作變慢,當(dāng)這個(gè)表上有一個(gè)低選中性列時(shí)更是如此,同樣,當(dāng)表中的記錄很少(如<500)時(shí),如果在這樣的表上創(chuàng)建索引反倒會(huì)使數(shù)據(jù)檢索性能降低,因?yàn)閷?duì)于小表而言,全表掃描反而會(huì)更快,因此在創(chuàng)建索引時(shí)應(yīng)放聰明一點(diǎn)。



  第七步:應(yīng)用反范式化,使用歷史表和預(yù)計(jì)算列


  反范式化


  如果你正在為一個(gè)OLTA(在線事務(wù)分析)系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫(kù),主要指為只讀查詢(xún)優(yōu)化過(guò)的數(shù)據(jù)倉(cāng)庫(kù),你可以(和應(yīng)該)在你的數(shù)據(jù)庫(kù)中應(yīng)用反范式化和索引,也就是說(shuō),某些數(shù)據(jù)可以跨多個(gè)表存儲(chǔ),但報(bào)告和數(shù)據(jù)分析查詢(xún)?cè)谶@種數(shù)據(jù)庫(kù)上可能會(huì)更快。


  但如果你正在為一個(gè)OLTP(聯(lián)機(jī)事務(wù)處理)系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫(kù),這樣的數(shù)據(jù)庫(kù)主要執(zhí)行數(shù)據(jù)更新操作(包括插入/更新/刪除),我建議你至少實(shí)施第一、二、三范式,這樣數(shù)據(jù)冗余可以降到最低,數(shù)據(jù)存儲(chǔ)也可以達(dá)到最小化,可管理性也會(huì)好一點(diǎn)。


  無(wú)論我們?cè)贠LTP系統(tǒng)上是否應(yīng)用范式,在數(shù)據(jù)庫(kù)上總有大量的讀操作(即select查詢(xún)),當(dāng)應(yīng)用了所有優(yōu)化技術(shù)后,如果發(fā)現(xiàn)數(shù)據(jù)檢索操作仍然效率低下,此時(shí),你可能需要考慮應(yīng)用反范式設(shè)計(jì)了,但問(wèn)題是如何應(yīng)用反范式化,以及為什么應(yīng)用反范式化會(huì)提升性能?讓我們來(lái)看一個(gè)簡(jiǎn)單的例子,答案就在例子中。


  假設(shè)我們有兩個(gè)表OrderDetails(ID,ProductID,OrderQty) 和 Products(ID,ProductName)分別存儲(chǔ)訂單詳細(xì)信息和產(chǎn)品信息,現(xiàn)在要查詢(xún)某個(gè)客戶訂購(gòu)的產(chǎn)品名稱(chēng)和它們的數(shù)量,查詢(xún)SQL語(yǔ)句如下:



SELECT Products.ProductName,OrderQty

  
FROM OrderDetails INNER JOIN Products

  
ON OrderDetails.ProductID = Products.ProductID

  
WHERE SalesOrderID = 47057

  如果這兩個(gè)都是大表,當(dāng)你應(yīng)用了所有優(yōu)化技巧后,查詢(xún)速度仍然很慢,這時(shí)可以考慮以下反范式化設(shè)計(jì):


  1)在OrderDetails表上添加一列ProductName,并填充好數(shù)據(jù);


  2)重寫(xiě)上面的SQL語(yǔ)句



 SELECT ProductName,OrderQty

  
FROM OrderDetails

  
WHERE SalesOrderID = 47057

  注意在OrderDetails表上應(yīng)用了反范式化后,不再需要連接Products表,因此在執(zhí)行SQL時(shí),SQL引擎不會(huì)執(zhí)行兩個(gè)表的連接操作,查詢(xún)速度當(dāng)然會(huì)快一些。


  為了提高select操作性能,我們不得不做出一些犧牲,需要在兩個(gè)地方(OrderDetails 和 Products表)存儲(chǔ)相同的數(shù)據(jù)(ProductName),當(dāng)我們插入或更新Products 表中的ProductName字段時(shí),不得不同步更新OrderDetails表中的ProductName字段,此外,應(yīng)用這種反范式化設(shè)計(jì)時(shí)會(huì)增加存儲(chǔ)資源消耗。


  因此在實(shí)施反范式化設(shè)計(jì)時(shí),我們必須在數(shù)據(jù)冗余和查詢(xún)操作性能之間進(jìn)行權(quán)衡,同時(shí)在應(yīng)用反范式化后,我們不得不重構(gòu)某些插入和更新操作代碼。有一個(gè)重要的原則需要遵守,那就是只有當(dāng)你應(yīng)用了所有其它優(yōu)化技術(shù)都還不能將性能提升到理想情況時(shí)才使用反范式化。同時(shí)還需注意不能使用太多的反范式化設(shè)計(jì),那樣會(huì)使原本清晰的表結(jié)構(gòu)設(shè)計(jì)變得越來(lái)模糊。


  歷史表


  如果你的應(yīng)用程序中有定期運(yùn)行的數(shù)據(jù)檢索操作(如報(bào)表),如果涉及到大表的檢索,可以考慮定期將事務(wù)型規(guī)范化表中的數(shù)據(jù)復(fù)制到反范式化的單一的歷史表中,如利用數(shù)據(jù)庫(kù)的Job來(lái)完成這個(gè)任務(wù),并對(duì)這個(gè)歷史表建立合適的索引,那么周期性執(zhí)行的數(shù)據(jù)檢索操作可以遷移到這個(gè)歷史表上,對(duì)單個(gè)歷史表的查詢(xún)性能肯定比連接多個(gè)事務(wù)表的查詢(xún)速度要快得多。


  例如,假設(shè)有一個(gè)連鎖商店的月度報(bào)表需要3個(gè)小時(shí)才能執(zhí)行完畢,你被派去優(yōu)化這個(gè)報(bào)表,目的只有一個(gè):最小化執(zhí)行時(shí)間。那么你除了應(yīng)用其它優(yōu)化技巧外,還可以采取以下手段:


  1)使用反范式化結(jié)構(gòu)創(chuàng)建一個(gè)歷史表,并對(duì)銷(xiāo)售數(shù)據(jù)建立合適的索引;


  2)在SQL Server上創(chuàng)建一個(gè)定期執(zhí)行的操作,每隔24小時(shí)運(yùn)行一次,在半夜往歷史表中填充數(shù)據(jù);


  3)修改報(bào)表代碼,從歷史表獲取數(shù)據(jù)。


  創(chuàng)建定期執(zhí)行的操作


  按照下面的步驟在SQL Server中創(chuàng)建一個(gè)定期執(zhí)行的操作,定期從事務(wù)表中提取數(shù)據(jù)填充到歷史表中。


  1)首先確保SQL Server代理服務(wù)處于運(yùn)行狀態(tài);


  2)在SQL Server配置管理器中展開(kāi)SQL Server代理節(jié)點(diǎn),在“作業(yè)”節(jié)點(diǎn)上創(chuàng)建一個(gè)新作業(yè),在“常規(guī)”標(biāo)簽頁(yè)中,輸入作業(yè)名稱(chēng)和描述文字;


  3)在“步驟”標(biāo)簽頁(yè)中,點(diǎn)擊“新建”按鈕創(chuàng)建一個(gè)新的作業(yè)步驟,輸入名字和TSQL代碼,最后保存;


  4)切換到“調(diào)度”標(biāo)簽頁(yè),點(diǎn)擊“新建”按鈕創(chuàng)建一個(gè)新調(diào)度計(jì)劃;


  5)最后保存調(diào)度計(jì)劃。


  在數(shù)據(jù)插入和更新中提前執(zhí)行耗時(shí)的計(jì)算,簡(jiǎn)化查詢(xún)


  大多數(shù)情況下,你會(huì)看到你的應(yīng)用程序是一個(gè)接一個(gè)地執(zhí)行數(shù)據(jù)插入或更新操作,一次只涉及到一條記錄,但數(shù)據(jù)檢索操作可能同時(shí)涉及到多條記錄。


  如果你的查詢(xún)中包括一個(gè)復(fù)雜的計(jì)算操作,毫無(wú)疑問(wèn)這將導(dǎo)致整體的查詢(xún)性能下降,你可以考慮下面的解決辦法:


  1)在表中創(chuàng)建額外的一列,包含計(jì)算的值;


  2)為插入和更新事件創(chuàng)建一個(gè)觸發(fā)器,使用相同的計(jì)算邏輯計(jì)算值,計(jì)算完成后更新到新建的列;


  3)使用新創(chuàng)建的列替換查詢(xún)中的計(jì)算邏輯。


  實(shí)施完上述步驟后,插入和更新操作可能會(huì)更慢一點(diǎn),因?yàn)槊看尾迦牒透聲r(shí)觸發(fā)器都會(huì)執(zhí)行一下,但數(shù)據(jù)檢索操作會(huì)比之前快得多,因?yàn)閳?zhí)行查詢(xún)時(shí),數(shù)據(jù)庫(kù)引擎不會(huì)執(zhí)行計(jì)算操作了。


  小結(jié)


  至此,我們已經(jīng)應(yīng)用了索引,重構(gòu)TSQL,應(yīng)用高級(jí)索引,反范式化,以及歷史表加速數(shù)據(jù)檢索速度,但性能優(yōu)化是一個(gè)永無(wú)終點(diǎn)的過(guò)程,最下一篇文章中我們將會(huì)介紹如何診斷數(shù)據(jù)庫(kù)性能問(wèn)題。



  診斷數(shù)據(jù)庫(kù)性能問(wèn)題就象醫(yī)生診斷病人病情一樣,既要結(jié)合自己積累的經(jīng)驗(yàn),又要依靠科學(xué)的診斷報(bào)告,才能準(zhǔn)確地判斷問(wèn)題的根源在哪里。前面三篇文章我們介紹了許多優(yōu)化數(shù)據(jù)庫(kù)性能的方法,固然掌握優(yōu)化技巧很重要,但診斷數(shù)據(jù)庫(kù)性能問(wèn)題是優(yōu)化的前提,本文就介紹一下如何診斷數(shù)據(jù)庫(kù)性能問(wèn)題。


  第八步:使用SQL事件探查器和性能監(jiān)控工具有效地診斷性能問(wèn)題


  在SQL Server應(yīng)用領(lǐng)域SQL事件探查器可能是最著名的性能故障排除工具,大多數(shù)情況下,當(dāng)?shù)玫揭粋€(gè)性能問(wèn)題報(bào)告后,一般首先啟動(dòng)它進(jìn)行診斷。


  你可能已經(jīng)知道,SQL事件探查器是一個(gè)跟蹤和監(jiān)控SQL Server實(shí)例的圖形化工具,主要用于分析和衡量在數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行的TSQL性能,你可以捕捉服務(wù)器實(shí)例上的每個(gè)事件,將其保存到文件或表中供以后分析。例如,如果生產(chǎn)數(shù)據(jù)庫(kù)速度很慢,你可以使用SQL事件探查器查看哪些存儲(chǔ)過(guò)程執(zhí)行時(shí)耗時(shí)過(guò)多。


  SQL事件探查器的基本用法


  你可能已經(jīng)知道如何使用它,那么你可以跳過(guò)這一小節(jié),但我還是要重復(fù)一下,也許有許多新手閱讀本文。


  1)啟動(dòng)SQL事件探查器,連接到目標(biāo)數(shù)據(jù)庫(kù)實(shí)例,創(chuàng)建一個(gè)新跟蹤,指定一個(gè)跟蹤模板(跟蹤模板預(yù)置了一些事件和用于跟蹤的列),如圖1所示;



  圖 1 選擇跟蹤模板


  2)作為可選的一步,你還可以選擇特定事件和列



  圖 2 選擇跟蹤過(guò)程要捕捉的事件


  3)另外你還可以點(diǎn)擊“組織列”按鈕,在彈出的窗口中指定列的顯示順序,點(diǎn)擊“列過(guò)濾器”按鈕,在彈出的窗口中設(shè)置過(guò)濾器,例如,通過(guò)設(shè)置數(shù)據(jù)庫(kù)的名稱(chēng)(在like文本框中),只跟蹤特定的數(shù)據(jù)庫(kù),如果不設(shè)置過(guò)濾器,SQL事件探查器會(huì)捕捉所有的事件,跟蹤的信息會(huì)非常多,要找出有用的關(guān)鍵信息就如大海撈針。



  圖 3 過(guò)濾器設(shè)置


  4)運(yùn)行事件探查器,等待捕捉事件



  圖 4 運(yùn)行事件探查器


  5)跟蹤了足夠的信息后,停掉事件探查器,將跟蹤信息保存到一個(gè)文件中,或者保存到一個(gè)數(shù)據(jù)表中,如果保存到表中,需要指定表名,SQL Server會(huì)自動(dòng)創(chuàng)建表中的字段。



  圖 5 將探查器跟蹤數(shù)據(jù)保存到表中


  6)執(zhí)行下面的SQL查詢(xún)語(yǔ)句找出執(zhí)行代價(jià)較高的TSQL



SELECT TextData,Duration,…, FROM Table_Name ORDER BY

  Duration
DESC


  圖 6 查找成本最高的TSQL/存儲(chǔ)過(guò)程



  有效利用SQL事件探查器排除與性能相關(guān)的問(wèn)題


  SQL事件探查器除了可以用于找出執(zhí)行成本最高的那些TSQL或存儲(chǔ)過(guò)程外,還可以利用它許多強(qiáng)大的功能診斷和解決其它不同類(lèi)型的問(wèn)題。當(dāng)你收到一個(gè)性能問(wèn)題報(bào)告后,或者想提前診斷潛在的性能問(wèn)題時(shí)都可以使用SQL事件探查器。下面是一些SQL事件探查器使用技巧,或許對(duì)你有幫助。


  1)使用現(xiàn)有的模板,但需要時(shí)應(yīng)創(chuàng)建你自己的模板


  大多數(shù)時(shí)候現(xiàn)有的模板能夠滿足你的需求,但當(dāng)診斷一個(gè)特殊類(lèi)型的數(shù)據(jù)庫(kù)性能問(wèn)題時(shí)(如數(shù)據(jù)庫(kù)發(fā)生死鎖),你可能需要?jiǎng)?chuàng)建自己的模板,在這種情況下,你可以點(diǎn)擊“文件”*“模板”*“新建模板”創(chuàng)建一個(gè)新模板,需要指定模板名、事件和列。當(dāng)然也可以從現(xiàn)有的模板修改而來(lái)。



  圖 7 創(chuàng)建一個(gè)新模板



  圖 8 為新模板指定事件和列


  2)捕捉表掃描(TableScan)和死鎖(DeadLock)事件


  沒(méi)錯(cuò),你可以使用SQL事件探查器監(jiān)聽(tīng)這兩個(gè)有趣的事件。


  先假設(shè)一種情況,假設(shè)你已經(jīng)在你的測(cè)試庫(kù)上創(chuàng)建了合適的索引,經(jīng)過(guò)測(cè)試后,現(xiàn)在你已經(jīng)將索引應(yīng)用到生產(chǎn)服務(wù)器上了,但由于某些不明原因,生產(chǎn)數(shù)據(jù)庫(kù)的性能一直沒(méi)達(dá)到預(yù)期的那樣好,你推測(cè)執(zhí)行查詢(xún)時(shí)發(fā)生了表掃描,你希望有一種方法能夠檢測(cè)出是否真的發(fā)生了表掃描。


  再假設(shè)另一種情況,假設(shè)你已經(jīng)設(shè)置好了將錯(cuò)誤郵件發(fā)送到一個(gè)指定的郵件地址,這樣開(kāi)發(fā)團(tuán)隊(duì)可以第一時(shí)間獲得通知,并有足夠的信息進(jìn)行問(wèn)題診斷。某一天,你突然收到一封郵件說(shuō)數(shù)據(jù)庫(kù)發(fā)生了死鎖,并在郵件中包含了數(shù)據(jù)庫(kù)級(jí)別的錯(cuò)誤代碼,你需要找出是哪個(gè)TSQL創(chuàng)造了死鎖。


  這時(shí)你可以打開(kāi)SQL事件探查器,修改一個(gè)現(xiàn)有模板,使其可以捕捉表掃描和死鎖事件,修改好后,啟動(dòng)事件探查器,運(yùn)行你的應(yīng)用程序,當(dāng)再次發(fā)生表掃描和死鎖事件時(shí),事件探查器就可以捕捉到,利用跟蹤信息就可以找出執(zhí)行代價(jià)最高的TSQL。


  注意:從SQL Server日志文件中可能也可以找到死鎖事件記錄,在某些時(shí)候,你可能需要結(jié)合SQL Server日志和跟蹤信息才能找出引起數(shù)據(jù)庫(kù)死鎖的數(shù)據(jù)庫(kù)對(duì)象和TSQL。



  圖 9 檢測(cè)表掃描



  圖 10 檢測(cè)死鎖


  3)創(chuàng)建重放跟蹤


  某些時(shí)候,為了解決生產(chǎn)數(shù)據(jù)庫(kù)的性能問(wèn)題,你需要在測(cè)試服務(wù)器上模擬一個(gè)生產(chǎn)環(huán)境,這樣可以重演性能問(wèn)題。使用SQL事件探查器的TSQL_Replay模板捕捉生產(chǎn)庫(kù)上的事件,并將跟蹤信息保存為一個(gè).trace文件,然后在測(cè)試服務(wù)器上播放跟蹤文件就可以重現(xiàn)性能問(wèn)題是如何出現(xiàn)的了。



  圖 11 創(chuàng)建重放跟蹤


  4)創(chuàng)建優(yōu)化跟蹤


  數(shù)據(jù)庫(kù)調(diào)優(yōu)顧問(wèn)是一個(gè)偉大的工具,它可以給你提供很好的調(diào)優(yōu)建議,但要真正從它那獲得有用的建議,你需要模擬出與生產(chǎn)庫(kù)一樣的負(fù)載,也就是說(shuō),你需要在測(cè)試服務(wù)器上執(zhí)行相同的TSQL,打開(kāi)相同數(shù)量的并發(fā)連接,然后運(yùn)行調(diào)優(yōu)顧問(wèn)。SQL事件探查器的Tuning模板可以捕捉到這類(lèi)事件和列,使用Tuning模板運(yùn)行事件探查器,捕捉跟蹤信息并保存,通過(guò)調(diào)優(yōu)顧問(wèn)使用跟蹤文件在測(cè)試服務(wù)器上創(chuàng)建相同的負(fù)載。



  圖 12 創(chuàng)建Tuning事件探查器跟蹤


  5)捕捉ShowPlan在事件探查器中包括SQL執(zhí)行計(jì)劃


  有時(shí)相同的查詢(xún)?cè)跍y(cè)試服務(wù)器和生產(chǎn)服務(wù)器上的性能完全不一樣,假設(shè)你遇到這種問(wèn)題,你應(yīng)該仔細(xì)查看一下生產(chǎn)數(shù)據(jù)庫(kù)上TSQL的執(zhí)行計(jì)劃。但問(wèn)題是現(xiàn)在不能在生產(chǎn)庫(kù)上執(zhí)行這個(gè)TSQL,因?yàn)樗呀?jīng)有嚴(yán)重的性能問(wèn)題。這時(shí)SQL事件探查器可以派上用場(chǎng),在跟蹤屬性中選中ShowPlan或ShowPlan XML,這樣可以捕捉到SQL執(zhí)行計(jì)劃和TSQL文本,然后在測(cè)試服務(wù)器上執(zhí)行相同的TSQL,并比較兩者的執(zhí)行計(jì)劃。



  圖 13 指定捕捉執(zhí)行計(jì)劃



  圖 14 在事件探查器跟蹤中的執(zhí)行計(jì)劃



  使用性能監(jiān)視工具(PerfMon)診斷性能問(wèn)題


  當(dāng)你的數(shù)據(jù)庫(kù)遇到性能問(wèn)題時(shí),大多數(shù)時(shí)候使用SQL事件探查器就能夠診斷和找出引起性能問(wèn)題的背后原因了,但有時(shí)SQL事件探查器并不是萬(wàn)能的。


  例如,在生產(chǎn)庫(kù)上使用SQL事件探查器分析查詢(xún)執(zhí)行時(shí)間時(shí),對(duì)應(yīng)的TSQL執(zhí)行很慢(假設(shè)需要10秒),但同樣的TSQL在測(cè)試服務(wù)器上執(zhí)行時(shí)間卻只要200毫秒,通過(guò)分析執(zhí)行計(jì)劃和數(shù)據(jù)列,發(fā)現(xiàn)它們都沒(méi)有太大的差異,因此在生產(chǎn)庫(kù)上肯定有其它問(wèn)題,那該如何揪出這些問(wèn)題呢?


  此時(shí)性能監(jiān)視工具(著名的PerfMon)可以幫你一把,它可以定期收集硬件和軟件相關(guān)的統(tǒng)計(jì)數(shù)據(jù),還有它是內(nèi)置于Windows操作系統(tǒng)的一個(gè)免費(fèi)的工具。


  當(dāng)你向SQL Server數(shù)據(jù)庫(kù)發(fā)送一條TSQL語(yǔ)句,會(huì)產(chǎn)生許多相關(guān)的執(zhí)行參與者,包括TSQL執(zhí)行引擎,服務(wù)器緩存,SQL優(yōu)化器,輸出隊(duì)列,CPU,磁盤(pán)I/O等,只要這些參與者任何一環(huán)執(zhí)行節(jié)奏沒(méi)有跟上,最終的查詢(xún)執(zhí)行時(shí)間就會(huì)變長(zhǎng),使用性能監(jiān)視工具可以對(duì)這些參與者進(jìn)行觀察,以找出根本原因。


  使用性能監(jiān)視工具可以創(chuàng)建多個(gè)不同的性能計(jì)數(shù)器,通過(guò)圖形界面分析計(jì)數(shù)器日志,此外還可以將性能計(jì)數(shù)器日志和SQL事件探查器跟蹤信息結(jié)合起來(lái)分析。


  性能監(jiān)視器基本用法介紹


  Windows內(nèi)置了許多性能監(jiān)視計(jì)數(shù)器,安裝SQL Server時(shí)會(huì)添加一個(gè)SQL Server性能計(jì)數(shù)器,下面是創(chuàng)建一個(gè)性能計(jì)數(shù)器日志的過(guò)程。


  1)在SQL事件探查器中啟動(dòng)性能監(jiān)視工具(“工具”*“性能監(jiān)視器”);



  圖 15 啟動(dòng)性能監(jiān)視工具


  2)點(diǎn)擊“計(jì)數(shù)器日志”*“新建日志設(shè)置”創(chuàng)建一個(gè)新的性能計(jì)數(shù)器日志



  圖 16 創(chuàng)建一個(gè)性能計(jì)數(shù)器日志


  指定日志文件名,點(diǎn)擊“確定”。



  圖 17 為性能計(jì)數(shù)器日志指定名字


  3)點(diǎn)擊“添加計(jì)數(shù)器”按鈕,選擇一個(gè)需要的計(jì)數(shù)器



  圖 18 為性能計(jì)數(shù)器日志指定計(jì)數(shù)器


  4)從列表中選擇要監(jiān)視的對(duì)象和對(duì)應(yīng)的計(jì)數(shù)器,點(diǎn)擊“關(guān)閉”



  圖 19 指定對(duì)象和對(duì)應(yīng)的計(jì)數(shù)器


  5)選擇的計(jì)數(shù)器應(yīng)顯示在窗體中



  圖 20 指定計(jì)數(shù)器


  6)點(diǎn)擊“日志文件”標(biāo)簽,再點(diǎn)擊“配置”按鈕,指定日志文件保存位置,如果需要現(xiàn)在還可以修改日志文件名



  圖 21 指定性能計(jì)數(shù)器日志文件保存位置


  7)點(diǎn)擊“調(diào)度”標(biāo)簽,指定一個(gè)時(shí)間讀取計(jì)數(shù)器性能,寫(xiě)入日志文件,也可以選擇“手動(dòng)”啟動(dòng)和停止計(jì)數(shù)器日志。



  圖 22 指定性能計(jì)數(shù)器日志運(yùn)行時(shí)間


  8)點(diǎn)擊“常規(guī)”標(biāo)簽,指定收集計(jì)數(shù)器數(shù)據(jù)的間隔時(shí)間



  圖 23 設(shè)置計(jì)數(shù)器間隔采樣時(shí)間


  9)點(diǎn)擊“確定”,選擇剛剛創(chuàng)建的計(jì)數(shù)器日志,點(diǎn)擊右鍵啟動(dòng)它。



  圖 24 啟動(dòng)性能計(jì)數(shù)器日志


  10)為了查看日志數(shù)據(jù),再次打開(kāi)性能監(jiān)視工具,點(diǎn)擊查看日志圖標(biāo)(紅色),在“源”標(biāo)簽上選中“日志文件”單選按鈕,點(diǎn)擊“添加”按鈕添加一個(gè)日志文件。



  圖 25 查看性能計(jì)數(shù)器日志


  11)默認(rèn)情況下,在日志輸出中只有三個(gè)計(jì)數(shù)器被選中,點(diǎn)擊“數(shù)據(jù)”標(biāo)簽可以追加其它計(jì)數(shù)器。



  圖 26 查看日志數(shù)據(jù)時(shí)追加計(jì)數(shù)器


  12)點(diǎn)擊“確定”,返回圖形化的性能計(jì)數(shù)器日志輸出界面



  圖 27 查看性能計(jì)數(shù)器日志



  關(guān)聯(lián)性能計(jì)數(shù)器日志和SQL事件探查器跟蹤信息進(jìn)行深入的分析


  通過(guò)SQL事件探查器可以找出哪些SQL執(zhí)行時(shí)間過(guò)長(zhǎng),但它卻不能給出導(dǎo)致執(zhí)行時(shí)間過(guò)長(zhǎng)的上下文信息,但性能監(jiān)視工具可以提供獨(dú)立組件的性能統(tǒng)計(jì)數(shù)據(jù)(即上下文信息),它們正好互補(bǔ)。


  如果相同的查詢(xún)?cè)谏a(chǎn)庫(kù)和測(cè)試庫(kù)上的執(zhí)行時(shí)間差別過(guò)大,那說(shuō)明測(cè)試服務(wù)器的負(fù)載,環(huán)境和查詢(xún)執(zhí)行上下文都和生產(chǎn)服務(wù)器不一樣,因此需要一種方法來(lái)模擬生產(chǎn)服務(wù)器上的查詢(xún)執(zhí)行上下文,這時(shí)就需要結(jié)合SQL事件探查器的跟蹤信息和性能監(jiān)視工具的性能計(jì)數(shù)器日志。


  將二者結(jié)合起來(lái)分析可以更容易找出性能問(wèn)題的根本原因,例如,你可能發(fā)現(xiàn)在生產(chǎn)服務(wù)器上每次查詢(xún)都需要10秒,CPU利用率達(dá)到了100%,這時(shí)就應(yīng)該放下SQL調(diào)優(yōu),先調(diào)查一下為什么CPU利用率會(huì)上升到100%。


  關(guān)聯(lián)SQL事件探查器跟蹤信息和性能計(jì)數(shù)器日志的步驟如下:


  1)創(chuàng)建性能計(jì)數(shù)器日志,包括下列常見(jiàn)的性能計(jì)數(shù)器,指定“手動(dòng)”方式啟動(dòng)和停止計(jì)數(shù)器日志:


  --網(wǎng)絡(luò)接口\輸出隊(duì)列長(zhǎng)度


  --處理器\%處理器時(shí)間


  --SQL Server:緩沖管理器\緩沖區(qū)緩存命中率


  --SQL Server:緩沖管理器\頁(yè)面生命周期


  --SQL Server:SQL統(tǒng)計(jì)\批量請(qǐng)求數(shù)/秒


  --SQL Server:SQL統(tǒng)計(jì)\SQL 編譯


  --SQL Server:SQL統(tǒng)計(jì)\SQL 重新編譯/秒


  創(chuàng)建好性能計(jì)數(shù)器日志,但不啟動(dòng)它。


  2)使用SQL事件探查器TSQL Duration模板創(chuàng)建一個(gè)跟蹤,添加“開(kāi)始時(shí)間”和“結(jié)束時(shí)間”列跟蹤,同時(shí)啟動(dòng)事件探查器跟蹤和前一步創(chuàng)建的性能計(jì)數(shù)器日志;


  3)跟蹤到足夠信息后,同時(shí)停掉SQL事件探查器跟蹤和性能計(jì)數(shù)器日志,將SQL事件探查器跟蹤信息保存為一個(gè).trc文件;


  4)關(guān)閉SQL事件探查器跟蹤窗口,再使用事件探查器打開(kāi).trc文件,點(diǎn)擊“文件”*“導(dǎo)入性能數(shù)據(jù)”關(guān)聯(lián)性能計(jì)數(shù)器日志,此時(shí)會(huì)打開(kāi)一個(gè)文件瀏覽器窗口,選擇剛剛保存的性能計(jì)數(shù)器日志文件進(jìn)行關(guān)聯(lián);


  5)在打開(kāi)的窗口中選擇所有計(jì)數(shù)器,點(diǎn)擊“確定”,你將會(huì)看到下圖所示的界面,它同時(shí)顯示SQL事件探查器的跟蹤信息和性能計(jì)數(shù)器日志;



  圖 28 關(guān)聯(lián)SQL事件探查器和性能監(jiān)視工具輸出


  6)在事件探查器跟蹤信息輸出中選擇一條TSQL,你將會(huì)看到一個(gè)紅色豎條,這代表這條TSQL執(zhí)行時(shí)相關(guān)計(jì)數(shù)器的統(tǒng)計(jì)數(shù)據(jù)位置,同樣,點(diǎn)擊性能計(jì)數(shù)器日志輸出曲線中高于正常值的點(diǎn),你會(huì)看到對(duì)應(yīng)的TSQL在SQL事件探查器輸出中也是突出顯示的。


  我相信你學(xué)會(huì)如何關(guān)聯(lián)這兩個(gè)工具的輸出數(shù)據(jù)后,一定會(huì)覺(jué)得非常方便和有趣。


  小結(jié)


  診斷SQL Server性能問(wèn)題的工具和技術(shù)有很多,例如查看SQL Server日志文件,利用調(diào)優(yōu)顧問(wèn)(DTA)獲得調(diào)優(yōu)建議,無(wú)論使用哪種工具,你都需要深入了解內(nèi)部的細(xì)節(jié)原因,只有找出最根本的原因之后,解決性能問(wèn)題才會(huì)得心應(yīng)手。


  本系列最后一篇將介紹如何優(yōu)化數(shù)據(jù)文件和應(yīng)用分區(qū)。



  優(yōu)化技巧主要是面向DBA的,但我認(rèn)為即使是開(kāi)發(fā)人員也應(yīng)該掌握這些技巧,因?yàn)椴皇敲總€(gè)開(kāi)發(fā)團(tuán)隊(duì)都配有專(zhuān)門(mén)的DBA的。


  第九步:合理組織數(shù)據(jù)庫(kù)文件組和文件


  創(chuàng)建SQL Server數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)服務(wù)器會(huì)自動(dòng)在文件系統(tǒng)上創(chuàng)建一系列的文件,之后創(chuàng)建的每一個(gè)數(shù)據(jù)庫(kù)對(duì)象實(shí)際上都是存儲(chǔ)在這些文件中的。SQL Server有下面三種文件:


  1).mdf文件


  這是最主要的數(shù)據(jù)文件,每個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)主數(shù)據(jù)文件,所有系統(tǒng)對(duì)象都存儲(chǔ)在主數(shù)據(jù)文件中,如果不創(chuàng)建次要數(shù)據(jù)文件,所有用戶對(duì)象(用戶創(chuàng)建的數(shù)據(jù)庫(kù)對(duì)象)也都存儲(chǔ)在主數(shù)據(jù)文件中。


  2).ndf文件


  這些都是次要數(shù)據(jù)文件,它們是可選的,它們存儲(chǔ)的都是用戶創(chuàng)建的對(duì)象。


  3).ldf文件


  這些是事務(wù)日志文件,數(shù)量從一到幾個(gè)不等,它里面存儲(chǔ)的是事務(wù)日志。


  默認(rèn)情況下,創(chuàng)建SQL Server數(shù)據(jù)庫(kù)時(shí)會(huì)自動(dòng)創(chuàng)建主數(shù)據(jù)文件和事務(wù)日志文件,當(dāng)然也可以修改這兩個(gè)文件的屬性,如保存路徑。


  文件組


  為了便于管理和獲得更好的性能,數(shù)據(jù)文件通常都進(jìn)行了合理的分組,創(chuàng)建一個(gè)新的SQL Server數(shù)據(jù)庫(kù)時(shí),會(huì)自動(dòng)創(chuàng)建主文件組,主數(shù)據(jù)文件就包含在主文件組中,主文件組也被設(shè)為默認(rèn)組,因此所有新創(chuàng)建的用戶對(duì)象都自動(dòng)存儲(chǔ)在主文件組中(具體說(shuō)就是存儲(chǔ)在主數(shù)據(jù)文件中)。


  如果你想將你的用戶對(duì)象(表、視圖、存儲(chǔ)過(guò)程和函數(shù)等)存儲(chǔ)在次要數(shù)據(jù)文件中,那需要:


  1)創(chuàng)建一個(gè)新的文件組,并將其設(shè)為默認(rèn)文件組;


  2)創(chuàng)建一個(gè)新的數(shù)據(jù)文件(.ndf),將其歸于第一步創(chuàng)建的新文件組中。


  以后創(chuàng)建的對(duì)象就會(huì)全部存儲(chǔ)在次要文件組中了。


  注意:事務(wù)日志文件不屬于任何文件組。


  文件/文件組組織最佳實(shí)踐


  如果你的數(shù)據(jù)庫(kù)不大,那么默認(rèn)的文件/文件組應(yīng)該就能滿足你的需要,但如果你的數(shù)據(jù)庫(kù)變得很大時(shí)(假設(shè)有1000MB),你可以(應(yīng)該)對(duì)文件/文件組進(jìn)行調(diào)整以獲得更好的性能,調(diào)整文件/文件組的最佳實(shí)踐內(nèi)容如下:


  1)主文件組必須完全獨(dú)立,它里面應(yīng)該只存儲(chǔ)系統(tǒng)對(duì)象,所有的用戶對(duì)象都不應(yīng)該放在主文件組中。主文件組也不應(yīng)該設(shè)為默認(rèn)組,將系統(tǒng)對(duì)象和用戶對(duì)象分開(kāi)可以獲得更好的性能;


  2)如果有多塊硬盤(pán),可以將每個(gè)文件組中的每個(gè)文件分配到每塊硬盤(pán)上,這樣可以實(shí)現(xiàn)分布式磁盤(pán)I/O,大大提高數(shù)據(jù)讀寫(xiě)速度;


  3)將訪問(wèn)頻繁的表及其索引放到一個(gè)單獨(dú)的文件組中,這樣讀取表數(shù)據(jù)和索引都會(huì)更快;


  4)將訪問(wèn)頻繁的包含Text和Image數(shù)據(jù)類(lèi)型的列的表放到一個(gè)單獨(dú)的文件組中,最好將其中的Text和Image列數(shù)據(jù)放在一個(gè)獨(dú)立的硬盤(pán)中,這樣檢索該表的非Text和Image列時(shí)速度就不會(huì)受Text和Image列的影響;


  5)將事務(wù)日志文件放在一個(gè)獨(dú)立的硬盤(pán)上,千萬(wàn)不要和數(shù)據(jù)文件共用一塊硬盤(pán),日志操作屬于寫(xiě)密集型操作,因此保證日志寫(xiě)入具有良好的I/O性能非常重要;


  6)將“只讀”表單獨(dú)放到一個(gè)獨(dú)立的文件組中,同樣,將“只寫(xiě)”表單獨(dú)放到一個(gè)文件組中,這樣只讀表的檢索速度會(huì)更快,只寫(xiě)表的更新速度也會(huì)更快;


  7)不要過(guò)度使用SQL Server的“自動(dòng)增長(zhǎng)”特性,因?yàn)樽詣?dòng)增長(zhǎng)的成本其實(shí)是很高的,設(shè)置“自動(dòng)增長(zhǎng)”值為一個(gè)合適的值,如一周,同樣,也不要過(guò)度頻繁地使用“自動(dòng)收縮”特性,最好禁用掉自動(dòng)收縮,改為手工收縮數(shù)據(jù)庫(kù)大小,或使用調(diào)度操作,設(shè)置一個(gè)合理的時(shí)間間隔,如一個(gè)月。



  第十步:在大表上應(yīng)用分區(qū)


  什么是表分區(qū)?


  表分區(qū)就是將大表拆分成多個(gè)小表,以免檢索數(shù)據(jù)時(shí)掃描的數(shù)據(jù)太多,這個(gè)思想?yún)⒖剂恕胺侄沃钡睦碚摗?/P>

  當(dāng)你的數(shù)據(jù)庫(kù)中有一個(gè)大表(假設(shè)有上百萬(wàn)行記錄),如果其它優(yōu)化技巧都用上了,但查詢(xún)速度仍然非常慢時(shí),你就應(yīng)該考慮對(duì)這個(gè)表進(jìn)行分區(qū)了。首先來(lái)看一下分區(qū)的類(lèi)型:


  水平分區(qū):假設(shè)有一個(gè)表包括千萬(wàn)行記錄,為了便于理解,假設(shè)表有一個(gè)自動(dòng)增長(zhǎng)的主鍵字段(如id),我們可以將表拆分成10個(gè)獨(dú)立的分區(qū)表,每個(gè)分區(qū)包含100萬(wàn)行記錄,分區(qū)就要依據(jù)id字段的值實(shí)施,即第一個(gè)分區(qū)包含id值從1-1000000的記錄,第二個(gè)分區(qū)包含1000001-2000000的記錄,以此類(lèi)推。這種以水平方向分割表的方式就叫做水平分區(qū)。


  垂直分區(qū):假設(shè)有一個(gè)表的列數(shù)和行數(shù)都非常多,其中某些列被經(jīng)常訪問(wèn),其余的列不是經(jīng)常訪問(wèn)。由于表非常大,所有檢索操作都很慢,因此需要基于頻繁訪問(wèn)的列進(jìn)行分區(qū),這樣我們可以將這個(gè)大表拆分成多個(gè)小表,每個(gè)小表由大表的一部分列組成,這種垂直拆分表的方法就叫做垂直分區(qū)。


  另一個(gè)垂直分區(qū)的原則是按有索引的列無(wú)索引列進(jìn)行拆分,但這種分區(qū)法需要小心,因?yàn)槿绻魏尾樵?xún)都涉及到檢索這兩個(gè)分區(qū),SQL引擎不得不連接這兩個(gè)分區(qū),那樣的話性能反而會(huì)低。


  本文主要對(duì)水平分區(qū)做一介紹。


  分區(qū)最佳實(shí)踐


  1)將大表分區(qū)后,將每個(gè)分區(qū)放在一個(gè)獨(dú)立的文件中,并將這個(gè)文件存放在獨(dú)立的硬盤(pán)上,這樣數(shù)據(jù)庫(kù)引擎可以同時(shí)并行檢索多塊硬盤(pán)上的不同數(shù)據(jù)文件,提高并發(fā)讀寫(xiě)速度;


  2)對(duì)于歷史數(shù)據(jù),可以考慮基于歷史數(shù)據(jù)的“年齡”進(jìn)行分區(qū),例如,假設(shè)表中存儲(chǔ)的是訂單數(shù)據(jù),可以使用訂單日期列作為分區(qū)的依據(jù),如將每年的訂單數(shù)據(jù)做成一個(gè)分區(qū)。


  如何分區(qū)?


  假設(shè)Order表中包含了四年(1999-2002)的訂單數(shù)據(jù),有上百萬(wàn)的記錄,那如果要對(duì)這個(gè)表進(jìn)行分區(qū),采取的步驟如下:


  1)添加文件組


  使用下面的命令創(chuàng)建一個(gè)文件組:


  ALTER DATABASE OrderDB ADD FILEGROUP [1999]


  ALTER DATABASE OrderDB ADD FILE (NAME = N'1999', FILENAME


  = N'C:\OrderDB\1999.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) TO


  FILEGROUP [1999]


  通過(guò)上面的語(yǔ)句我們添加了一個(gè)文件組1999,然后增加了一個(gè)次要數(shù)據(jù)文件“C:\OrderDB\1999.ndf”到這個(gè)文件組中。


  使用上面的命令再創(chuàng)建三個(gè)文件組2000,2001和2002,每個(gè)文件組存儲(chǔ)一年的銷(xiāo)售數(shù)據(jù)。


  2)創(chuàng)建分區(qū)函數(shù)


  分區(qū)函數(shù)是定義分界點(diǎn)的一個(gè)對(duì)象,使用下面的命令創(chuàng)建分區(qū)函數(shù):


  CREATE PARTITION FUNCTION FNOrderDateRange (DateTime) AS


  RANGE LEFT FOR VALUES ('19991231', '20001231', '20011231')


  上面的分區(qū)函數(shù)指定:


  DateTime<=1999/12/31的記錄進(jìn)入第一個(gè)分區(qū);


  DateTime > 1999/12/31 且 <= 2000/12/31的記錄進(jìn)入第二個(gè)分區(qū);


  DateTime > 2000/12/31 且 <= 2001/12/31的記錄進(jìn)入第三個(gè)分區(qū);


  DateTime > 2001/12/31的記錄進(jìn)入第四個(gè)分區(qū)。


  RANGE LEFT指定應(yīng)該進(jìn)入左邊分區(qū)的邊界值,例如小于或等于1999/12/31的值都應(yīng)該進(jìn)入第一個(gè)分區(qū),下一個(gè)值就應(yīng)該進(jìn)入第二個(gè)分區(qū)了。如果使用RANGE RIGHT,邊界值以及大于邊界值的值都應(yīng)該進(jìn)入右邊的分區(qū),因此在這個(gè)例子中,邊界值2000/12/31就應(yīng)該進(jìn)入第二個(gè)分區(qū),小于這個(gè)邊界值的值就應(yīng)該進(jìn)入第一個(gè)分區(qū)。


  3)創(chuàng)建分區(qū)方案


  通過(guò)分區(qū)方案在表/索引的分區(qū)和存儲(chǔ)它們的文件組之間建立映射關(guān)系。創(chuàng)建分區(qū)方案的命令如下:


  CREATE PARTITION SCHEME OrderDatePScheme AS PARTITION FNOrderDateRange


  TO ([1999], [2000], [2001], [2002])


  在上面的命令中,我們指定了:


  第一個(gè)分區(qū)應(yīng)該進(jìn)入1999文件組;


  第二個(gè)分區(qū)就進(jìn)入2000文件組;


  第三個(gè)分區(qū)進(jìn)入2001文件組;


  第四個(gè)分區(qū)進(jìn)入2002文件組。


  4)在表上應(yīng)用分區(qū)


  至此,我們定義了必要的分區(qū)原則,現(xiàn)在需要做的就是給表分區(qū)了。首先使用DROP INDEX命令刪除表上現(xiàn)有的聚集索引,通常主鍵上有聚集索引,如果是刪除主鍵上的索引,還可以通過(guò)DROP CONSTRAINT刪除主鍵來(lái)間接刪除主鍵上的索引,如下面的命令刪除PK_Orders主鍵:


  ALTER TABLE Orders DROP CONSTRAINT PK_Orders;


  在分區(qū)方案上重新創(chuàng)建聚集索引,命令如下:


  CREATE UNIQUE CLUSTERED INDEX PK_Orders ON Orders(OrderDate) ON


  OrderDatePScheme (OrderDate)


  假設(shè)OrderDate列的數(shù)據(jù)在表中是唯一的,表將基于分區(qū)方案OrderDatePScheme被分區(qū),最終被分成四個(gè)小的部分,存放在四個(gè)文件組中。如果你對(duì)如何分區(qū)還有不清楚的地方,建議你去看看微軟的官方文章“SQL Server 2005中的分區(qū)表和索引”(地址:http://msdn.microsoft.com/en-us/library/ms345146%28SQL.90%29.aspx)。



  第十一步:使用TSQL模板更好地管理DBMS對(duì)象(額外的一步)


  為了更好地管理DBMS對(duì)象(存儲(chǔ)過(guò)程,函數(shù),視圖,觸發(fā)器等),需要遵循一致的結(jié)構(gòu),但由于某些原因(主要是時(shí)間限制),我們未能維護(hù)一個(gè)一致的結(jié)構(gòu),因此后來(lái)遇到性能問(wèn)題或其它原因需要重新調(diào)試這些代碼時(shí),那感覺(jué)就像是做噩夢(mèng)。


  為了幫助大家更好地管理DBMS對(duì)象,我創(chuàng)建了一些TSQL模板,利用這些模板你可以快速地開(kāi)發(fā)出結(jié)構(gòu)一致的DBMS對(duì)象。


  如果你的團(tuán)隊(duì)有人專(zhuān)門(mén)負(fù)責(zé)檢查團(tuán)隊(duì)成員編寫(xiě)的TSQL代碼,在這些模板中專(zhuān)門(mén)有一個(gè)“審查”段落用來(lái)描寫(xiě)審查意見(jiàn)。


  我提交幾個(gè)常見(jiàn)的DBMS對(duì)象模板,它們是:


   Template_StoredProcedure.txt:存儲(chǔ)過(guò)程模板(http://www.codeproject.com/KB/database/OrganizeFilesAndPartition/Template_StoredProcedure.txt)


   Template_View.txt:視圖模板(http://www.codeproject.com/KB/database/OrganizeFilesAndPartition/Template_Trigger.txt)


   Template_Trigger.txt:觸發(fā)器模板(http://www.codeproject.com/KB/database/OrganizeFilesAndPartition/Template_ScalarFunction.txt)


   Template_ScalarFunction.txt:標(biāo)量函數(shù)模板(http://www.codeproject.com/KB/database/OrganizeFilesAndPartition/Template_TableValuedFunction.txt)


   emplate_TableValuedFunction.txt:表值函數(shù)模板(http://www.codeproject.com/KB/database/OrganizeFilesAndPartition/Template_View.txt)


  1)如何創(chuàng)建模板?


   首先下載前面給出的模板代碼,然打開(kāi)SQL Server管理控制臺(tái),點(diǎn)擊“查看”*“模板瀏覽器”;


   點(diǎn)擊“存儲(chǔ)過(guò)程”節(jié)點(diǎn),點(diǎn)擊右鍵,在彈出的菜單中選擇“新建”*“模板”,為模板取一個(gè)易懂的名字;


   在新創(chuàng)建的模板上點(diǎn)擊右鍵,選擇“編輯”,在彈出的窗口中輸入身份驗(yàn)證信息,點(diǎn)擊“連接”;


   連接成功后,在編輯器中打開(kāi)下載的Template_StoredProcedure.txt,拷貝文件中的內(nèi)容粘貼到新建的模板中,然后點(diǎn)擊“保存”。


  上面是創(chuàng)建一個(gè)存儲(chǔ)過(guò)程模板的過(guò)程,創(chuàng)建其它DBMS對(duì)象過(guò)程類(lèi)似。


  2)如何使用模板?


  創(chuàng)建好模板后,下面就演示如何使用模板了。


   首先在模板瀏覽器中,雙擊剛剛創(chuàng)建的存儲(chǔ)過(guò)程模板,彈出身份驗(yàn)證對(duì)話框,輸入對(duì)應(yīng)的身份信息,點(diǎn)擊“連接”;


   連接成功后,模板將會(huì)在編輯器中打開(kāi),變量將會(huì)賦上適當(dāng)?shù)闹?


   按Ctrl+Shift+M為模板指定值,如下圖所示;



  圖 1 為模板參數(shù)指定值


   點(diǎn)擊“OK”,然后在SQL Server管理控制臺(tái)中選擇目標(biāo)數(shù)據(jù)庫(kù),然后點(diǎn)擊“執(zhí)行”按鈕;


  如果一切順利,存儲(chǔ)過(guò)程就創(chuàng)建成功了。你可以根據(jù)上面的步驟創(chuàng)建其它DBMS對(duì)象。


  小結(jié)


  優(yōu)化講究的是一種“心態(tài)”,在優(yōu)化數(shù)據(jù)庫(kù)性能時(shí),首先要相信性能問(wèn)題總是可以解決的,然后就是結(jié)合經(jīng)驗(yàn)和最佳實(shí)踐努力進(jìn)行優(yōu)化,最重要的是要盡量預(yù)防性能問(wèn)題的發(fā)生,在開(kāi)發(fā)和部署期間,要利用一切可利用的技術(shù)和經(jīng)驗(yàn)進(jìn)行提前評(píng)估,千萬(wàn)不要等問(wèn)題出現(xiàn)了才去想辦法解決,在開(kāi)發(fā)期間多花一個(gè)小時(shí)實(shí)施最佳實(shí)踐,最后可能會(huì)給你節(jié)約上百小時(shí)的故障診斷和排除時(shí)間,要學(xué)會(huì)聰明地工作,而不是辛苦地工作!


 


該文章在 2011/3/15 0:25:33 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

久久久亚洲s m束缚捆绑| 色噜噜狠狠综曰曰曰图片| 秋霞鲁丝片无码一区二区84| gogogo在线高清免费完整版| 日本不卡三区| 最近2024中文字幕第一页视频| 69影院在线观看国产精品| 人人色人人爱在线观看97| 国产人妻一区二区三区色戒乐| 亚洲网站国产精品| 四虎在线永久免费观看| 一个人www久久久不卡国产精品一区二区 | 在线岛国爱片免费无码AV| 欧美日韩一区二区线看免费| 欧美日韩视频在线观看综合网| 在线精品国产蜜月一区二区三区| 播五月开心婷婷综合| 国产精品一区二区天堂| 日韩视频中文字幕久久| 久久亚洲中文字幕宅男| 一级一级人与动毛片免费 | 亚洲欧美日韩欧美中文字幕| 精品一区精品二区日韩欧| 日日噜噜夜夜狠狠久久丁香五月亚洲高清毛片一区二区 | 久章草在线视频播放成人| 性一交一刮一伦一色一情孩| 粉嫩萝控精品福利网站| 奇米色欧美一区二区三区| 亚洲欧美国产乱熟| 国内一区二区精品日美无码妖精视频| 精品特黄人妻一区二区三区| 国产成人精品午夜二三区麻豆| 国产日韩在线亚洲字幕中文| JAPANESE国产高清在线观看| 成人国产三级视频在线观看| 亚洲aⅴ婷婷五月产av中文 | 北条麻妃99精品青春久久| 国内视频精品极品在线播放| 亚洲特级黄片视频| 麻豆国产美女精品久久| 乌克兰美女高潮呻吟| 日韩激情影院| 亚洲一级av黄色片| 国产免费一区二区在线看| 麻豆精品成人一区二区免费| 欧美亚洲精品网站| 亚洲AV手机专区久久精品| 热门事件黑料网| 国产福利永久不卡在线观看| 日本综合另类欧美日韩| 成人av一区二区三区| 成人国产精品麻豆| 日韩美中免费Av| 国产一级毛片特级国产片| 欧美精品亚洲综合自拍图片| 国产无人区一码二码三码mba| 欧美日韩国产图片区一区| 欧美日韩另类国产欧美日韩一级| 亚洲精品成人高潮在线观看| 在线观看第一页欧美| 亚洲国产精品肉丝丝袜99| 亚洲国产真实视频网站| 亚洲国产在视频线精品视频二代 | 日韩精品欧美大片中文字幕在线| 国产亚洲一区二区三区在线观看 | 任你干草精品视频免费国产| 国产理论片在线播放| 中文字幕精品亚洲一区1080P| 久久久人妻一区二区| 国产一区二区在线爱| 老司国产精品视频免费观看| 一本色道久在线综合| 国产A级黄片下载| 成人无码区免费a∨视频| 国产频99热精品在线| 国产性短视频在线观看| 五月天色悠悠中文字幕| 日韩毛片免费专区| 惠民福利欧美喷潮久久久XXXXx| 在线A毛片免费视频观看| 99久久老熟妇仑| 黄色电影一级免费看| 成人午夜免费观看区| 亚洲天堂不卡av| 日韩一级在线不卡| 乱公和我做爽死我视频| 国产精品粉嫩嫩在线观看| 亚洲高清精品bd在线观看| 天天躁恨恨躁夜躁2020| 成人A级毛片免费观看AV网站| 精品国产一级A片黄毛网站 | 日韩欧美国产成人自拍| 国产女人大黑β片仑乱老女人| 青娱极品视觉盛宴老司机| 午夜影院在线成人| 国内成人一区二区| 激情欧美日本国产高清| 国产精品吹潮在线观看中文| 一区二区三区av天堂| 国产成人调教视频在线观看| 日本欧美视频一区| 国产精品免费在线一区二区 | 色婷婷狠狠18禁久久| 日韩无码高清视频aa| 在线A毛片免费视频观看| 亚洲熟女少妇16p| 成人14欧美片免费| 亚洲欧美精品综合在线| 99久久精品蜜臀av| 亚洲男女天堂| 欧美一级A√在线观看| 亚洲熟妇无?v在线观看| 国产亚洲欧美在线综合视频 | 久久亚洲欧美视频1025| 国产精品吹潮在线观看中文 | 国产亚洲经典三级| 久久精品国产亚洲av麻豆甜| 欧美l日韩国产一级视频| 亚洲韩国AV每日在线观看 | 亚洲日本三级最新在线不卡| 制服丝袜极品尤物喷水国产精品| 青青青在线视频国产| 少妇无码aⅴ无码专区| 国产又黄又硬又猛的视频| 久久伊人日本免费区| 国产精品美女冒白浆| 惠民福利亚洲韩国欧美一区二区三区| AV天堂永久资源网AV天堂| 欧美日韩高清精品一区二区| 黄色片免费观看亚洲无码一| 91亚洲国产精品视频久久久| 好色先生TV官方下载| 成人免费一级| 国产69精品亚洲一级片| 一二三区精品亚洲欧美播放| 久久精品国产亚洲?v麻豆欧| 成年男男无码A∨片在| 阴茎插阴道黄色视频软件| 精品国产午夜激无码毛片| 亚洲精品久久久口爆吞精| 亚洲欧洲日本精品一区| 国产成人精品福利在线播放| 国产69精品久久久久人妻| 亚洲色诱妓女爱搞视频网页| 亚洲精品无码福利国产在线观看| 国产成人拍精品视频网| 国产中文欧美日韩| 亚洲AV无码国产一成久久精品国产成人综合 | 亚洲精品黄色毛片| 男女啪啪视频免费在线观看| 亚洲日韩免费一二区| 亚洲伊人色欲综合网无码| 日本jizz在线播放| 成人精品第一区二区| 久久精品无码影视| 99久久老熟妇仑| 伊人久久大香线蕉午夜av一区| 在线亚洲AV成人无码三区| 欧美精品成人AAA区二区三区| 热99re8久久免费视精品频| 草莓榴社区免费观看| 国产萌白酱甜味弥漫在线视频| 亚洲精品成人高潮在线观看| 欧美特级黄色片99片| 制服欧美另类中文字幕第三页 | 一本久道久久综合狠狠躁AⅤ| 精品国产乱码久久久久久小说 | 亚洲无码福利在线观看| 国产激情午夜电影| 日本一级婬片A片人缓交| 久久无码精品国产蜜臀sv| 动漫精品中文字幕制服一区 | 2018国产精产品在线不卡| 久久免费视频7免费观看| 亚洲女同成αV人片在线观看| 日韩手机看片福利精品| 露脸国产精品自产拍在线观看| 国产精品色窝窝| 欧美特级黄色片99片| 一区视频高清不卡在线播放| 亚洲精品在线一卡| 久久久久人妻精品一区果冻| 国内久久精品无码专区| 岛国强奸资源网站在线免费观看| 欧美无遮挡很黄裸交视频| 人人添人人澡| 国产丝袜首页在线观看| 免费A级毛片无码出奶水| 久久久一级片播放| 久久精品一品道久久精品网站| 91成人免费亚洲一二三在线| 欧美午夜福利片在线观看| 2024年最新国产高潮国产高潮久久久91 | 欧美波霸在线观看视频| 激情综合丁香婷婷六月| 欧美精品成人AAA区二区三区| 国产看一级毛片| 亚洲国产精品福利网站| 欧美专区亚洲专区电驴| 亚洲最新午夜福利网址| 免费jizz在线播放| 波多野结衣人妻在一波| 亚洲春色第一页| 交换邻居女朋友在线观看| 成年中文字幕在线观看| 国产69精品久久久久人妻| 亚洲爆乳aaa无码专区按摩| 在线观看片免费人成视 | 乡下一级一级人与动一级毛片| 久久欧美AⅤ无码精品色| 在线视频高清免费观看| 亚洲 中文字幕 国产 欧美 乱 国产| 成年人免费观看的视频| 五十路中文字幕| 国产99精品在线观看免费看片软件在线下载 | 高清国内自产素人大屁股| 欧美人区二区三区| 男生女生一起差差的app大全动画| 911国产在线观看一本| 精品国产午夜福利一区二区三区| 国产在线一区二区午夜| 亚洲图片欧美狂野国产图片小说视频| 欧美一级特黄高清大片做受| 拍国产乱人伦偷精品视频果冻传媒| 欧洲a老妇女黄大片| 亚洲自拍中文字幕av| 日本jizz在线播放| 精品无码线一区二区三区| 大帝在线视频一区二区| 最新免费在线观看的av网站| 久久国产精品最新一区二区| 在线精品亚洲欧美日韩| 国产精品免费在线一区二区| 久久这里只有精品视频国产6| 国产精品无码a∨| 久久久久黄色| 亚洲av无码乱码在线观看野外!| 日韩精品色综合| 久久这里只精品国产99re66加勒比| a在线观看无码片| 亚洲成人免费久久| 国内视频精品极品在线播放| 日韩在线一区二区免费视频| 国产日韩欧美精品久久久一区二区| 国产黄色网站短视频| 精品国产福利一区二区三区| 在线视频播放免费视频| 超碰97在线播放| 自慰网站18禁喷水污污污| 韩国美女爽快一级毛片黄| 欧美午夜剧场久久精品网 | 久久久久久亚洲AV成人网站| 国产精品免费ā v片在线观看| 亚洲综合久久2024| 国产激情午夜理伦片| 波多野结衣初尝黑人138| 影视自拍高清无码| 成人无码区免费A片视频韩国| 国产福利在线免费| 四虎三级高潮电影| 亚洲一级无码毛片免费视频| 亚洲综合无码久久久久久| 高中生破处视频| 最新日韩AV高清专区| 欧美人成综合视频在线| 亚洲国产精品嫩草影院| 国产午夜精品视频免费不卡69堂| 日本aa免费电影| 黄色永久网站| 色婷婷综合中文字幕色噜噜狠狠色综合久久 | JAPANESE国产高清在线观看| 日本男人天堂网站| 国产精品久久久久尤物| 拍国产乱人伦偷精品视频果冻传媒| 国产小视频国产精品| 擦拨华人永久免费| 91人妻一区二区三区| 亚洲aⅴ婷婷五月产av中文| 精品久久夫妻探花| 无码专区韩国在线不卡| 人人干人人上| 欧美日韩激情一区二区三区在线欣赏免费视频| 99re国产美女在线| 在线观看片免费人成视| 国产亚洲欧美日韩在线天堂区| 欧美foot丝交足视频网站| 日韩欧美不卡中文字幕| 国产精品成人h视频| 黄色网址免费在线观看| 免费女人18毛片a级毛片| 9re热这里只有精品免费视频| 清纯唯美亚洲欧美中文字幕| 免费福利网站18| 色狠狠亚洲爱综合网站| 少妇高潮毛又多又黑| 欧美午夜理论在线观看| 日韩囯产va精品一区二区久| 99视频免费精品视频在线观看| AV无码免费一区二区三区不卡 | 久久久久久亚洲AV成人网站| 欧洲a老妇女黄大片| 国产一级毛片特级国产片| 日韩无码色网视频网站| 99久久精品蜜臀av| 国产精品一区二区三区电影| 国产乱对刺激对白视频在线| 一级做a爰片特黄在线观看一级| 男人扒开女人秘桶到爽电影| 成人免费观看高潮视频软件| 久久精品国产亚洲av尤物| 亚洲男女天堂| 狠狠爱亚洲综合久久| 2024年最新国产高潮国产高潮久久久91| 顶级欧美丰满熟妇xxxxx视频| 一级毛片黄一区二区| 激情婷婷丁香在线视频播放| 免费无遮挡一类视频网站在线观看| 午夜福利视频2024国产精品福利在线观看 | 男人又大又硬又粗视频| 18禁免费无遮挡丝瓜视频| 上海塑料门窗出产发卖| 色综合久久久久无码专免费 | 伊人久久精品欧美| 91p导航正在播放在线| 国产精品虐乳在线播放| 18禁免费无遮挡丝瓜视频| a毛片久久免费观看| 无码AV手机在线观看免播放器| 日韩欧美人妻综合| 中文字幕51精品乱码在线| 大家可以在这里国产精品第一| 亚洲一级av黄色片| 久久久精品人妻一二三区无码蜜臀/\ | 99久久人妻精品视频| 成人午夜福利大片| a级毛片免费全部播放经典| 国产日韩欧美综合不卡在线观看| 欧美老妇肥唇BBB| 不卡黄片免费在线观看| 国内精品自线在拍大学生| 国产亚洲av无码乱码在线观看 | 少爷被小混混c呻吟双腿大张视频| 国产 亚洲 无码 激情 | 亚洲?v十国产精品| 亚洲欧美综合二区| 清纯唯美五月亚洲一二三四| 日本精品www一区二区三区| 看aⅴ在线观看国产黄色| 婷婷综合在线| 欧美一区亚洲成人| 日韩在线精品亚洲| 国产精品一区二区AⅤ波多野| 亚洲精品成人高潮在线观看| 久久久久亚洲精品无码网址| 亚洲欧美SUV精品| 亚洲成人国产综合| 国产亚洲欧美在线综合视频| 国产麻豆一区二区三区v视界| 亚洲成av人无码不卡影片资讯| 最新系列国产专区亚洲国产| 国产日产欧产综合亚洲午夜无码AV毛片久久| 久久久无码国产精品丝袜| 555影视在线观看免费完整版| 麻豆国产AV偷闻女邻居内李| 毛片视频在线免费| 亚洲电影成人av| 免费视频网站无遮挡无码| 永久免费视频观看| 精品无码里番在线观看| 久久人妻精品懂色| 亚洲一区二区黄色免费观看| 国产精品无码一区二区四区在线| 91精品久久久久网| 产成 人 在线观看 亚洲| 国产91在线播放九色竹菊| 大尺度国产私拍福利在线观看| 最新无码高清视频在线观看| 久久久久黄色| 大胸女教师冲田杏梨在线观看| 欧美成人人人97超碰超爽| 老司国产精品视频免费观看| 亚洲人成图片网站| 国产女主播下乡勾搭大爷av| 大香蕉在线播放| 中文字幕精品视频在线| 女优电影福利网站大全| 日韩147a级av在线| 亚洲?v十国产精品| 97日韩精品中文字幕| 狠狠色丁香婷婷综合视频| 国产一级黄色片久久| 91肥熟国产老肥熟女| 别揉我奶头~嗯~啊~网站在线观看| 黄色网址免费在线观看| 亚洲免费无码中文| 国产亚洲一区二区三区在线观看 | 了解最新黄色国产网站| 丁香五月婷婷亚洲| 善良的妺妺hd高清中文| 人妻系列久久精品一区二区| 18禁免费无遮挡丝瓜视频| 日韩无码高清一区二区三区| 国产精品国产精品国产精品| 天天日夜夜艹| 国产福利永久不卡在线观看| 亚洲免费一区| 国产包臀裙AV在线播放| 国产91在线播放九色竹菊| 亚洲国产免费播放| 国产午夜人成在线视频麻豆| 亚洲AV久久久久久久无码| 久久涩亚洲国产综合精品一区不卡 | 亚洲国产在视频线精品视频二代| 永久免费视频观看| 成人影片aⅴ毛片免费观看| 欧美 日韩 中字 国产| 久久伊人一本亚洲| 欧美性大战xxxxx久久久√| 色草莓视频在线观看| 国产无套推油按摩女视频推油| 精品一线天粉嫩无码| 粗大猛烈进出呻吟声视频| 國產福利片在線觀看| 日韩高清av在线播放| 产一级 片内射视频播放免费 | 日本最新一区二区三区在线| 亚洲成aⅴ人在线观看| 国产精品99久久久久久蜜桃| 亚洲步兵中文字幕在线| 香蕉久久夜色精品国产| 亚洲一卡2卡3卡4卡国产网站| 成人国产av软件| 国产福利短视频影院| 日韩成年人AU高清无码| 国产视频一区在线免费观看 | 久久久久久 小视频| 国产性色强伦免费视频| 亚洲黄色一级二级| 久久久久亚洲A√无码| 亚洲日本三级最新在线不卡| 成人av尤物麻豆一区二区| 久久久久亚洲精品无码网址| 剧情演绎国产一区在线观看| 成人免费无码大片?毛片抽搐| 91精品三级网在线播放| 黄色影院免费观看| 久久免费视频7免费观看| 激情五月av在线| 国产乱人伦中文无无码视频试看| 亚洲最大成人综合一区二区| 国产乱子伦在线观看| 国产精品制服诱惑中文字幕| 国产日韩精品一区二区hd| 国精品伦一区一区三区有限公司| 亚洲国内精品熟女| 国产精品第 1页| 亚洲av成熟成人国产一区| 欧色A级成人免费三級| 国产精品一区二区色爱| 久久天天躁狠狠躁| 欧美精品成人AAA区二区三区| 国产二区精品福利| 在线高清免费无码不卡av| 精品人妻无码一区二区三区不卡| 国产在线91观看免费观看| 精品国产一区二区三区性| 日韩欧美日韩成人在线| 公司里的艳妇们都熟透了| 久久99国产6精品久久久| 久久无码精品一区二区日韩A∨| kk久精品毛片A级蜜桃| 国产一级a毛一级a看免费视频一区二区三区91躁 | 视频一区视频二区亚洲免费观看| 動漫精品啪啪一區二區三區| 国产精品一区二区三区啊啊动漫| 无在线不卡高清一二区岛国| 香蕉网站视频高清在线观看| 久久精品视频大全| 欧洲亚洲无码一区二区| 在线亚洲AV成人无码三区| 人妻一区在线观看中文字幕| 国产免费观看欧美| 日本A优不卡在线播放| 亚洲电影成人av| 国产精品一区二区AⅤ波多野 | 一本色道无码在线观看| 不戴套太紧了1v1h| 一级一级人与动毛片免费| 大家可以在这里国产精品第一| 婷婷久久青草热一区二区| 成人久久高清一区二区三区| 亚洲aⅴ婷婷五月产av中文| 99亚洲性爱视频| 久久久伊人网| 免费人成在线观看成人片| 欧美啪啪福利视频尤物网| 免费精品国自产拍在线播放| 最新国精品产露脸偷拍视频| 国产精品视频啪啪网| 苍井优一级毛片免费观看| 产一级 片内射视频播放免费 | 黄h视频在线观看视频| 国产成人欧美看片在线观看| 亚洲春色第一页| 动漫精品中文字幕制服一区| 欧美不卡一二三四区视频| 美女免费观看一区二区三区| 91精品国产综合久久久蜜臀图片| 亚洲韩国AV每日在线观看| 久久精品亚洲国产浪潮av| 国产在线?免费观看| 久久青草免费91线频观| 亚洲毛片在线亚洲av资源在线观看 | 人妻一区在线观看中文字幕| 国产免费一区二区在线看| 100部毛片免费全部播放完整| 欧美日韩另类国产欧美日韩一级| 精品日韩亚洲?v无码| 欧美日韩熟女字幕不卡| 国产一级a毛卡片不收费| 128877带你另眼看世界| 3d精品国产日韩一区三区3d| 亚洲中久在线视频| 近親相姦五十路のお楠由賀子| 日本少妇自慰一区二区| 欧美精品午夜蜜桃久综合影院| ?V在线无码一区二区三区| 日韩成年人AU高清无码| 亚州AV又大又粗又硬| 国产不卡在线高清播放| 国产中文欧美日韩| 久久久性视频| 婷婷久久综合久94| 国内精品久久久久影院嫩草 | 我想看真实女人一级特黄大片| 电影中文字幕不卡| 在线播放免费黄片亚洲区| 特级毛片特黄久久免费看| 国产欧美另类综合| 国产特级精品毛片视频| 打开腿闺蜜用黄瓜让我爽| 订国产精品一区二区三区四区| 高H禁伦餐桌上的肉伦np影片 | 国产视频一区在线免费观看 | 伊人久久精品视频一区二区| 国产精品无码一区二区四区在线 | 夜夜嗨AV无码国产精品午夜| 最新2021久久精品| 一本久道久久综合狠狠躁AⅤ| 亚洲中久在线视频 | 中文字幕乱码亚洲无线三区| 久久在热视频特级毛片| 擦拨华人永久免费| 99re国产美女在线| 婷婷久久综合久94| 免费视频网站无遮挡无码| 亚洲最大成人综合一区二区| 免费看国产精品日系成人| 国产精品hv在线观看| 国产毛片网站在线| 100部毛片免费全部播放完整| 网站网址欧美日本国产| 91精品国产日韩91久久久久久无码乱码 | 日韩欧美人妻综合| 亚洲ckplayer中文字幕 | 伊人色综合久久88加勒| 91亚洲性爱在线视频 | 国产精品一区久久麻豆| 久久97超人人超人人超碰国产| 亚洲香蕉av一区| 久久伊人日本免费区| 香蕉网站视频高清在线观看| 亚洲岛国天堂无码永久天| 国产精品一区二区三区观看 | 国产人成无码不卡视频| 国产精品久久系列| 樱花草在线社区www免费视频| 亚洲国产综合997| 在线资源观看va| 久久99精品久久久国产| 星辰视频在线观看免费高清动漫| 精品国产电影久久久久| 亚洲日本韩国欧美在线一区| 久热香蕉在线视频免费版| 欧美亚洲精品网站| 国产heyzo在线播放| 欧美中文字幕电影第一页| 伊人久久大香线蕉午夜av一区| 色网色网视频无码| 极品少妇VA无码一区二区三区| 亚洲国产高清久久夜| 女人18毛片免费视频看| 亚洲女同成αV人片在线观看| 国产精品人人爽人人| 麻豆精品久久成人| 免费观看国产精品福利永久| 亚洲欧洲日本精品一区| 亚洲欧美中文高清在线专区| 国久久婷婷午夜精品| 日韩精品一级一区二区| 久久久久久久久久综合情日本| 国产成人yy精品在线| 女人扒开腿让男人桶免费网站| jizz日本护士视频| 国内精品影院久久久| 91精品全国免费观看含羞草| 欧美日本亚洲第一页| 刺激打扑克摇床又疼又叫| 国产黄在线观看免费视频45分钟| 久久成人黄色三级亚洲快插| 凌晨三点看的片WWW在线看| 亚洲自拍色综合图区天堂| 国产18午夜免费观看| 国产喷水视频在线观看| 鲁丝片无码AV国庆假期大战少妇| 超碰97在线播放| 久久久亚洲精品色| 伊人久久大香线蕉午夜av一区| 毛片在线播放网站免费| 色吊丝永久性观看网站大全| 亚洲国产精品高清在线| 国产成人无精品久久久久国语| 欧美韩国日本美女视频在线观看| 大胸女教师冲田杏梨在线观看| 国产福利短视频影院| www.伊人黄色视频在线观看| 欧美乱妇欲仙欲死视频| 黄色大片视频高清a级视频| 99精品免费在线| 日韩在线一区二区三区不卡视频 | 亚洲伊人精品国产欧美中文字幕 | 亚洲AV鲁丝一区二区三区性生生活大片又黄又 | 欧美乱码伦视频| 网站网址欧美日本国产| 欧美亚洲美日更新在线| 国产精品精品二区| 亚洲毛片视频免费| 国产伦子伦对白在线播放观看| 久久99亚洲精品片片| 国产精品皮裤野战在线| 日韩高清av在线播放| 在线视频人妻系列| 老司机久久99久久精品| 色狠狠亚洲爱综合网站| 亚洲自拍中文字幕av| 久久99青青精品免费观看| 国产呻吟刺激对白av| 在线视频人妻系列| 高H禁伦餐桌上的肉伦np影片| 日韩特黄a级毛片免费观看| 在线观看免费91成人| 五月丁香婷婷激情综合在线视频| dv网无码国产精品| 日产人妻无码一区二区三区| 粉嫩国产15xxxxx小仙女| 欧洲av无码放荡人妇网站 | 黄色小说在线| 男女爽到高潮的免费网站| 先锋影音每日AV资源| 亚洲多毛妓女毛茸茸的| 国产精品亚洲A∨天堂不| av中文字幕网免费观看| 在线观看无码a区视频| 动漫精品中文字幕制服一区| 国产激情午夜理伦片| http日韩在线播放| 草民午夜欧美限制a级福利片 | 国产91在线青椒午夜剧场| 欧美电影Ⅴa在线观看| 亚洲韩国日本成在线| 无码+美玲+迅雷下载| 日本一道码一区二区下载| 日韩精品免费一区二区三区| 日韩美中免费Av| 国产精品久久久一区宅男| 青娱乐青青草国产精品| 自慰网站18禁喷水污污污 | 97人妻超在线视频| 天天激情综合| 最近2019中文字幕1页| 久久精品亚洲无中文东京热| 亚洲最大成人免费久久| 波多野结衣中文字幕三区| 巜人妻被下春药按摩91动漫| 国产亚洲经典三级| 麻豆韩国无码av| 一级毛片AAAA免费观看| 国产精品第 1页| 国产爆乳主播在线播放| 综合久久亚洲专区| 巜人妻被下春药按摩91动漫| 久久国产精品最新一区二区| 日本色网成人网站| 在线免费视频| 久久精品國產在熱亞洲完整版 | lutube视频在线观看| 日本综合另类欧美日韩| 精品国产91一区| 国产黄色成人免费电影| 囯产精品视频一区二区三区综合 | 四虎在线永久免费观看| 东北老熟女高潮嗷嗷叫视频| 久久在热视频特级毛片| 亚洲精品第一国产综合国服瑶| 日本在线亚洲视频| 国产亚洲av夜间福利在线观看 | 日本精品www一区二区三区| 国产福利短视频影院| 亚洲日韩国产一区资源| 国产伦精品一区二区三区女破破| 特黄AA免费视频| 久热香蕉在线视频免费版 | 国产精品99久久久久久蜜桃| 国产又大又粗又湿又黄Av| free乌克兰嫩交hd| 亚洲香蕉综合在人在线时看| 国产日本欧美亚洲精品视| 日韩午夜成人精品影视在线观看 | 久久久噜噜噜精品麻豆av| 国产1024手机看片福利| 亚洲无码福利在线观看| 国产一区二区丝袜高跟鞋| 男女上下猛烈啪啪免费看| 亚洲乱码一卡二卡三卡| 女人口18毛片a毛片| 丰满人妻一区二区色| 好色先生TVAPP污下载| 桃子影院在线高清播放免费| 国产成人h视频在线播放| 亚洲av秘无码18日韩| 无码任你躁久久久久久| 日韩人妻无码专区综合网观看互动交流| 国产精品免费黄网站| 国产人成品精亚洲草莓| 亚洲激情综合网| dv网无码国产精品| 激情四射综合五月丁香网| 一区二区在线播放中文| 日本欧美亚洲日韩国产| 产一级 片内射视频播放免费| 丁香久久久激情五月天| 国产亚洲av高清| 欧美成人久久三级福利国产片| 国产福利短视频影院| 能免费看一级片的网站| 色婷婷天天综合在线| jizz日本护士视频| 欧美老女人老熟女性爱视频| 日韩一区二区三区精品无码视频| 亚洲伊人久久婷婷五月国产| 国产成人精品福利在线播放| 国产老熟女精品一区免费观看全集| 美国A级大片在线观看| 在线观看黄色av不卡| 一级137片内射偷拍| 懂色av一区二区三区| 全免费的一级毛片| 51国偷自产精品一区在线视频 | 制服丝袜亚洲中文欧美在线| 国产福利91精品在线| 鲁大师在线影院免费观看| 国产精品入口麻豆完整版| 狠狠干天天爱| 亚洲春色第一页| 中文字幕亲族乱| 一个人www久久久不卡国产精品一区二区| 丰满丝袜熟女HD| 不戴奶罩的邻居hd中文| 黄色 av 手机在线观看 | 99re热视频免费在线观看| 色婷婷综合中文字幕色噜噜狠狠色综合久久 | 欧美日韩亚洲综合在线一区二区| 亚洲毛片视频免费| 男人的天堂av高清在线| 久热精品视频首页| 无在线不卡高清一二区岛国| 加勒比人妻无码一区| 粉嫩国产15xxxxx小仙女| 国产模特在线看99| 欧美一级特黄免费在线观看| 亚洲美色欧美日韩在线| 中日韩亚洲国产综合精品| 欧美无遮挡很黄裸交视频| 久久无码精品国产蜜臀sv| 波多野结衣人妻在一波| 一卡二卡三卡| 国产毛片不卡| 中文字幕欧美亚洲精品网站| 久久婷婷国产综合| 亚洲av午夜成人无码电影| 香蕉久久夜色精品国产| 午夜电影街亚洲av无码| 欧美亚州一区二区在线视频| 久久一区二区三区国产精品| 性国产三级视频在线观看| 另类自拍视频| 国产人妻一区二区三区色戒乐| 欧美午夜福利片在线观看| 久久精品亚洲国产AV麻豆| 欧美日韩精品综合在线一区| 性国产三级视频在线观看| 曰夲一夲一道久久香蕉另娄天堂特黄特色 | 亚洲a级大片免费看| 国产高清午夜自在在线| japanese日韩精品中文字幕| 黄色网站免费观看入口| 在线免费直接观看AV| 社区www制服欧美第3页japanese| 99久re在线精品视频| 91伊人色伊人亚洲综合网站 | 精品一区二区免费无码| 麻豆精品久久成人| 看真人一级毛片免费| 在线免费直接观看AV| 国产真实younv视频| 亚洲国产精品高清在线| 善良的妺妺hd高清中文| 无码一区二区三区无码精品| 狠狠色丁香久久婷婷综合不卡 | 欧美毛片在线看片免费| 中日韩亚洲国产综合精品| 91麻豆国产精品91久久久| 亚洲岛国天堂无码永久天 | 美女脱了裤衩让男人桶爽| 91精品国产综合欠| 成人xxx免费视频播放| 亚洲综合久久精品香蕉| 日韩黄色一级毛片视频免费观看| 日韩囯产va精品一区二区久| 看片免费你懂的| 中文字幕日韩拍拍片| 在线视频4k岛国无码专区| 国产一区日韩欧美二区日韩| 国产精品入口麻豆完整版| exo母亲mv免费观看| 91精品久久久久网| 2024免费日韩视频网| A级毛片免费全部播放A级毛片| 动漫高H纯肉无码视频在线观看| 成人亚洲欧美精品| 亚洲中文无码一级片| 三级国产毛片| 国产麻花豆剧传媒精品免费| 动漫精品国产一区二区| 亚洲天堂网激情无码ah| 精品少妇精品久久久| 国产日韩欧美一区不卡在线观看| 精品国产男女在线观看AV| a在线观看无码片| 精品国产ⅴ无码大片在线观| 日韩精品一级一区二区| 国产亚洲欧美日韩综合区| 青青久操手机在线视频| 亚洲男人天堂2020| 国产91最新在线| 国产区欧美区一区二区精品区| 国产精品久久久久久欧美蜜月av| 日本一区二区三区国产高清| 国产激情久久久久影院魅| 国产成人拍视频精品午夜网 | 51国偷自产精品一区在线视频| 中日韩人妻av第1页av| 男女狂揉吃奶胸高潮网站| 亚洲欧美日韩国产sss| 亚洲秘无码一区二区三区欧美| 国产伦子伦对白在线播放观看| 一本色道无码在线观看| 国产日韩欧美综合不卡在线观看| 在线 中文字幕 第一页| 久久高清国产精品不卡AV| 亚洲日韩一二三区| 免费欧美乱伦精品| 在线看片免费观看不卡| 青久久久精品一区二区三区| 国产午夜福利在线713| 亚洲欧洲日韩综合色天使| 色悠久久久久综合| 少妇无号一区二区三区| 日韩大尺度写真在线播放| k8经典理论片在线观看| 亚洲 日韩 欧美 综合 图区| 亚洲综合激情九月天| 久久不见久久见中文字幕免费| 成人精品影院一区二区三区| 国产乱人伦一二三区| 欧美成人另类一区二区三区| 先锋影音每日AV资源| 久久国产色欲aV38| 国语92午夜福利2000| 精品+无码免费国产网站| 男人的天堂网址在线观看| 欧美一区二区三区精品啪啪 | 玖玖最新国产在线视频| 办公室人妻不卡av中文字幕| 产成 人 在线观看 亚洲| 免费中文无码AV动作片| 日韩久久久精品首页一本在线免费视频| 日韩aa级毛片免费不卡| 日韩午夜成人精品影视在线观看| 亚州视频一区二区三区色伦| 无码影视亚洲国产| 欧美大片免费aa级动作片| 国产精品视频一区国产馆| 国内一区二区精品日美无码妖精视频| 国产1024手机看片福利| 亚洲A∨无码一二区三区在线播放| 亚洲春色第一页| 亚洲一本高清| 亚洲熟妇另类无码久久久30p| 国产日本公交车在线播放| 国产精品皮裤野战在线| 在线 中文字幕 第一页| 日韩147a级av在线| 欧美最猛性bbbbbbxxxxxx| 久久精品男人天堂| 国产伦精品一区二区三区女破破| 亚洲精品a在线播放高清资源| 亚洲精品成人高潮在线观看| 亚洲欧美色欲色香| 欧美老熟妇人伦人妻6919| 国产日韩在线亚洲字幕中文| 国产a级一片男女牲交| 有色免费无码在线| 极品少妇VA无码一区二区三区| 日韩中文字幕中文字幕av| 久久久久久亚洲AV成人网站| 无码少妇一区二区三区奂费| 久久免费看黄A级毛片资讯| 国产乱伦免费视频| 国产午夜免费啪视频免费观看| 国产高清无码一区二区三区在线观看 | 国产精品免费无码av无码| 欧美日韩精品激情在线观看| www一级黄色av大全| 污视频网站在线| 亚洲一级无码在线视频| 99热精品免费观看全部| 一区二区无码人妻| 精品一线天粉嫩无码| 久久久久九国产精品| 国产在线一区二区午夜| 漂亮老师做爰2在线观看| 精东传媒国产APP| 最新热播国产精品一级| 欧洲av无码放荡人妇网站| 91久久精品国产免费| 国产一区二区在线观看网站| 亚洲国产成人无码A v在线影院| 欧美成人精品二区三区四区99| 国产精品不卡无码?V在线播放| 免费午夜无码18禁无码影视麻豆| 香蕉久久夜色精品国产| 成人福利在线观看| 欧美午夜理论在线观看| 女邻居丰满的奶水在线观看| 国产午夜福利在线713| 我想看真实女人一级特黄大片| 118精品国产不卡欧洲色综合天天在线| 不戴套太紧了1v1h| 特大巨人黑人aaa片bbc| 亚洲伊人久久大香线蕉苏妲己| 曰韩一级欧美一级久久| ?动漫美女羞羞喷液视频免费| AAAA大片免费看在线AAAA大片免费看在线 | 国产精品制服诱惑中文字幕| 2024年最新国产高潮国产高潮久久久91| 最新国精品产露脸偷拍视频| 日韩成av人在线观看| 91亚洲火爆在线观看| 奶茶视频黄片APP| 在线中文字幕AV网页| 最终痴汉电车3中文版下载| 丁香社区成年女人18级毛片毛片免费| 少妇八级婬片免费放天气预报| 国产成人高清亚洲一区a | 欧美日韩在线播放| 中文字幕亚洲日韩第二区| 亚洲一二三不卡片区| 有色免费无码在线| 9re热这里只有精品免费视频| 粗大老头让我欲仙欲死| 中国男男gay18无套网站| 三级片在线无码| 日本黄大片特黄特色喷水| 少妇性bbb搡bbb爽爽爽四川| 巜饥渴的少妇2伦理| 寂寞人妻瑜伽被教练日| 久久国产亚洲欧美一区二区三区| 看看免费a一片欧| 欧美乱妇欲仙欲死视频| 国产偷国产偷高清视频| 高清av三级高清| 韩国日本欧美国产精品| 大家可以在这里国产精品第一| 国产精品色一区色二区色三区| 5566影音先锋丝袜美腿| JAPANESE国产高清在线观看| 欧美精品和国产激情久久| 清纯唯美亚洲欧美中文字幕| 一本色道久在线综合| 最新国产av自拍| 精品黄黄久久久免费看| 国产成人无码A区| ?动漫美女羞羞喷液视频免费| 自慰网站18禁喷水污污污| 多人性激烈的欧美三级视频| 国产成人精品福利在线播放| 国产黄网在线观看不卡| 久99视频精品免费| 成年人免费看片视频网站| 国产精品探花一区二区在线观看| 亚洲一级无码在线视频| 交换朋友夫妇客厅互换视频| 亚洲欧美色欲色香| 手机直接看的特黄免费视频网站| 香蕉午夜久久久亚洲欧洲湿| 91精品久久久久网| 国产精品露脸在线手机视频| 国产一区二区无码动漫| 日韩欧美在线综合网另| 日韩在线一区二区免费视频 | 激情欧美一区二区三区四区| 婷婷综合在线| 亚洲自拍欧美综合| 免费无码高潮又刺激视频| 欧美成人久久三级福利国产片| 日本久久午夜国产精品www| 国产精品香蕉有码视频| 日韩无码特级中出视频| 乱人伦久久精品国产| 成人免费一级| 亞洲無碼天堂在線播放| 国产免费午夜福利在在线| 人人爽人人爽熟妇| 女同亚洲一区二区无线码| 人人色人人爱在线观看97| 久久最新网址| 国产不卡女视频在线播放| 无套内射波多野结衣| 欧美日韩三级片一区二区三区| 日韩成年人AU高清无码| 精品麻豆一区二区三区乱码| 公与熄三级BD日本快看| 亚洲欧洲日产国码中文| 中文字幕日韩三级| 中文字幕无码日韩?V| 99久久老熟妇仑| 国产视频一区在线免费观看 | 宝贝把腿伸开点我要c你男男| 国产视频一区在线免费观看| 欧美日韩三级| 97se亚洲国产综合自| 中文字幕日本二区| 欧美日韩国产成人精品| 无码+美玲+迅雷下载| 一区二区三区av天堂| 国产麻豆精品hdvideoss| 91久久国产全亚洲青草超碰| 草莓视频APP下载下载污| 国产激情在线一区二区| 色婷婷综合缴情综六月 | 亚洲曰韩精品久久久| 亚洲国产日韩欧美在线观看| 教授和乖乖女h灌满阮阮视频| 色香蕉视频在线观看| 色婷婷中文字幕在线一区天| 精品一区精品二区日韩欧| 国产你懂的的在线网站大综合| 999中文字幕亚洲精品| 草民午夜欧美限制a级福利片| 精品少妇人妻AV一区二区三区播放灌醉水嫩大学生国内精品 | 久久免费看黄A级毛片资讯| 日本一道码一区二区下载| 亚洲资源在线观看| 国产69精品久久久久9999不| 亚洲成在人线a免费77777| 99久久老熟妇仑| 巜饥渴的少妇2伦理| 办公室人妻不卡av中文字幕| 欧美国产日韩a欧美在线观看| 亚洲欧洲3d日韩一区二区在线| 在线视频高清免费观看| 亚洲无码不卡宅男| 三级在线观看国产欧美| 精品无码里番在线观看| 亚洲爆乳aaa无码专区按摩| 成人亚洲综合天堂 | 国产精品人妻无码久久久冲田杏梨 | 宝贝把腿开大让我添添你视频| 久久精品一品道久久精品网站 | 最终痴汉电车3中文版下载 | 久久福利国产| 看片免费你懂的| 五月激情亚洲666| 欧美一级aa大片高清在线播放| 国产91最新视频| 久久精品黄色录像| 乱人伦久久精品国产| 国产在线观看黄片视频| 他缓慢而有力的撞着视频| 亚洲曰韩精品久久久| 99视久久精品人人槡人妻人人玩| 久久97中文字幕| 日本高清视频不卡一区二区| 亚洲激情综合网| 久久精品亚洲无中文东京热| 成人国产精品亚洲第一男人天堂av| 一区二区无码人妻| 成人国产三级视频在线观看| 亚洲国产一区二区三区在线视频| 无码一区二区三区无码精品| 最终痴汉电车3中文版下载| 国产精品免费无码av无码| 国产激情AV黄片亚洲| 亚洲日韩欧洲无码夜摸摸| 色道久久88—综合亚洲精品| 97久久天天综合色| 日韩精品 电影一区 亚洲高清| 日产人妻无码一区二区三区| 亚洲毛片在线播放一区二区| 成人免费无码大片毛片抽搐| 久久夜夜国产高清| 激情四射综合五月丁香网| 不戴奶罩的邻居hd中文| 真人无码国产片在线观看| 国产aⅴ国产av国产av| 情欲小说录目伦短篇500| 成人免费一级| 国产在线精品一区导航| 2021国产精品最新在线| 在线看日韩三级| 在线高清免费无码不卡av| 日本在线黄色影片| 久久国产高清伦理久久一| 另类亚洲欧美在线观看| 久久精品國產在熱亞洲完整版 | 亚洲高清精品bd在线观看| 成人性三级欧美在线观看| 国产一区国产二区久久| 免费看国产夜色视频| 欧美精品成人AAA区二区三区| 国产av一区最新精品| 中文字幕久久无码熟妇精品| 亚洲av无码成h人动漫在线观看3d| 亚洲一区二区日韩| 韩日无码视频电影在线| 国产乱色熟女一二三四区| 精品国产无套在线观看一| 窝窝午夜一级看片爽| 大妹子影视剧在线观看全集免费| 国产在线高潮流白浆免费观看 | 日产毛片在线观看| 美日韩激情一区二区| 亚洲欧美日韩国产sss| 国产一级a毛一级a毛免费观看| 亚洲aⅴ婷婷五月产av中文| 中文字幕亚洲三级| 又湿又黄裸乳漫画无遮挡网站| 办公室人妻不卡av中文字幕| 日韩精品 电影一区 亚洲高清| 久久鬼色日韩国产第一页| 无码人妻又粗又大| 中国男男gay18无套网站| 每日更新最新視頻| 人妻办公室被强奷hd| 国产色诱视频在线观看| 天天躁夜夜躁狠狠躁2022同步更新| 少妇又色又爽又高潮AV| 亚洲欧美日韩精品第二区 | 国产精品午夜熟女| kk久精品毛片A级蜜桃| 国产高中生无套| 欧美成人午夜综合在线观看| 深爱婷婷色五月| 懂色中文一区二区三区在线视频| 美女未18禁止看视频| 在线观看黄色av不卡| 国产精品久久系列| 日韩无码色网视频网站| 亚洲成人精品网址| 国产剧情演绎系列丝袜高跟新版怡红院院| 国产乱人伦中文无无码视频试看| 国产国语老龄妇女| 中文无码性爱| 亚洲一区二区夜色av| 亚洲 日韩 欧美 综合 图区| 欧美成人小视频| 99久久亚洲精品无码毛片潘甜甜| 久久久亚洲综合| 欧美精品在欧美一区二区少妇| 国产免费观看激情| 欧美一区二区三区精品啪啪| 欧美大鸡巴视频视频视频| jijzzizz老师出水喷水喷出| 荡欲的视频在线观看| 欧美日韩大胆视频| 97精品久久久久久久无码| 国产无码一二三区| 国产日韩欧美一区不卡在线观看| av一区二区日韩| 99这里只有精品观看在线| 国产精品无码a∨| 国产爆乳视频在线播放| 国产又大又粗又湿又黄Av| 好大好湿好硬顶到了好爽在| 国产麻豆精品hdvideoss| 丁香综合激情婷婷| 国产精品吹潮在线观看中文| 亚洲欧美一区二区成人片在线| 91人人凹凸人人爱| 每日最新不卡av在线播放| 无码日韩毛片小视频| 国产日本三级在线视频| 欧美日韩在线一区三区| 全免费的一级毛片| 我想看真实女人一级特黄大片| 日韩欧美亚洲日本| 日韩欧美中文字幕精品| 国产区欧美区在线| 女人口18毛片a毛片| 日本在线黄色影片| 欧美日韩精品夜视频一区二区| 国产精品一区二区久久精品| 亚洲av 性爱神马偷拍| 欧美日韩av无码精品久线观模式| 手机影视中文字幕无码| 久久精品视频5| 无码东京热亚洲男人的天堂 | 亚洲无码视频精品一区| 国产精品探花一区二区在线观看 | 公司里的艳妇们都熟透了| 亚洲韩国日本成在线| 亚洲欧洲日本精品一区| 色天天综合美女| 免费人成精品在线视频| 东方在线亚洲| 欧美午夜剧场久久精品网| 无码专区在线观看韩国| 亚洲黄色一级二级| 人妻少妇精品性色αv在线| 色综合久久久久无码专免费| 亚洲欧美日韩国产精品激情综合在线| av免费在线一区| 国产一区二区免费福利片电影| 亚洲av 性爱神马偷拍| 啪啪高潮喷水女娇喘免费观看| 日韩极品美女视频在线| 农村亚洲熟妇无码av在线播放| 乌克兰美女高潮呻吟| 五月婷婷激情六月| 日韩无码中文无码| 欧美三级久久一区二区| 一区二区精品视频免费观看| 91黄色在线免费观看视频| 先锋5566在线不卡视频| q2002午夜我的老师| 2024年最新国产高潮国产高潮久久久91 | 日韩欧美高清在线字幕| 国产一区二区午夜精品| 亚洲高清一二三区| 男同毛片GV资源免费| 国产成人偷一区二区| 嫩草国产极品在线播放| 久久精品国产亚洲?v麻豆欧| 91p导航正在播放在线| 中文字幕无码专区制服丝袜| 国产免费观看视频久久久| 17草网站一区二区三区专区国产亚洲| 欧美一区亚洲成人| 成人免费的性色视频| 激情+亚洲+欧美+另类+小说| 久久国产高清视频久| 国产精彩视频对白| 歐美一區二區激情視頻| 99re热视频免费在线观看| 国产成年无久久久久黑人毛片| http日韩在线播放| 成人xxx免费视频播放| 欧美国产一级视频| 国产精鲁鲁网在线视频| 国产中文欧美日韩| 成人禁片免费播放35分钟| 波多野结衣中文字幕三区| 亚洲最新AV免费观看| 国语自产精品视频在线第| 亚洲欧美精品| 69久久夜色国产精品69| 丁香五月婷婷亚洲| 免费一级无码婬片aaa| 91尤物国产自产福利在线观看 | 久久精品无码影视| 狠狠亚洲婷婷综合久久久久| 国产麻花豆剧传媒精品免费| 免费在线观看的黄网站| 热门事件黑料网| 黄页网站视频大全免费| 欧美精品色视频在线视频| 欧美性做爰大片免费看软件男组长 | 国产精品免费无码av无码| 国产精品久久久精品| 国产年轻情侣在线播放| 亚洲欧美一区二区成人片在线| 亚洲日韩精品α∨片无码| 激情五月天婷婷五月天| 精品一区二区免费无码| 日本人妻在线播放一区| 欧美、另类亚洲日本一区二区| 国产āV午夜精品一区二区三| 久久αv高潮αv无码αv喷吹| 美日韩无码视频| 欧美最猛性bbbbbbxxxxxx| 亚洲欧美国产一区二区三区| 亚洲加勒比中文字幕无码| 粉嫩粉嫩的虎白女18在线视频| 91精品久久久久久中文字幕| 亚洲高清在线Aⅴ| 台湾chinesegay男同志网| av美女被强奸AV网站在线观看 | 四个闺蜜用黄瓜把我弄高潮了| 国产欧美一区二区三精品酒店| 夜色视频网站在线无码在线| 欧美一区二区AⅤ影院| 日本韩国欧美在线另类不卡| 日本一区二区色网色网视频 | 天天操夜夜骑| 亚洲国产一区二区三区在线视频| 蜜桃视频成a人v在线| 欧美中文字幕电影第一页| 久久综合一区二区无码水多| 麻豆精品美少女国产专区| 国产精品一级做a爰片性色毛片成人| 日本一视频一区视频二区| 亚洲欧美综合二区| 午夜成人福利视频免费看| 欧美粗大猛烈水多18p| 国产超碰人人爽人人做不卡| 中文字幕精品视频在线| 久久亚洲精品视频免| 99久久精品费精品国产一区二 | 啊灬啊灬啊灬高潮了女舞蹈| 快速了解99久久人妻精品免费一区 | 亚洲欧美日韩综合在线一区二| 国产超碰人人爽人人做不卡| 亚洲福利精品一区三区| 久久一区二区三区国产精品| 真人AV片免费在线看| 成人无码免费视频97| 国产午睡精品沙发系列| 亚洲色婷婷无码国产精品| 欧美日韩一区二区线看免费| 人人爽人人爽熟妇| 99re国产美女在线| 中文字幕人妻偷伦在线视频 | 亚洲自拍中文字幕av| 综合亚洲高清中文| 无码系列性饥渴寡妇肉乱| 亚洲无码视频精品一区| 欧美三级在线观看少妇| 粉嫩国产15xxxxx小仙女| 香蕉网站永久在线视频| 欧美老妇肥唇BBB| 成年片波多野结又粗又大77久久久H| 在线精品一区二区观看| 国产精品激情在线看| 强伦姧人妻波多野结衣| 精品亚洲福利视频| 成年片波多野结又粗又大77久久久H| 黄色 av 手机在线观看| 久久久噜噜噜精品麻豆av| 亚洲午夜精品久久久久婷| 一二三区精品亚洲欧美播放| 高h翁妇肉乱文吃奶| 日本一区二区三区高清不卡在线 | 国产A级黄片下载| 乱公和我做爽死我视频| 亚洲一二区精品在线观看| 国精品伦一区一区三区有限公司| 免费无遮挡一类视频网站在线观看| 岛国强奸资源网站在线免费观看| 亚洲高清一二三区| 美日韩激情一区二区| 最新亚洲人人人人超碰| 亚洲不卡的av在线| 欧美日韩在线播放| 国产精品制服诱惑中文字幕| 日韩欧美人妻综合 | 福利一区二区三区在线观看| 偷窥视频一区| 国产女人在线75视频| 又粗又黄的国产视频| 久久最新免费视频| 国产综合av在线播放一区二区 | ?V在线无码一区二区三区| 欧美精品不卡无毒免费| 动漫高H纯肉无码视频在线观看| 少妇高潮毛又多又黑| 成人无码区免费a∨视频| 亚洲无线看天堂av| 大尺度视频网站无码| 国产黄三级三级三级| 欧美人妻一区二区三区| 国产无码免费一级| 色婷婷永久视频网| 欧美另类杂交a| 亚洲伊人久久婷婷五月国产| 国产小视频2020| 日韩日逼色网视频| 亚洲最大成人免费久久| 免费无码观看av在线播放| 美女被艹视频网站| 无码高清影视国产| 成人一区二区三区精品| 久久这里只有精品免热视频| 啊啊啊网站用力| 免费视频xxxx大片| 草草尤物视频网站| 强伦姧人妻波多野结衣| 69堂国产欧美亚洲| 白嫩大学生情侣酒店视频| 欧美精品成人在线| 国产成人a免费视频在线观看| 国产在线高潮流白浆免费观看| 69堂国产欧美亚洲| 日韩在线天堂免费观看| 国语自产精品视频在线第| 日韩高清不卡aⅴ在线| 国产羞羞视频在线播放| 日韩精品99久久久久中文字幕| 国产免费激情电影| 在线观看国产高清字幕| 亚洲人成网站在线小说| 91不卡在线精品国产国产成人精品福利站| 中文无码在线观看高清免费| 久久亚洲中文字幕宅男| 久久精品一品道久久精品网站| 国产A v一区二区三区传媒 | 桃色AV久久无码线观| 亚洲国产日韩a在线播放性色 | 中文字幕51精品乱码在线| 国产一级av在线免费| 国产精品女人在线观看| 日本一区二区色网色网视频| 在线视频中文字幕无码专区| 一本正道不卡免费视频| 国产日本草莓久久久久久久| 公天天吃我奶躁我的比视频 | 中文字幕bc一区二区三区| 亚洲人AV在线免费观看| 美女久久久久久久精品免费| 国产欧美日韩成人免费| 先锋影音每日AV资源| 国产激情午夜电影| 日韩在线播放一区| 日本男人天堂网站| 中文字幕人成乱码熟女小说| 国产喷水在线看无码| 久热精品视频首页| 伊人久久精品视频一区二区| 國產精品無碼專區av在線播放| 欧美一级aa大片高清在线播放| 国产福利永久不卡在线观看| 久久99亚洲精品片片| 国内自拍无码区在线播放| 国产欧美精品久久九九久久| 欧美三级精品一区二区| 欧美精品和国产激情久久| 国产喷水在线看无码| 2021在线观看国产精品| 久久这里只有精品免热视频| 黄色永久网站 | 国产黄色美女日本视频| 777奇米四色成人影视色区| 国产精品虐乳在线播放| 亚洲一级av不卡毛片无码 | 成人免费的性色视频| 日产毛片在线观看| 成人无码区免费A片视频韩国| 欧美国产精品午夜福利| 男生女生一起嗟嗟嗟情趣| 少爷被小混混c呻吟双腿大张视频| 国产又爽又黄的视频又刺激| japanese日韩精品中文字幕| 三级免费中文在线观看| 国产18午夜免费观看| 久久精品国产亚洲av尤物| 中文字幕日本二区| 99久久亚洲精品无码毛片潘甜甜 | 综合亚洲高清中文| 欧美成人一二三四区电影| 國精品無碼一區二區三區在線| 久久精品无码一区二区无码麻豆| 97碰碰碰人人超视频视频| 免费无码婬片????片直播| 欧美亚州一区二区在线视频| 久久久久久亚洲AV成人网站| 亚洲天堂av一区二区三区| 日本人成网站8禁止久久影院| 亚洲欧美综合久久久久久自慰| 成人爽a毛片免费啪啪| 999涩国产精品网址| 亚洲日韩精品α∨片无码| 久久综合伊人77777麻豆最好看中文字幕国语电影 | 狠狠噜天天噜日日噜综合久| 产一级 片内射视频播放免费| 国产中文欧美日韩| 国产成人h视频在线播放| 曰韩一级欧美一级久久| 机机对机机2023手机免费下载版| 国产无遮挡又黄又爽网站 | 色综合久久台湾佬| 综合图区亚洲偷自| 国内自拍无码区在线播放| 亚洲欧美一区二区三| 男人的天堂av高清在线| 国产美女视频免费看网站| 国产精鲁鲁网在线视频| 国产AⅤ一区二区三区传媒| 亚洲?v十国产精品| 亚洲国产成人91| 亚洲吊在线观看| 免费H成年动漫在线播放网站| 国产日韩欧美一区不卡在线观看| 中文字幕精品亚洲一区1080P | 理论片国产台湾在线| av免费午夜福利不卡不打码| 成人精品第一区二区| 三级黄线中文字幕| 國產亞洲精品美女久久久久久久久久 | 顶级欧美丰满熟妇xxxxx视频| 婷婷美女偷拍久久精品视频| 苍井优一级毛片免费观看| 国产日韩欧美综合不卡在线观看| 国产亚洲亚洲精品777| 国产视频牛牛射在线视频| 丰满熟妇大乳丰满做爰| 青久久久精品一区二区三区| 男女狂揉吃奶胸高潮网站| 国产亚洲欧美在线综合视频| 日韩经典在线播放中文字幕| 日韩在线午夜视频婷婷丁香社区影院 | 一级自慰片全部免费播放| 中文一区二区三区字幕| 日本理论片午夜理论片| 欧美性爱潮喷视频| 国内精品久久久无码一区二区| 日韩精品 电影一区 亚洲高清| 日韩av无码av免费av不卡| 东北老熟女高潮嗷嗷叫视频| 丝袜美腿清纯唯美亚洲| 欧美性大战xxxxx久久久√| 久久精品男人天堂| 激情四射综合五月丁香网| 日韩在线精品高清国内自产| 国产高清一区二区三区视频在线| 久久久久久99国产精品| 成人未滿十八無毛片在線韩国| 亚洲日本三级最新在线不卡| 中文字幕日本二区 | 尤蜜黄片视频在线观看| 亚洲国产成人?V毛片大全| 自拍亚洲欧美| 5566影音先锋丝袜美腿| 日韩另类色区欧美日韩色老二导航| 中文字幕精品视频在线| 天天精品视频在线观看资源| 99精品一区二区成人精品妓女| 一本色道久在线综合| 久草手机在线播放| 日韩高清在线观看?v片| 日本一视频一区视频二区| 亚洲日本va午夜中文字幕| 肉丝超薄丝袜脚交一区二区| 亚洲毛片在线亚洲av资源在线观看 | 欧美亚洲精品中文字幕乱码| 亚洲精品日本久久| 亚洲春色第一页| 华云龙白君怡欧美大色网| 亚洲欧美 制服另类一区二区| 中国一级特黄精品在线播放| 日韩高清在线观看?v片| 91亚洲火爆在线观看| 精品国产一级A片黄毛网站| 国产色噜噜在线视频| 国产精品一区二区天堂| 一本正道不卡免费视频| 别插我b嗯啊视频免费| 国产亚洲欧美日韩综合区| 精品+无码免费国产网站| 2018最新国产在线| 亚洲 中文字幕 国产 欧美 乱 国产| 亚洲成在人线a免费77777| 电影中文字幕不卡| 99久久亚洲精品无码毛片潘甜甜| 青青热久免费精品视频6| 国产超薄丝袜足在线播放| www.伊人黄色视频在线观看| 中文字幕人妻av一区二区三区| 亚洲人成网站在线小说| 少妇中文影视精品| 曰夲一夲一道久久香蕉另娄天堂特黄特色 | 一级特黄女**毛片| 亚洲毛片在线亚洲av资源在线观看 | 精品人妻系列乱码一区二区三区| 国产欧美一区二区三精品酒店| 国产萌白酱甜味弥漫在线视频| 激情四月天国产一区二区三区| 久久人人爽人人片AV免费| 丁香五月婷婷亚洲| 久久人人爽人人片AV免费| 欧美 日韩 中字 国产| 精品国产福利姬喷水福利在线| 日韩免费无码电影一区二区三区| 黄色网页在线免费看| 香蕉网站视频高清在线观看| 丰满少妇人妻久久久久久| 三级网站免费观看| 中文字幕人妻专区擁有海量影視資源| 亚洲日韩欧洲无码夜摸摸| 欧美成人小视频| 日日碰狠狠添天天爽不卡| 青青久操手机在线视频| 中文字幕人妻偷伦在线视频| 日韩在线一区二区免费视频| 国产激情午夜理伦片| 日韩欧美不卡中文字幕| 午夜福利免费视频国产| 国产黄色三级片视频| 日本综合另类欧美日韩| 无在线不卡高清一二区岛国| 高清性欧美暴力猛交bd| 欧美猛男性视频免费网站| 无码福利一区二区三区| 国产蝌蚪视频在线观看| 国产第一区二区三区在线观看 | 亚洲精选免费观看| 日本成人在线一区二区| 五月丁香婷婷激情综合在线视频| 国产小久久精品视频| 在线观看免费精品无码视频不卡| 真人无码国产片在线观看| 一级特黄女**毛片| 好色先生TVAPP污下载| 中文字幕亚洲日韩第二区| 国产1024手机看片福利| 午夜福利国产成人A∨蜜殿| 丰满熟妇大乳丰满做爰| 国产超薄丝袜足在线播放| 国内三级片在线观看| 天美蜜桃一二三区无码| 日韩成年人AU高清无码| 亚洲加勒比中文字幕无码| 国产精品国产精品国产精品| 国产大胸无码视频| 人妻无码久久精品人妻性色av| 国产花蝴蝶超级碰91福利| 本地av电影在线观看| 亚洲无码视频精品一区| 亚州精品盗幕偷拍视频| 久久精品上厕所视频| 精品欧美日韩一区二区| 色综合久久88色综合天天人守婷| 日韩人妻特级毛片| 免费看国产精品日系成人| 亚洲综合av婷野外| 无码日本精品一区二区三| 国产一区国产二区久久| 樱花草在线观看播放免费视频| 麻豆韩国无码av| 国产乱子伦视频大全欧美日本日韩aⅴ在线视频 | 亚洲日韩精品α∨片无码| 性欧美videos喷潮孕妇| 国产精品皮裤野战在线| 日韩精品99久久久久中文字幕 | 日本人成网站18禁止久久影院| 小泽玛利亚av在线观看| 大胸女教师冲田杏梨在线观看| exo母亲mv免费观看| 国产的一级毛片完整| 在线看国产中文在线资源| 看看免费a一片欧| 欧美另类性爱视频| 久久精品无码一区二区韩Av| 99视频免费精品视频在线观看| 欧美熟妇A片一级黑人A片一级欧美三级片 | 国产精品色欲AV亚洲懂色四季粉| 亚洲一区二区三区网站在线观看| 免费毛片在线观看67194 | 亚洲综合久久伊人热| 香蕉久久高清国产精品免费| 日本高清va不卡视频在线观看| 国产Aⅴ片九九精品国产99日| 最近最好的2019中文日本字幕| 亚洲国产精品免费内射视频| 好男人www社区电影网| 国产精品一区二区色爱| 亚洲精品卡一卡2卡3卡4卡| 亚洲成av人无码不卡影片资讯 | 国产年轻情侣在线播放| 国产综合一区二区久久| 欧美亚洲日本电影在线| 国内精品自线在拍大学生| 欧美韩国日本美女视频在线观看| 国产在线三级片播放| 不卡日本二区在线| 高潮无码在线观看网| 午夜福利电影在线免费观看视频| 国产国语老龄妇女| 国产小视频国产精品| 美国A级大片在线观看| a级毛片免费全部播放经典| 亚洲国产一区二区三区在线视频| 日韩亚洲高清无码不卡| 国产av一区最新精品| 欧美极品欧美精品欧美视频| 国产美女一级特黄大片人妖| 啊啊啊网站用力| 色欲综合久久中文字幕网| 美女的胸又黄又大网站| 天天干天天草视频| 一本一道波多野结衣一区| 日韩午夜成人精品影视在线观看| 久久婷婷成人综合色综合37| 欧美成人AA久久五月丁香| 中文字幕亚洲日韩无线码男女日批在线观看 | 大白屁股白浆XXⅩSS| 久久99国产6精品久久久| 亚洲欧美精品| 午夜DJ在线视频观看在线1| 中国免费高清视频在线观看| 亚洲av综合变态| 亚洲 日韩 欧美 综合 图区| 亚洲毛片在线亚洲av资源在线观看| 中文一区二区三区字幕| 岛国4k超清在线视频| 中文字女同幕乱码无限2021| 日本一级婬片A片人缓交| 国产强奷伦奷免费看片| 制服丝袜亚洲中文欧美在线| 成人国产网站| 中文字幕专区av丝袜美腿| 99re热视频免费在线观看| 国精品伦一区一区三区有限公司| 久久人妻精品懂色| 麻豆果冻传媒精品国产电影| 午夜色se少妇小视频在线| 另类自拍视频| 日韩免费网页版视频| 午夜福利日韩视频一区二区三区| 制服丝袜精品伊人久久久| 超级黑人巨黑吊SV中国女人| 成年中文字幕在线观看| 窝窝午夜一级看片爽| 美国黄色免费网站| 男人的天堂av高清在线| 亚洲国产精品日韩网站 | 91婷婷五月国产熟女| 精品国产91一区| 国产喷水视频在线观看| 精品一久久香蕉国产线看观看下| 亚洲秘无码一区二区三区欧美| 国产日韩欧美在线一区不卡| 超级黑人巨黑吊SV中国女人| 久热精品视频首页| 综合久久亚洲专区| 肉丝超薄丝袜脚交一区二区| 国产一区国产二区久久| 无码一区二区三区无码精品| 亚州无码另类| 韩日无码视频电影在线| 色婷婷狠狠18禁久久| 丁香久久久激情五月天| 国产亚洲日产在线播放| av美女被强奸AV网站在线观看| 国产成人久久精品流白浆www| 亚洲国产真实视频网站| 国产精品日产一区在线观看| 亚洲一级久久免费黄片| 136AV天堂福利视频导航| 国产不卡福利| 亚洲自拍中文字幕av| 久久亚洲天堂精品视频| 亚洲秘无码一区二区三区欧美| 国产大胸无码视频| 精品+无码免费国产网站| 亚洲网站国产精品| 免费观看黄页网址大全变态| 亚洲午夜成人精品中文字幕| 在线午夜精品一区| 亚洲高清一区二区三区免费| 中文字日产幕码三区的做法大全 | 91不卡在线精品国产国产成人精品福利站| 動漫精品啪啪一區二區三區| 超碰精品在线| 亚洲精品国产一区二区三| 日本最新一区二区三区在线| 鲁丝片无码AV国庆假期大战少妇| 激情免费视频| 涩里番app黄版网站| 国自产精品手机在线观看视频| ?级国产乱理论片在线观看| 欧美三级久久一区二区| 国产精品久久系列| 日日狠狠的日日日| 国产在线丝袜一区二区三区| 多人性激烈的欧美三级视频| 久久这里只有精品免热视频| 日本久久午夜国产精品www| 欧美亚洲视频免费在线观看| 国产成人拍视频精品午夜网| 久久这里有精品视频免费| 深爱婷婷色五月| 95sao国产在线观看| 国产乱人伦中文无无码视频试看| 久久一区二区三区国产精品| 日韩亚洲欧美中文字幕A级| 国产精彩久久久av| 免费国产美女一级视频| 日韩国产成人精品小电影| 日本熟妇中文在线视频网站| 亚洲国产欧美日韩精品高清无码综合区| 九九热视频免费观看国产2| 成人性三级在线视频| 乱码午夜-极国产极内射| 国产熟女一区二区三区精品| 国产美女裸体爽到喷出水来久 | 污视频网站在线| 成人亚洲一区二区精品久久| 熟女人妻av在线观看| 成人免费电影第七色| 小小水蜜桃8高清视频| 日本aa免费电影| 91成人免费亚洲一二三在线| 精品国产电影久久久久| 欧美成人小视频| 国产九九九全国免费视频| 国产小视频全部视频资源| 麻豆精品美少女国产专区| 熟女高潮一区二区高清| 国产综合一区二区久久| 亚洲韩国日本成在线| 少妇爽翻喷白浆视频在线观看| 国产亚洲一区二区三区在线观看 | 18禁免费无遮挡丝瓜视频| 综合人成亚洲国产| 成年人免费看片视频网站| 国产欧美日韩成人免费| 成人18免费的软件| 国产a国产高清免费| 亚洲中久在线视频| 国产亚洲日韩欧美综合系列 | 久久综合伊人77777麻豆最好看中文字幕国语电影 | 多人性激烈的欧美三级视频| 国产成人久久精品流白浆动态| 久久精品国产精品亚洲真人片| 欧美亚洲精品网站| 亚洲欧美成动漫视频h| 一二三四日本中文在线| 诱人的教师在线中文字幕| 一级137片内射偷拍| 日韩精品 电影一区 亚洲高清| 在线中文字幕AV网页| 涩里番app黄版网站| 亚洲成人免费久久| 国产日韩欧美另类重口在线观看| 台湾av国片精品秋霞电影| 久99久精品免费视频15| 国产九九九全国免费视频| 久久久久久综合网天天| 国产在线播放高清不卡| 天天爽夜夜爽夜夜爽| 近親相姦五十路のお楠由賀子| 水蜜桃免费高清电视剧大全| 日韩经典在线播放中文字幕| 337p亚洲日本中国大胆| 99精品一区二区成人精品妓女| 妖精视频入口在线播放| 国色天香卡一卡二乱码| 一级特黄女**毛片| 体育生gay脱裤子自慰感受 | 91精品人妻人人做人碰人人爽亚洲a| 暖暖亚洲一区二区三区av无码| 午夜影院在线成人| 邪恶国产在线看| 欧美极品欧美精品欧美视频| 国产模特在线看99| 人人澡人人爽人人精品| 国产乱理论在线播放| 日韩高清在线观看?v片| 亚洲日本中文| 欧美猛男性视频免费网站| 国产情侣高清在线视频| 最新亚洲人人人人超碰| 看真人一级毛片免费| 99在线视频精品费观看视| 91久久无码99精品高潮久| 亚洲A∨无码一二区三区在线播放 麻豆精品美少女国产专区 | 日韩147a级av在线| 野花社区最新免费高清完整在线观看| 国产精品一区二区八点AV不卡| 无码系列性饥渴寡妇肉乱| 日本在线黄色影片| 精品一区二区免费无码| 亚洲欧美日本综合一区二区三区| 亚洲国产真实视频网站| 好男人www社区电影网| 亚洲熟妇无码V在线观看| 欧美性爱五月天| 久久久亚洲综合| 精品无码里番在线观看| 91精品全国免费观看含羞草| 无码人妻一区2区精品视频久久久| 小泽玛利亚av在线观看| 性色AV青草国产在线观看| 87理论片高清免费理论片| 皇帝双龙入户1v2| 色婷婷综合中文字幕色噜噜狠狠色综合久久| 别揉我奶头~嗯~啊小视频| 五月婷婷激情六月| 日韩av无码av免费av不卡| 老司机久久99久久精品| 精品性色丁香花在线视频完整版| 歐美一區二區激情視頻| 精品国产亚洲无码| 人人插人人搞| 欧美精品日韩精品国产成人| 视频福利在线| 欧美国产精品午夜福利| 国产一区二区午夜精品| 久久综合伊人77777麻豆最好看中文字幕国语电影 | kk久精品毛片A级蜜桃| 久久精品无码影视| 性欧美video另类hd尤物| 亚洲春色第一页| 肉蒲团之性战潘金莲3| 一本久道久久综合狠狠躁AⅤ| 婷婷丁香五月天激情网站在线视频| 亚洲熟妇无码V在线观看| 经典自拍视频欧美日韩| 亚洲毛片在线播放一区二区| 欧美另类杂交a| 一卡二卡三卡| 先锋5566在线不卡视频| 亚洲第一国产毛片久久久| 婷婷综合在线| 有色衣服黄又爽的桶女人网站| 久久免费看黄A级毛片资讯| 亚洲高清精品bd在线观看| 国产在线538自拍视频| 777米奇影院第七色色| 美女的胸又黄又大网站| 人妻大战黑人白浆狂泄| 插女人逼逼芭樂视频| 2018国产精产品在线不卡| 日本一区不卡在线| 91麻豆国产精品91久久久| 黄色网址免费在线观看| 美女未18禁止看视频| 亚洲成人福利专区| 18禁日韩黄色网| 亚洲男人综合久久综合天| 久久精品国产亚洲av伦理| 国产高清成人免费视频在线观看| 国产毛片A啊久久久久| 天天干夜夜操日日干| 了解最新亚洲无码一区二区三区爽爽爽 | 日韩精品视频一区二区三区不卡| 每日最新不卡av在线播放| 日本一道码一区二区下载| 成人国产av软件| jijzzizz老师出水喷水喷出| 一级一级人与动毛片免费| 草莓视频无下载无限看| 国产一级毛片特级国产片| 夜夜躁很很躁日日躁麻豆| 动漫精品国产一区二区| 亚洲精品美女在线观看播放一区二区| 久久伦理免费电影| 精品国产ⅴ无码大片在线观| 东北浪妇的粗口叫床| 国产成人调教视频在线观看| 差差差很疼30分钟免费软件下载 | 久久久噜噜噜精品麻豆av| 草莓榴社区免费观看| 激情欧美日本国产高清| 99国产我和子的与子乱视频| 欧美日韩三级片一区二区三区| 亚洲一二区精品在线观看| 后入内射欧美99二区视频| 亚洲AV鲁丝一区二区三区性生生活大片又黄又 | 好男人资源在线WWW免费| 上海塑料门窗出产发卖| 人妻少妇精品性色αv在线| 欧美日韩高清精品一区二区| 亚洲一级无码在线视频| 美国a级欲女春潮中文字幕| 国产a国产高清免费| 999涩国产精品网址| 国产不卡在线高清播放| 国产精品一区二区色爱| 久久黄色免费观看| 正在播放无套少妇出租屋| 思思热视频精品在线播放| 麻豆精品美少女国产专区| 亚洲欧美综合在线一区二区| 国产福利午夜在线观看| 国产拍免费精品视频| 日韩高清毛片亚洲| 久久精亚洲日本香蕉视频观看视频| 国产在线观看自拍欧美| 国产福利午夜在线观看| 国产福利91精品在线| 国产精品女人在线观看| av一区二区日韩| 日韩免费无码电影一区二区三区| 国产人成品精亚洲草莓| 亚洲综合无码久久久久久| 亚洲熟妇AV三区四区在线观看 | 小泽玛利亚高清无码中文| 偷窥视频一区| 婷婷久久综合久94| 日韩高清自拍搜索在线观看| wwwaaa日韩在线播放| 久久不见久久见中文字幕免费| 国产一级黄色片久久| 电影中文字幕不卡| 久久青草免费91线频观| 日韩日逼色网视频| 国产偷国产偷高清视频| 射精色黄网站视频| 成年中文字幕在线观看| 水蜜桃免费高清电视剧大全| 久久久久国产中文字幕| 日本不卡高清在线视频| 日韩高清av在线播放| 热门事件黑料网| 中文字幕综合| 日韩无码网址推荐| 91精品一级毛毛片| 久久国产精品亚洲精品午夜| 久久久久九国产精品| 精品日韩国产欧美成人| 迷奸内射碎花裙大学生无套内射流白浆| 中文字幕精品乱码在线观看| 国产Av无需任何播放器| 亚洲国产成人?V毛片大全| 视频黄色在线观看卡| 视频福利在线| 机机对机机2023手机免费下载版| 久久精品免费高清| 狼友精品视频在线观看网址| 亚洲国产一区明星换脸| 小泽玛利亚av在线观看| 亚洲韩国AV每日在线观看| 国产熟女一区二区三区精品| 国产高清成人免费视频在线观看 | 亚洲欧美中文字幕专区| 爆乳喷奶水无码中文字幕| 国产男女超爽视频网站| 一二三四视频在线观看中文版免费| 黄色免费一级播放片| 国产乱子伦在线观看| 在线看免费Av免费| 国产亚洲乱码专区| 黄页网站视频大全免费| 亚洲精品人妻av| 欧美末成年video水多| 欧美一级aa大片高清在线播放 | 丰满人妻被公侵犯的电影| 亚洲色网视频99| 无码福利一区二区三区| 欧美日韩视频在线观看综合网| 国产乱叫456在线| 亚洲欧美精品| 免费视频xxxx大片| 黑人巨大跨种族VIDEO| 69影院在线观看国产精品| 日韩久久久久久久久久免费 | 亚洲精选av无码一区二区二三区| 超级黑人巨黑吊SV中国女人| 亚洲欧美台湾综合色妞网| 成年大片免费视频播放无广告| 一级黄色大香蕉| 欧美一级A√在线观看| 永久不封國產毛片AV網煮站| 国产在线观看网站| 免费精品国自产拍在线播放| 中日韩人妻av第1页av| 99在线视频精品费观看视| 毛片1毛片2毛片3毛片4免费观看| 欧美黑人巨大在线| 中文亚洲欧美乱码在线观看| 狠狠干天天爱| 99久久高清热精精品| 国产一区二区午夜精品| 欧美日韩三级| 日韩在线一区二区三区不卡视频| 精品国产电影久久久久| 诱人的老师7HD中字| 亚洲第一国产毛片久久久 | 欧美精品亚洲综合自拍图片| 国产成人久久Av免费高清免费| 天堂资源WWW网在线| 国产日韩精品爆乳AA| 亚洲福利精品一区三区| 欧美一级a视频免费| 一色屋色费精品视频在线观看| 婷婷综合五月天| 日韩美中免费Av| 亚洲黄色激情视频网站| 久久网站亚洲香蕉人人| 国产一成人区二区三区| 亚洲乱亚洲乱妇24p| 国产老熟女精品一区免费观看全集| 国产做ā爰片久久毛片ā片美国| 久久国产高清伦理久久一| 亚洲人成图片网站| 国产做ā爰片久久毛片ā片美国| 黄色性生活真人片| 色欧美精品在线小视频| 日韩视频免费观看| 精品国产91一区| 一二三四日韩不卡| 成人午夜福利大片| 欧美国产精品一区teen| 中文字幕无码日韩?V| 亚洲精品偷拍区偷拍无码久久| 色草莓视频在线观看| 动漫无码第一页专区| 国产精品视频超级碰| 六十路熟女浓厚交尾10人| 亚洲欧美国产精品无码中文字 | 亚洲男人天堂2020| 丰满丝袜熟女HD| 免费福利网站18| 国产Aⅴ片九九精品国产99日| 国产91在线播放九色竹菊| 午夜国产手机自拍视频| 久章草在线视频播放成人| 波多野结衣超清无码中文42部| 午夜亚洲视频在线观看| 国产精品视频啪啪网| 国产精品激情在线看| 欧美一区二区三区精品啪啪 | 久久亚洲精品视频免| 制服欧美另类中文字幕第三页| 星空无限传媒官网星媒体网站| 欧美肉肉丝视频一区二区| 成人精品影院一区二区三区| 亚洲一卡2卡3卡4卡国产网站| 国产高清免费a级在线观看| 99国产乱高清成免费视频| 国产免费午夜福利在在线| 啊灬啊灬啊灬高潮了女舞蹈| 三级国产毛片| 综合天天影视在线播放| 国产高清免费观看a∨片| 精品国产乱码久久久久久浪潮在线观看| 毛片免费播放久久精品| 69影院在线观看国产精品 | 99国产午夜精品| 亚洲6080YY久久无码中文 | 免费观看黄页网址大全变态| 动漫高H纯肉无码视频在线观看| 51国偷自产精品一区在线视频| 国产黄在线观看免费视频45分钟| 亚洲噜噜狠狠网址蜜桃av9| 特一级黄色在线观看| 亚洲国产视频一区| 国产日韩av有码在线| 国产精品久线观看视频 | A级毛片免费全部播放A级毛片| 亚洲国产中文精品之一线久久| 国产精品hv在线观看| 最新国产日韩欧美| 国产成人偷一区二区| 最近高清国语中文在线观看免费| 久久亚洲精品日本波多野结衣 | 美日韩激情一区二区 | 黄色一区二区午夜啪啪| 农村女人特黄一级毛片| 射精色黄网站视频 | 欧美精品一区二区三区综合| 午夜精品一区二区三区三上悠亚 | 极品美女aⅴ在线观看| 丝袜欧美视频首页在线| 99精品在线无码| 亚洲欧美午夜在线| 热99re8久久免费视精品频| 男女啪啪视频免费在线观看| 国产精品精品二区| 日本一视频一区视频二区| 免费人成在线观看成人片| 午夜视频在线| 国产午夜免费啪视频免费观看 | 欧美一级A√在线观看| 中文一区二区三区字幕| 国产精品入口麻豆完整版| AV中文字幕在线观看亚洲成年人在线观看| 亚洲欧美SUV精品| 国产A级黄片下载| 中文字幕亚洲日韩第二区| 国产99精品在线观看免费看片软件在线下载| 午夜免费福利片观看| 成人14欧美片免费| 亚洲国产综合997| 国产在线精品一区导航| 欧美人妻一区二区三区| 巨胸喷奶水视频WWW| 久久精亚洲日本香蕉视频观看视频| 分享一个无毒不卡的网站| 男女猛烈无遮挡激烈动态图| 熟女高潮一区二区高清| 好大好爽好深舒服死了a片| 欧美亚洲国产一区二区三区综合| 粉嫩虎白女毛片| 亚洲欧美另类国产一区二区| 精品久久夫妻探花| 差差差很疼30分钟免费软件下载 | 免费观看黄页网址大全变态| 欧美熟妇A片一级黑人A片一级欧美三级片 | 免费毛片在线观看67194| 东北老熟女高潮嗷嗷叫视频| 色窝窝播放视频在线观看 | 久久久性视频| 国产日韩欧美另类重口在线观看 | 热门事件黑料网| 亚洲伊人色欲综合网无码| 136AV天堂福利视频导航| 午夜无码精品免费看性色| 久久精品國產在熱亞洲完整版| 女人爽到高潮潮喷18禁| 国产免费又色又爽又黄的小说| 草莓视频官方网站下载| h成本人在线观看视频网站| 18禁入网站一区二区三区| 人妻无码久久精品人妻性色av | 成人福利在线观看| 女人和拘做受全程看| 国产中文欧美日韩| 亚洲高清精品bd在线观看| 亚洲精品美女久久久久9999| 啊灬啊灬啊灬快灬水多多游戏特色 | 亚洲美女色图在线| 国产福利短视频午夜| 亚洲av成熟成人国产一区| 日韩免费三级片一级片毛片| 少妇人妻综合久久中文字幕| av无码精品岛国片在线观看| 国产激情AV黄片亚洲| 日韩视频精品免费| 亚洲伊人精品国产欧美中文字幕| 人妻夜夜爽天天爽三区麻豆Aⅴ网站| 久久免费看裸体电影| 成人无遮挡免费视频在线观看 | 中文字幕日本二区| 五月天色悠悠中文字幕| 国产福利91精品在线| 久久在热视频特级毛片| 亚洲女人影院想要爱| 免费看强人物漫软件下载| 产成 人 在线观看 亚洲| 欧美一级aa大片高清在线播放| 人妻偷拍无码中文字幕手机版 | 忘忧草社区中文字幕www| 亚洲精品污污网站欧美| 欧美二区一区视频久久久久久9999| 一本大道AV久久综合| 日本一级婬片A片人缓交| 亚洲av综合变态| 迷奸内射碎花裙大学生无套内射流白浆| 99国内自产自拍无码视频| 亚洲国产精品一区二区精品| 三级网站免费观看| 伊人色综合久久88加勒| 亚洲综合图区分享的内容是很丰富的| 国产精品亚洲?V无人一区二区| 精品无码线一区二区三区| 亚洲中文字幕精品无码中文| 欧美日韩国产成人精品| 金瓶艳史无删减版在线观看| 偷窥视频一区| 日韩中文字幕无码中文字| 亚洲の无码国产の无码影院| 在线中文字幕A√| 精品亚洲卡一卡2卡三卡乱码 | 嫩草影院久久久| 在线视频4k岛国无码专区| 成年人免费看片视频网站| 中文字幕精品亚洲一区1080P| h成年动漫在线看网站无码 | 91精品国产综合欠| 精品 国产 日韩一区三区| 嫩草影院在线观看一区青青草 | 漂亮老师做爰2在线观看| 久久久亚洲精品色| 亚洲春色第一页| 大白屁股白浆XXⅩSS| 人妻丰满熟妇AⅤ无码区| 男人天堂黄色视频在线观看| 国产精品三级女主播| 亚洲成人福利专区| 97超碰在线公开免费| 精品欧美一线二线三线蜜桃| 在线播放国产亚洲精品首页| 國產福利片在線觀看| 天堂∨a欧美∨a亚洲∨a| 快速了解99久久人妻精品免费一区| 国产又爽又黄的视频又刺激| 在线看污视频| 国产精品网你懂的| 散兵大战史莱姆vicineko网站channel=phqwe033 | free乌克兰嫩交hd| 无码日本精品一区二区三| 亚洲曰韩精品久久久| 亚色中文91在线| 国产精品成人h视频| 国产AⅤ一区二区三区传媒| 三级片在线无码| 亚洲av秘无码18日韩| 日韩AV一区二区三区在线| 午夜天天福利小色网视频| 国产超薄丝袜足在线播放| 欧美成人精品二区三区四区99| 亚洲自拍欧美综合| 日韩欧美中文字幕精品| 日韩囯产va精品一区二区久| 国产高清无码一区二区三区在线观看| 91黄色在线免费观看视频| 動漫精品啪啪一區二區三區| 亚洲色AV 性色在线观无码| 野花社区2019最新视频| 狠狠色丁香久久婷婷综合不卡| 亚洲永久免费播放片| 国内精品一区二区综合视频| 精品人妻系列乱码一区二区三区| 免费观看黄页网址大全变态| 有色免费无码在线| 在線播放國產一區二區三區| 欧美日韩一卡2卡三卡4卡乱码毛1| 亚洲欧美色欲色香| 日韩极品美女视频在线| 免费视频xxxx大片| 欧美另类性爱视频| 制服丝袜精品伊人久久久| 中文字幕欧美日韩人妻| 亚洲国产免费播放| 国色天香卡一卡二乱码| 国产av日韩精品| 男女同床爽爽视频网站| 不戴奶罩的邻居hd中文| 亞洲歐久久国产一区二区三区| 亚洲乱亚洲乱妇24p| 欧美性大战xxxxx久久久√| 久久久久电影亚洲男人麻豆| 亚州精品色网视频| 色欲久久av一区二区三区| 亚洲欧美精品综合在线| 日本精品www一区二区三区| 国产真人中国?级毛片| 四虎精品一区二区 | 久久伊人一本亚洲| 综合人人天天国产天天人人| 成年男男无码A∨片在| 无码免费国产在线观看91| 国产91精品一区二区蜜臀| 毛片永久免费视频| 91丨PORNY丨高跟丝袜| 精东传媒国产APP| 黄瓜视频APP视频免费观看| 日韩性无码不卡免费专区| 中国一级特黄精品在线播放| 亚州AV又大又粗又硬| 激情综合丁香婷婷六月| 欧美精品电影在线| 拍国产乱人伦偷精品视频果冻传媒| 国产青草亚洲香蕉精品久久| 国产精品成人黄色小视频| 欧美亚洲精品中文字幕乱码| 在線播放國產一區二區三區| 亚州精品色网视频| 免费看毛片的网站| 国产精品一区二区色爱| 亚洲欧美日韩国产精品激情综合在线 | 欧美一级理论在线观看| 国产黄色美女日本视频| 午夜电影街亚洲av无码| 七海久代无码中文字幕久久| 久久鬼色日韩国产第一页| 精品国产福利一区二区三区| 亚洲日本va午夜中文字幕| 久久久久久综合网天天| 中文字幕欧美亚洲精品网站| 国产精品久久久精品| 乱码午夜-极国产极内射| 中文字幕日韩激情无码不卡码| 00粉嫩高中生洗澡偷拍视频| 黄页网站视频大全免费| 亚洲欧美成人精品久久| 一个人在线观看的免费视频www中文 | 亚洲中文?ⅴ中文字幕一区久久| 亚洲欧美日韩国产sss| 国产精品粉嫩嫩在线观看| 免费毛片在线观看67194| 日韩AV一区二区三区在线| 国产不卡女视频在线播放| 国产18午夜免费观看| 91精品国产aⅴ一区二区| 国产一成人区二区三区| lutube视频在线观看| 91精品国产aⅴ一区二区| 亚洲黄色激情视频网站| 蜜桃AV自慰久久久久免费网站| 国产年轻情侣在线播放| 男人和女人在做性视频| 最新欧美色欧美理论电影| 免费人成视频x8x8在线观看| 国产高清狼人香蕉在线| 欧美精品国产精品制服诱惑| 看看免费a一片欧| 白嫩大学生情侣酒店视频| 久久ae精品一区二区三区| 大香伊蕉在人线国产av老女人| 99RE热视频这里只精品4| 在线观看免费精品无码视频不卡 | 散兵大战史莱姆vicineko网站channel=phqwe033 | 色综合久久久久无码专免费| 国产成人久久精品流白浆动态 | 亚洲精品中文字幕制服丝袜| 日韩高清毛片亚洲| 青青青视频免费一区二区| 高清性欧美暴力猛交bd| AAAA大片免费看在线AAAA大片免费看在线| 国产亚洲午夜伦理| 香蕉午夜久久久亚洲欧洲湿 | 91av免费在线观看视频| ?级国产乱理论片在线观看| 噜噜噜爽爽爽午夜福利深夜| 狼友精品视频在线观看网址| av一区二区日韩| 亚洲自拍中文字幕av| 日韩欧美高清在线字幕| 一级做a爱片久久毛片蜜桃| 欧美视频 福利| 人妻系列久久精品一区二区| 东京热无码一区二区无码观看| 日本理论片午夜理论片| 人妻互换hdf中文| 欧美人成综合视频在线| 亚洲国产成人91| 天天爽夜夜爽夜夜爽| 亚洲熟妇无?v在线观看| 国产一区二区在线爱| 亚洲精品一级二级| 国产精品一久久香蕉国产观看次数几十亿次 | 嫩草影院入口一二三免费| 精品人妻少妇一区二区三区在线| 精品久久久中文字幕久久99| 动漫精品中文字幕制服一区| 女人口18毛片a毛片| 国产午睡精品沙发系列| 国产乱对刺激对白视频在线| 成人无码区免费a∨视频| 亚洲男女天堂| 日本XXXXⅩ人成年视频| 产成 人 在线观看 亚洲| 亚洲精品国产一区二区三| 日韩免费三级片一级片毛片| 中文字幕综合| 欧美一级特黄免费在线观看| 三级黄色毛片网站| 国产乱人伦一二三区| 午夜男女XX00视频福利免费| 男女爽爽爽激情视频国产| 亚洲精品偷拍区偷拍无码久久| 欧日韩av无码一级| 国产精品日产一区在线观看 | 国产又色又猛又黄的网站| 国产又黄又硬又猛的视频| 国产日产欧产精品精品首页| 国产剧情三级片在线视频| 国产午夜人成在线视频麻豆| 99精品免费在线| 最新国精品产露脸偷拍视频| 国产猛烈高潮大叫视频| 日本一区二区三区国产高清| 黄色一级录象片 | a级免费在线观看国产在线拍揄自揄视频不卡99 | 日本人成网站18禁止久久影院| 男人的天堂三八在线观看| 国产精品虐乳在线播放| 欧美一级a视频免费| 888福利站高清免费视频| av免费午夜福利不卡不打码| 日韩av无码av免费av不卡| 国产最新福利网站在线| 亚洲国产伦理自拍| 欧美视频 福利| 亚洲国产精品高清在线| 亚洲成人精品网址| 日本熟妇乱人伦精品视频| 曰韩一级欧美一级久久| 在线精品国产蜜月一区二区三区| 国产精品不卡无码?V在线播放| 国产无套专区精品一区| 嫩草国产极品在线播放| 一区二区三区四区精品久久| 欧美粗大猛烈水多18p| 最终痴汉电车3中文版下载| 啪啪高潮喷水女娇喘免费观看| 邪恶国产在线看| 亚洲一区二区人妖| 成人无码区免费A片视频韩国| 丰满熟妇大乳丰满做爰| 婷婷五月丁香免费在线观看| 国产麻花豆剧传媒精品免费| 亚洲人成电影网站色mp4| 亚洲亚洲人成网站| 少妇无码aⅴ无码专区| 欧美一区二区三区爱爱| 成人久久网国产精品五月天| 免费一级a毛片免费观看| 欧美一区二区三区爱爱| 精品一区二区不卡无码?v| 少妇人妻综合久久中文字幕| 欧美精品午夜理论片不卡在线播放| 亚洲制服丝袜av一区二区三| 免费无码婬片????片直播| 久久久久国产中文字幕| 免费日本欧美精品| 午夜DJ在线视频观看在线1| 久久亚洲AV成人片一区| 高H禁伦餐桌上的肉伦np影片| 99久久精品费精品国产一区二| 樱花草在线观看播放免费视频 | 国产高清一区二区三区视频在线| 妞干网在线视频免费观看| 九九久久成人精品| 日本韩国欧美在线另类不卡| 久久久性视频| 久久精品亚洲无中文东京热| 日韩免费高清操逼视频| 女同一区二区免费aⅴ| 国产精品一区久久麻豆| 久热香蕉在线视频免费版| 日韩av免高清无码| 91色婷婷成人精品亚洲| 99在线热播精品免费| 国产乱伦免费视频| 成人国产精品麻豆| 91精品久久久久网| 成人丁香五月天天堂AV在线一区| 大乳丰满人妻中文字幕日本| 动漫美女被免费网站在线视频| 色综合视频网站| 国产?亚洲 日韩 欧美 综合| 风间由美 一区 二区| 亚洲 日产 综合 精品| 亚洲av成熟成人国产一区| 乱码丰满人妻一区二区| 国产精品吹潮在线观看中文| 国产乱对刺激对白视频在线| 午夜国产精品综合视频网站| 超碰国产carpon97公开一区| 黑人亚洲三级电影在线观看| 中文字幕人妻熟女人妻a62v网| 99热这是里只有精品97| 国产色综合有码无码| av成人在线观看日韩| 草莓视频APP下载下载污| 不戴奶罩的邻居hd中文| 国产高清精品一级毛片| 欧美在线成人亚洲| 亚洲色爱图小说专区| 亚洲国产成人综合香蕉久久| 久久无码爆乳一区二区三区 | 網友分享久久精品国产福利心得 | 亚洲1区2区视频在线观看 | 露脸大学生情侣偷拍精品一区| 乱人伦xxxx国语对白| 久久无码爆乳一区二区三区| 欧美三级久久一区二区| 欧美性做爰片免费视频看| 国产三级精品三级在线观看777| 少妇人妻一区二区三区| 最终痴汉电车3中文版下载| 久久久人妻一区二区| 国产美女久久久毛图片| 亚洲女同成αV人片在线观看| 亚洲乱妇熟女爽到高潮视频高清| 成人裸体免费观看视频在线观看| 日韩日逼色网视频| 久久久精品久久日韩一区综合| 欧美、另类亚洲日本一区二区| 亚洲精品色播一区二区| 18禁免费无遮挡丝瓜视频| 五十路中文字幕| 尤物92福利视频午夜1000合| 日日噜噜夜夜狠狠久久丁香五月亚洲高清毛片一区二区 | 五十路中文字幕| 欧美 日韩 中字 国产| 亚洲欧美一区二区三| 激情四射综合五月丁香网| 久久最新免费视频| 久久精品國產在熱亞洲完整版| 4399高清完整版在线观看| 99久久高清热精精品| 亚洲韩国AV每日在线观看| 成人裸体免费观看视频在线观看| ijzzijzzij亚洲的大全| 男同毛片GV资源免费| 亚洲欧美台湾综合色妞网| 亚洲97亚洲激情综合在线| 奇米影视第四色777| 精品国产乱码久久久久久浪潮在线观看| 免费毛片在线观看67194| 超碰在线观看成人| 男女无遮挡吃奶gift动态图| 污视频网站在线| 久久国产精品亚洲精品午夜| 日本最新一区二区三区在线| 东方在线亚洲| 大尺度国产私拍福利在线观看| 波多野结衣超清无码中文42部| 国产乱对刺激对白视频在线| 亚洲高清一区二区三区免费| 国产麻花豆剧传媒精品免费| 欧美成人一二三四区电影| 妖精视频入口在线播放| 国产羞羞视频在线播放| 精品国产ⅴ无码大片在线观| 中文字幕亚洲三级| 淫荡人妻视频| 成人国产精品麻豆| 欧美日韩三级片一区二区三区| 女同亚洲一区二区无线码| 日韩高清在线观看?v片| 国产最火爆国产日韩综合一区网站| 奇米色欧美一区二区三区| 久久精品黄色录像| 淫荡人妻视频| 69网在线观看免费| 亚洲综合久久2024| 久久国产精品最新一区二区| 国产欧美一区二区三精品酒店| 最新国产福利一区二区免费视频| 将军与娇妻各种做高h| 亚洲图片视频在线| 星空无限传媒官网星媒体网站 | 日本一卡二卡不卡视频查询| 久久精品无码一区二区韩Av| 日本精品精品一二区一本到| 国产剧情演绎系列丝袜高跟新版怡红院院| 国产在线观看自拍欧美| 诱人的老师7HD中字| 野花社区WWW日本视频| 婷婷久久综合九色综合p| 日本高清视频不卡一区二区| 最新亚洲精品国产免费无码| 亚洲网站国产精品| 乱码丰满人妻一区二区| 国产91精品一区二区蜜臀| 香蕉高清免费永久在线视频| 亚洲欧美成动漫视频h| 亚洲一级久久免费黄片| 亚洲综合无码久久久久久| 国产在视频线精品视频二代| 国产激情在线一区二区| 青青热久久国产久精品| 国产精品久线观看视频 | 国产精品视频国产永久视频| 黄色网址免费在线观看| 欧美成人人人97超碰超爽| 91婷婷五月国产熟女| 亚洲午夜精品一区二区三区四区 | 日韩久久久精品首页一本在线免费视频| 丰满人妻一区二区色| 一二区国产女主播在线视频| 综合亚洲高清中文| 亚洲精品美女久久久久9999| 国产亚洲亚洲精品777| 在线午夜精品一区| 天天爽天天爽夜夜爽国产自己精品| 久久婷婷国产综合| 日韩免费电影四级| 亚洲 日韩 欧美 综合 图区| 99精品费精品国产一区二区| 亚洲男人综合久久综合天| 欧美亚洲精品网站| 亞洲無碼天堂在線播放| 亚洲精品一区二区国产精品| 成人免费一级| 免费在线观看的黄网站| a一区二区三区免费视频| 国产啊v在线看免费播放| 黄色一级录象片| 高清性欧美暴力猛交bd | 绯色精品人妻av一区二区| JM天堂入口唯一官网| 国产成人福利视频在线观看| 嫩模被xxxx视频在线观看| 午夜DJ在线视频观看在线1| 制服丝袜亚洲中文欧美在线| 色欲久久av一区二区三区| 免费一级真人片在线播放| 日本少妇aa一级特黄大片| 色综合久久88色综合天天人守婷| 无码区国产区在线播放| 国产美女白嫩在线观看| 國精品無碼一區二區三區在線| a级毛片免费全部播放经典| 亚洲爆乳aaa无码专区按摩| 久在线久热精品婷婷白嫩大三| 大胸女教师冲田杏梨在线观看| 久久99国产6精品久久久| 国产区欧美区一区二区精品区| 国产美女视频免费看网站| 草草尤物视频网站| 亚洲日韩精品无码看片久久| 精品视频一区二区三区在线高清| 国产av毛片成年动作片| 亚洲熟妇AV三区四区在线观看 | av中文字幕无码一二三区 | 成人国产一区二区三区香蕉| 亚洲欧洲日产精品区| 欧美一区二区三区尿尿| 国产超碰人人爽人人做不卡| 久久这里只有精品视频国产6| 精品国产午夜福利一区二区三区| 欧美日韩av无码精品久线观模式| 久久国产美女一级毛片高清 | 色久一噜在线视频| http日韩在线播放| 亚州视频一区二区三区色伦| 三级片在线无码| 87理论片高清免费理论片| 亚洲国产中文一区二区三区四区| 99国产我和子的与子乱视频| 在线播放免费黄片亚洲区| 日韩无码网址推荐| 顶级欧美丰满熟妇xxxxx视频| 在线不卡免费在线视频| 欧洲av无码放荡人妇网站| 国产69精品亚洲一级片| 超pen个人视频亚洲| 香蕉网站视频高清在线观看| 狠狠噜天天噜日日噜综合久| 少妇高潮太爽了动态图| 91久久精品无码一区二区大全| 中文无码性爱| 全免费的一级毛片| 美女少妇一级毛片免费| 国产精品v欧美日韩精品suv| 国产精品第一区第一页| 林智妍演绎大尺度电影| 亚洲国产AⅤ精品一区二区百度| 久久99国产综合精品婷婷五月| 成人无码免费视频97| 免费精品国自产拍在线播放| 日本中文字幕版在线观看| 91精品国产全国免费观看| 日韩精品色综合| 国产h高清视频免在钱| 網友分享极品蜜桃臀美女啪啪心得 | 六月丁香婷婷亚洲中| 无码专区在线观看韩国| 国产91精品久久免費資訊| 国产欧美成人在线| 国产精品视频午夜福利网国产a| 亚洲国产毛片一区精品| 亚洲欧美另类日本人人澡| 国产日韩欧美综合不卡在线观看| 邪恶国产在线看| 妖精视频入口在线播放| 国内精品久久久无码一区二区| 成人在线观看青青草| 别揉我奶头~嗯~啊小视频| 日本二本道dvd视频| 国产在线观看黄片视频| 日韩成人在线色网视频| 日本在线成人中文网站| 最新亚洲精品国产免费无码| 訪問国产成人亚洲精品播放器| 欧美日韩亚洲综合在线一区二区| 国产18午夜免费观看| 午夜电影街亚洲av无码| 欧美日韩精品综合在线一区| 国产爆乳视频在线播放| 国产最新福利网站在线| 又刺激又黄的一级毛片| 国产精品成人麻烦视频| 精品亚洲福利视频| 91久久久精品人妻专区不卡| 毛片一区二区在线看| 亚洲AV无码精品久久久久成人精品久久久 | 亚洲欧美中文字幕专区| 020国产福利一区二区久久| 女同一区二区免费aⅴ| 欧美日韩一区二区线看免费| 免费a级毛片无码免费视频120 | 成人xxx免费视频播放| 亚洲午夜成人精品中文字幕| 亚洲精品无码福利国产在线观看| 一个人在线观看的免费视频www中文 | 国产区欧美区一区二区精品区| 99久久国产视频一区二区| 97人妻碰碰碰碰久久久久总站| 嫩草影院在线观看一区青青草 | 成人免费永久在线观看视频| 成人春色视频在线观看| 国产的一级毛片完整| 国产高清免费观看a∨片| 色偷偷东京热男人的天堂| 成年大片免费视频播放无广告 | 欧美 日韩 中字 国产| 欧美精品亚洲综合自拍图片| 热99re8久久免费视精品频| 皇帝双龙入户1v2| 欧美专区亚洲专区电驴| 国产精品亚洲精品久久品尚网| 97久视频精品视频在线老司机| 国产成人高清精品亚洲一区二区| 亚洲日本精品污网站| 国产精品精品视频| 色噜噜狠狠综曰曰曰图片| 中文字幕人妻无码专区| 国产一区二区午夜精品| 免费人成在线观看成人片| 国产超薄肉丝袜在线视频下载| 直接看的黄色网址| 99精品无圣光私拍一区二区三| 国产高清无码一区二区三区在线观看| 国产视频视频一区二区| 亚州无码另类| 欧美日韩精品一区二区在线线| 欧美一级特黄高清大片做受| 亚洲精品卡一卡2卡3卡4卡| 精品无码久久| 好色先生TVAPP污下载| 国产在线播放高清不卡| 国产一级a作爱片全过程片| 国产国拍亚洲精品永久不卡| 在线播放国产亚洲精品首页| 中文字日产幕码三区的做法大全| 插女人逼逼芭樂视频| 日韩特黄a级毛片免费观看| 色精品一區二區三區| 日韩av在线高清不卡观看| 国产在线观看黄片视频| 看欧美美女隐私网站| 欧美 日韩 国产 中文| 亚洲av秘无码18日韩| 视频福利在线| 欧美成人免费全部观看60岁| 暖暖亚洲一区二区三区av无码| 7799精品天天综合网| 日韩亚洲欧美中文字幕A级| 午夜影院在线成人| www.伊人黄色视频在线观看| 国产女主播菲菲全部视频| 少妇无号一区二区三区| 中文字幕专区av丝袜美腿| 美女脱了裤衩让男人桶爽| 欧美夜夜噜2017最新| 三级网站免费观看| 国产又黄又硬又猛的视频| 另类专区综合国产中文精品| 欧美一级黄色黄页| 精品麻豆一区二区三区乱码| 久久人人97超碰CAOPOREN| 成人免费永久在线观看视频 | 草莓视频无下载无限看| 国产白嫩无套白浆456| 亚洲av无码成h人动漫在线观看3d| 能免费看一级片的网站| 久久精品上厕所视频| 多人性激烈的欧美三级视频 | 亚洲欧美一区二区三| 亚洲一级大毛片自慰系列| 成人影片aⅴ毛片免费观看| 男女嘿咻免费毛片| 国产在线播放高清不卡| 欧美性操大鸡狠狠| exo母亲mv免费观看| 亚洲第一次久久精品电影| 亚洲日本韩国欧美在线一区| 精品视频一区二区三区在线高清| 久久ae精品一区二区三区| 粗大猛烈进出呻吟声视频| 最近中文av字幕在线中文| 有色衣服黄又爽的桶女人网站| 黄页网站视频观看免费| 日韩欧美大香蕉| 最新日韩AV高清专区| 毛片一区二区在线看| 粉色成视频人app下载| 激情五月av在线| 亚洲欧美日韩欧美中文字幕| 欧美老女人老熟女性爱视频| 亚洲精品无线播放器播放| 99热精品免费观看全部| 2021最新亚洲国产精品推荐| 亚洲欧美中文高清在线专区| 婷婷色五月综合色尤物| 男女上下猛烈啪啪免费看| 无码人妻又粗又大| 久久亚洲精品日本波多野结衣 | 日韩无码中文无码| 国产91在线播放九色竹菊| 国产91最新视频| 看真人一级毛片免费| 美女校花遭强奷乳液漫画| 128877带你另眼看世界| 鲁大师在线影院免费观看| 少妇高潮毛又多又黑| 国产无遮挡又黄又爽网站 | 亚洲欧美日韩国产精品激情综合在线| 亞洲歐久久国产一区二区三区| 国产精品色欲AV亚洲懂色四季粉| 91视频国产尤物| 国产精品久线观看视频| 沟沟人体一区二区| 在线A毛片免费视频观看| 日本一级婬片A片人缓交| 高中生破处视频| 亚洲高清一二三区| 任你干草精品视频免费国产| 国语自产精品视频在线第| 中文字幕欧美三区在线观看| 欧美成人免费全部观看60岁| 国产成人久久精品流白浆动态| 草莓视频APP下载下载污| 免费精品国自产拍在线播放| 亚洲国伊人久久综合热青草| 男女激情久久免费国产| 国产免费观看激情| 天天射天天添| 人妻夜夜爽天天爽三区麻豆Aⅴ网站| 女人18片免费视频网站| 天天干天天草视频| 高清不卡一区二区三区影院| 男生女生一起差差的app大全动画| 久久影视少妇免费| 露脸大学生情侣偷拍精品一区| 亚洲AV鲁丝一区二区三区性生生活大片又黄又| 加勒比人妻无码一区| 一本中文字幕在线| 国产成人综合亚洲欧美在线n互動交流 | 三级网站免费观看| 国产一区国产二区久久| 中文字幕人成乱码熟女小说| 陪读乱小说录目伦合集| 欧美精品成人3d在线| 青青草视频国产在线视频大全| 国产一卡2卡3卡免费网站| 成年中文字幕在线观看| 亚洲AV手机专区久久精品| 免费看强人物漫软件下载 | 日韩在线天堂免费观看| 国产AⅤ一区二区三区传媒| 中文字幕亚洲制服| 一区二区在线高清免费观看| 亚洲欧美SUV精品| 亚洲AV无码精品久久久久成人精品久久久 | 日本xxxwww在线观看| 91视频麻豆视频| 日韩欧美日韩成人在线| 300一晚同城约茶| 国产又色又爽又黄在线观看视| 日韩美女啪啪不卡视频| 在线播放免费黄片亚洲区 | 日韩激情影院| 极品美女aⅴ在线观看| 乳熟女が五十路になって| 天堂网无码AV手机版| 日本三级成人一区二区在线观看| 亚洲AV无码AV吞精久久久| 国产精品吹潮在线观看中文| 永久不封國產毛片AV網煮站 | 国产69精品亚洲一级片| 国产成人无码A区| 成人无码区免费A片视频韩国 | 99久久亚洲精品无码毛片潘甜甜| 中文字幕精品色呦呦| 亚洲无码1区2区3区4区| 男同毛片GV资源免费| 成人无码区免费A片视频韩国| 日本va午夜中文字幕久久99| av无码精品岛国片在线观看| 日韩毛片免费专区| 国产成人久久精品流白浆动态 | 黄色 av 手机在线观看| 鲁大师在线影院免费观看| 最新亚洲精品国产免费无码| 未满十八私人高清免费影院| 国产激情午夜电影| 91亚洲午夜精品久久久久久| 久久精品视频5| 国产av日韩精品| 真人一级毛片全部免费播放| 免费a级毛片无码a∨免费软件 |