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

十步優(yōu)化SQL Server中的數據訪問

admin
2011年3月15日 0:25 本文熱度 2614
故事開篇:你和你的團隊經過不懈努力,終于使網站成功上線,剛開始時,注冊用戶較少,網站性能表現不錯,但隨著注冊用戶的增多,訪問速度開始變慢,一些用戶開始發(fā)來郵件表示抗議,事情變得越來越糟,為了留住用戶,你開始著手調查訪問變慢的原因。

  經過緊張的調查,你發(fā)現問題出在數據庫上,當應用程序嘗試訪問/更新數據時,數據庫執(zhí)行得相當慢,再次深入調查數據庫后,你發(fā)現數據庫表增長得很大,有些表甚至有上千萬行數據,測試團隊開始在生產數據庫上測試,發(fā)現訂單提交過程需要花5分鐘時間,但在網站上線前的測試中,提交一次訂單只需要2/3秒。


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


  如果你正身處這種項目,逃避不是辦法,只有勇敢地去面對現實。首先,我認為你的應用程序中一定沒有寫數據訪問程序,我將在這個系列的文章中介紹如何編寫最佳的數據訪問程序,以及如何優(yōu)化現有的數據訪問程序。


  范圍


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


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


  當一個基于數據庫的應用程序運行起來很慢時,90%的可能都是由于數據訪問程序的問題,要么是沒有優(yōu)化,要么是沒有按最佳方法編寫代碼,因此你需要審查和優(yōu)化你的數據訪問/處理程序。


  我將會談到10個步驟來優(yōu)化數據訪問程序,先從最基本的索引說起吧!


  第一步:應用正確的索引


  我之所以先從索引談起是因為采用正確的索引會使生產系統(tǒng)的性能得到質的提升,另一個原因是創(chuàng)建或修改索引是在數據庫上進行的,不會涉及到修改程序,并可以立即見到成效。


  我們還是溫習一下索引的基礎知識吧,我相信你已經知道什么是索引了,但我見到很多人都還不是很明白,我先給大家將一個故事吧。


  很久以前,在一個古城的的大圖書館中珍藏有成千上萬本書籍,但書架上的書沒有按任何順序擺放,因此每當有人詢問某本書時,圖書管理員只有挨個尋找,每一次都要花費大量的時間。


  [這就好比數據表沒有主鍵一樣,搜索表中的數據時,數據庫引擎必須進行全表掃描,效率極其低下。]


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


  [給圖書編號就象給表創(chuàng)建主鍵一樣,創(chuàng)建主鍵時,會創(chuàng)建聚集索引樹,表中的所有行會在文件系統(tǒng)上根據主鍵值進行物理排序,當查詢表中任一行時,數據庫首先使用聚集索引樹找到對應的數據頁(就象首先找到書架一樣),然后在數據頁中根據主鍵鍵值找到目標行(就象找到書架上的書一樣)。]


  于是圖書管理員開始給圖書編號,然后根據編號將書放到書架上,為此他花了整整一天時間,但最后經過測試,他發(fā)現找書的效率大大提高了。


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


  但問題并未完全解決,因為很多人記不住書的編號,只記得書的名字,圖書管理員無賴又只有掃描所有的圖書編號挨個尋找,但這次他只花了20分鐘,以前未給圖書編號時要花2-3小時,但與根據圖書編號查找圖書相比,時間還是太長了,因此他向那個聰明的小伙子求助。


  [這就好像你給Product表增加了主鍵ProductID,但除此之外沒有建立其它索引,當使用Product Name進行檢索時,數據庫引擎又只要進行全表掃描,逐個尋找了。]


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


  于是圖書管理員興奮地花了幾個小時創(chuàng)建了一個“圖書名稱”目錄,經過測試,現在找一本書的時間縮短到1分鐘了(其中30秒用于從“圖書名稱”目錄中查找編號,另外根據編號查找圖書用了30秒)。


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


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


  下圖顯示了一個索引樹的結構



  圖 1 索引樹結構


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


  通常,在索引樹中查找目標值,然后跳到真實的行,這個過程是花不了什么時間的,因此索引一般會提高數據檢索速度。下面的步驟將有助于你正確應用索引。


  確保每個表都有主鍵


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


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


  1)搜索時經常使用到的;


  2)用于連接其它表的;


  3)用于外鍵字段的;


  4)高選中性的;


  5)ORDER BY子句使用到的;


  6)XML類型。


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



CREATE INDEX

  NCLIX_OrderDetails_ProductID
ON

  dbo.OrderDetails(ProductID)

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



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



  第二步:創(chuàng)建適當的覆蓋索引


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


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



SELECT SalesDate, SalesPersonID FROM Sales WHERE ProductID = 112

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


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


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


  3)針對每一個主鍵(這里是400),SQL Server引擎查找聚集索引樹找出真實的行在對應頁面中的位置;


  SQL Server引擎從對應的行查找SalesDate和SalesPersonID列的值。


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


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


  幸運的是,有一種方法實現了這個功能,它被稱為“覆蓋索引”,在表列上創(chuàng)建覆蓋索引時,需要指定哪些額外的列值需要和聚集索引鍵值(主鍵)一起存儲在索引頁中。下面是在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

  應該在那些select查詢中常使用到的列上創(chuàng)建覆蓋索引,但覆蓋索引中包括過多的列也不行,因為覆蓋索引列的值是存儲在內存中的,這樣會消耗過多內存,引發(fā)性能下降。


  創(chuàng)建覆蓋索引時使用數據庫調整顧問


  我們知道,當SQL出問題時,SQL Server引擎中的優(yōu)化器根據下列因素自動生成不同的查詢計劃:


  1)數據量


  2)統(tǒng)計數據


  3)索引變化


  4)TSQL中的參數值


  5)服務器負載


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


  因此我們在創(chuàng)建索引時,要知道執(zhí)行計劃是否會真正利用它,但我們怎么才能知道呢?答案就是在測試服務器上模擬生產環(huán)境負載,然后創(chuàng)建合適的索引并進行測試,如果這樣測試發(fā)現索引可以提高性能,那么它在生產環(huán)境也就更可能提高應用程序的性能了。


  雖然要模擬一個真實的負載比較困難,但目前已經有很多工具可以幫助我們。


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


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



  第三步:整理索引碎片


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


  什么是索引碎片?


  由于表上有過度地插入、修改和刪除操作,索引頁被分成多塊就形成了索引碎片,如果索引碎片嚴重,那掃描索引的時間就會變長,甚至導致索引不可用,因此數據檢索操作就慢下來了。


  有兩種類型的索引碎片:內部碎片和外部碎片。


  內部碎片:為了有效的利用內存,使內存產生更少的碎片,要對內存分頁,內存以頁為單位來使用,最后一頁往往裝不滿,于是形成了內部碎片。


  外部碎片:為了共享要分段,在段的換入換出時形成外部碎片,比如5K的段換出后,有一個4k的段進來放到原來5k的地方,于是形成1k的外部碎片。


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


  執(zhí)行下面的SQL語句就知道了(下面的語句可以在SQL Server 2005及后續(xù)版本中運行,用你的數據庫名替換掉這里的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數據庫的索引碎片信息。



  圖 3 索引碎片信息


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


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


  2)InternalFragmentation的值<75表示對應的索引發(fā)生了內部碎片。


  如何整理索引碎片?


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


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


  ALTER INDEX ALL ON TableName REORGANIZE


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


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


  也可以使用索引名代替這里的“ALL”關鍵字重組或重建單個索引,也可以使用SQL Server管理工作臺進行索引碎片的整理。



  圖 4 使用SQL Server管理工作臺整理索引碎片


  什么時候用重組,什么時候用重建呢?


  當對應索引的外部碎片值介于10-15之間,內部碎片值介于60-75之間時使用重組,其它情況就應該使用重建。


  值得注意的是重建索引時,索引對應的表會被鎖定,但重組不會鎖表,因此在生產系統(tǒng)中,對大表重建索引要慎重,因為在大表上創(chuàng)建索引可能會花幾個小時,幸運的是,從SQL Server 2005開始,微軟提出了一個解決辦法,在重建索引時,將ONLINE選項設置為ON,這樣可以保證重建索引時表仍然可以正常使用。


  雖然索引可以提高查詢速度,但如果你的數據庫是一個事務型數據庫,大多數時候都是更新操作,更新數據也就意味著要更新索引,這個時候就要兼顧查詢和更新操作了,因為在OLTP數據庫表上創(chuàng)建過多的索引會降低整體數據庫性能。


  我給大家一個建議:如果你的數據庫是事務型的,平均每個表上不能超過5個索引,如果你的數據庫是數據倉庫型,平均每個表可以創(chuàng)建10個索引都沒問題。



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


  第四步:將TSQL代碼從應用程序遷移到數據庫中


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


  1、使用存儲過程,視圖,函數和觸發(fā)器實現應用程序中SQL代碼的功能有助于減少應用程序中SQL復制的弊端,因為現在只在一個地方集中處理SQL,為以后的代碼復用打下了良好的基礎。


  2、使用數據庫對象實現所有的TSQL有助于分析TSQL的性能問題,同時有助于你集中管理TSQL代碼。


  3、將TS QL移植到數據庫上去后,可以更好地重構TSQL代碼,以利用數據庫的高級索引特性。此外,應用程序中沒了SQL代碼也將更加簡潔。


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


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


  OK!假設你已經照我的做的了,完全將TSQL遷移到數據庫上去了,下面就進入正題吧!



  第五步:識別低效TSQL,采用最佳實踐重構和應用TSQL


  由于每個程序員的能力和習慣都不一樣,他們編寫的TSQL可能風格各異,部分代碼可能不是最佳實現,對于水平一般的程序員可能首先想到的是編寫TSQL實現需求,至于性能問題日后再說,因此在開發(fā)和測試時可能發(fā)現不了問題。


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


  我覺得還是有必要介紹一下具有都有哪些最佳實踐。


  1、在查詢中不要使用“select *”


  (1)檢索不必要的列會帶來額外的系統(tǒng)開銷,有句話叫做“該省的則省”;


  (2)數據庫不能利用“覆蓋索引”的優(yōu)點,因此查詢緩慢。


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


  (1)在select查詢中如有不必要的列,會帶來額外的系統(tǒng)開銷,特別是LOB類型的列;


  (2)在連接條件中包含不必要的表會強制數據庫引擎檢索和匹配不需要的數據,增加了查詢執(zhí)行時間。


  3、不要在子查詢中使用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)當你使用count()時,SQL Server不知道你要做的是存在性檢查,它會計算所有匹配的值,要么會執(zhí)行全表掃描,要么會掃描最小的非聚集索引;


  (3)當你使用EXISTS時,SQL Server知道你要執(zhí)行存在性檢查,當它發(fā)現第一個匹配的值時,就會返回TRUE,并停止查詢。類似的應用還有使用IN或ANY代替count()。


  4、避免使用兩個不同類型的列進行表的連接


  (1)當連接兩個不同類型的列時,其中一個列必須轉換成另一個列的類型,級別低的會被轉換成高級別的類型,轉換操作會消耗一定的系統(tǒng)資源;


  (2)如果你使用兩個不同類型的列來連接表,其中一個列原本可以使用索引,但經過轉換后,優(yōu)化器就不會使用它的索引了。例如: 



SELECT column_list FROM small_table, large_table WHERE

  smalltable.float_column
= large_table.int_column

  在這個例子中,SQL Server會將int列轉換為float類型,因為int比float類型的級別低,large_table.int_column上的索引就不會被使用,但smalltable.float_column上的索引可以正常使用。


  5、避免死鎖


  (1)在你的存儲過程和觸發(fā)器中訪問同一個表時總是以相同的順序;


  (2)事務應經可能地縮短,在一個事務中應盡可能減少涉及到的數據量;


  (3)永遠不要在事務中等待用戶輸入。


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


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


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


  - 使用內聯子查詢替換用戶定義函數;


  - 使用相關聯的子查詢替換基于游標的代碼;


  - 如果確實需要程序化代碼,至少應該使用表變量代替游標導航和處理結果集。



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


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



 SELECT COUNT(*) FROM dbo.orders

  這條語句會執(zhí)行全表掃描才能獲得行數。


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



SELECT rows FROM sysindexes

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

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


  除非迫不得已,應盡量避免使用動態(tài)SQL,因為:


  (1)動態(tài)SQL難以調試和故障診斷;


  (2)如果用戶向動態(tài)SQL提供了輸入,那么可能存在SQL注入風險。


  9、避免使用臨時表


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


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


  10、使用全文搜索搜索文本數據,取代like搜索


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


  (1)全文搜索讓你可以實現like不能完成的復雜搜索,如搜索一個單詞或一個短語,搜索一個與另一個單詞或短語相近的單詞或短語,或者是搜索同義詞;


  (2)實現全文搜索比實現like搜索更容易(特別是復雜的搜索);


  11、使用union實現or操作


  (1)在查詢中盡量不要使用or,使用union合并兩個不同的查詢結果集,這樣查詢性能會更好;


  (2)如果不是必須要不同的結果集,使用union all效果會更好,因為它不會對結果集排序。


  12、為大對象使用延遲加載策略


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


  (2)在查詢中檢索所有主表數據,如果需要載入大對象,按需從大對象表中檢索大對象。


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


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


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


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


  (4)當MAX數據類型中的數據超過8KB時,使用溢出頁(在ROW_OVERFLOW分配單元中)指向源數據頁,源數據頁仍然在IN_ROW分配單元中。


  14、在用戶定義函數中使用下列最佳實踐


  不要在你的存儲過程,觸發(fā)器,函數和批處理中重復調用函數,例如,在許多時候,你需要獲得字符串變量的長度,無論如何都不要重復調用LEN函數,只調用一次即可,將結果存儲在一個變量中,以后就可以直接使用了。
 



  15、在存儲過程中使用下列最佳實踐


  (1)不要使用SP_xxx作為命名約定,它會導致額外的搜索,增加I/O(因為系統(tǒng)存儲過程的名字就是以SP_開頭的),同時這么做還會增加與系統(tǒng)存儲過程名稱沖突的幾率;


  (2)將Nocount設置為On避免額外的網絡開銷;


  (3)當索引結構發(fā)生變化時,在EXECUTE語句中(第一次)使用WITH RECOMPILE子句,以便存儲過程可以利用最新創(chuàng)建的索引;


  (4)使用默認的參數值更易于調試。


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


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


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


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


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


  17、在視圖中使用下列最佳實踐


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


  (2)如果你不想讓用戶意外修改表結構,使用視圖時加上SCHEMABINDING選項;


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


  18、在事務中使用下列最佳實踐


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


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


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


  要完全列舉最佳實踐不是本文的初衷,當你了解了這些技巧后就應該拿來使用,否則了解了也沒有價值。此外,你還需要評審和監(jiān)視數據訪問代碼是否遵循下列標準和最佳實踐。


  如何分析和識別你的TSQL中改進的范圍?


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


  首先需要知道如何診斷性能問題,診斷就得分析TSQL,找出瓶頸,然后重構,要找出瓶頸就得先學會分析執(zhí)行計劃。



  理解查詢執(zhí)行計劃


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


  可以使用SQL Server Management Studio預覽和分析執(zhí)行計劃,寫好SQL語句后,點擊SQL Server Management Studio上的評估執(zhí)行計劃按鈕查看執(zhí)行計劃,如圖1所示。



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


  在執(zhí)行計劃圖中的每個圖標代表計劃中的一個行為(操作),應從右到左閱讀執(zhí)行計劃,每個行為都一個相對于總體執(zhí)行成本(100%)的成本百分比。


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


  下面是一些比較重要的圖標及其對應的操作:



  圖 2 常見的重要圖標及對應的操作


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


  如果想知道執(zhí)行計劃中每個操作詳細情況,將鼠標指針移到對應的圖標上即可,你會看到類似于下面的這樣一個窗口。



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


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


  查看執(zhí)行計劃時,我們應該獲得什么信息


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


  1、表掃描(Table Scan)


  當表沒有聚集索引時就會發(fā)生,這時只要創(chuàng)建聚集索引或重整索引一般都可以解決問題。


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


  有時可以認為等同于表掃描,當某列上的非聚集索引無效時會發(fā)生,這時只要創(chuàng)建一個非聚集索引就ok了。


  3、哈希連接(Hash Join)


  當連接兩個表的列沒有被索引時會發(fā)生,只需在這些列上創(chuàng)建索引即可。


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


  當非聚集索引不包括select查詢清單的列時會發(fā)生,只需要創(chuàng)建覆蓋索引問題即可解決。


  5、RID查找(RID Lookup)


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


  TSQL重構真實的故事


  只有解決了實際的問題后,知識才轉變?yōu)閮r值。當我們檢查應用程序性能時,發(fā)現一個存儲過程比我們預期的執(zhí)行得慢得多,在生產數據庫中檢索一個月的銷售數據居然要50秒,下面就是這個存儲過程的執(zhí)行語句:


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


  Tom受命來優(yōu)化這個存儲過程,下面是這個存儲過程的代碼:



 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想到了審查這個存儲過程使用到的表的索引,很快他發(fā)現下面兩列的索引無故丟失了:


  OrderDetails.ProductID


  OrderDetails.SalesOrderID


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


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


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


  分析查詢執(zhí)行計劃


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


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


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


  Tom想知道是否有索引碎片,因為所有索引配置都是正確的,通過TSQL他知道了有兩個索引都產生了碎片,很快他重組了這兩個索引,于是表掃描消失了,現在執(zhí)行存儲過程的時間減少到25秒了。


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


  實施最佳實踐


  Tom發(fā)現有個UDF有問題,代碼如下: 



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

  在計算訂單總金額時看起來代碼很程序化,Tom決定在UDF的SQL中使用內聯SQL。


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


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


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


  在select查詢清單中放棄不必要的Text列


  為了進一步提升性能,Tom決定檢查一下select查詢清單中使用的列,很快他發(fā)現有一個Products.DetailedDescription列是Text類型,通過對應用程序代碼的走查,Tom發(fā)現其實這一列的數據并不會立即用到,于是他將這一列從select查詢清單中取消掉,時間一下子從14秒減少到6秒,于是Tom決定使用一個存儲過程應用延遲加載策略加載這個Text列。


  最后Tom還是不死心,認為6秒也無法接受,于是他再次仔細檢查了SQL代碼,他發(fā)現了一個like子句,經過反復研究他認為這個like搜索完全可以用全文搜索替換,最后他用全文搜索替換了like搜索,時間一下子降低到1秒,至此Tom認為調優(yōu)應該暫時結束了。


  小結


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



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


  第六步:應用高級索引


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


  你可能曾經寫過從數據庫查詢一個結果集的應用程序代碼,對結果集中每一行進行計算生成最終顯示輸出的信息。例如,你可能有一個查詢從數據庫檢索訂單信息,在應用程序代碼中你可能已經通過對產品和銷售量執(zhí)行算術操作計算出了總的訂單價格,但為什么你不在數據庫中執(zhí)行這些操作呢?


  請看下面這張圖,你可以通過指定一個公式將一個數據庫表列作為計算列,你的TSQL在查詢清單中包括這個計算列,SQL引擎將會應用這個公式計算出這一列的值,在執(zhí)行查詢時,數據庫引擎將會計算訂單總價,并為計算列返回結果。



  圖 1 計算列


  使用計算列你可以將計算工作全部交給后端執(zhí)行,但如果表的行數太多可能計算性能也不高,如果計算列出現在Select查詢的where子句中情況會更糟,在這種情況下,為了匹配where子句指定的值,數據庫引擎不得不計算表中所有行中計算列的值,這是一個低效的過程,因為它總是需要全表掃描或全聚集索引掃描。


  因此問題就來了,如何提高計算列的性能呢?解決辦法是在計算列上創(chuàng)建索引,當計算列上有索引后,SQL Server會提前計算結果,然后在結果之上構建索引。此外,當對應列(計算列依賴的列)的值更新時,計算列上的索引值也會更新。因此,在執(zhí)行查詢時,數據庫引擎不會為結果集中的每一行都執(zhí)行一次計算公式,相反,通過索引可直接獲得計算列預先計算出的值,因此在計算列上創(chuàng)建一個索引將會加快查詢速度。


  提示:如果你想在計算列上創(chuàng)建索引,必須確保計算列上的公式不能包括任何“非確定的”函數,例如getdate()就是一個非確定的函數,因為每次調用它,它返回的值都是不一樣的。


  創(chuàng)建索引視圖


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


  為什么要使用視圖?


  大家都知道,視圖本身不存儲任何數據,只是一條編譯的select語句。數據庫會為視圖生成一個執(zhí)行計劃,視圖是可以重復使用的,因為執(zhí)行計劃也可以重復使用。


  視圖本身不會帶來性能的提升,我曾經以為它會“記住”查詢結果,但后來我才知道它除了是一個編譯了的查詢外,其它什么都不是,視圖根本記不住查詢結果,我敢打賭好多剛接觸SQL的人都會有這個錯誤的想法。


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


  如果你在視圖上應用了索引,視圖就成為索引視圖,對于一個索引視圖,數據庫引擎處理SQL,并在數據文件中存儲結果,和聚集表類似,當基礎表中的數據發(fā)生變化時,SQL Server會自動維護索引,因此當你在索引視圖上查詢時,數據庫引擎簡單地從索引中查找值,速度當然就很快了,因此在視圖上創(chuàng)建索引可以明顯加快查詢速度。


  但請注意,天下沒有免費的午餐,創(chuàng)建索引視圖可以提升性能,當基礎表中的數據發(fā)生變化時,數據庫引擎也會更新索引,因此,當視圖要處理很多行,且要求和,當數據和基礎表不經常發(fā)生變化時,就應該考慮創(chuàng)建索引視圖。


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


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



REATE VIEW dbo.vOrderDetails

  
WITH SCHEMABINDING

  
AS

  
SELECT

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


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


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


  1)創(chuàng)建視圖時使用了SCHEMABINDING選項,這種情況下,數據庫引擎不允許你改變表的基礎結構;


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


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


  如果你發(fā)現你的應用程序中使用的TSQL是用視圖實現的,但存在性能問題,那此時給視圖加上索引可能會帶來性能的提升。


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


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


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



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)在目標表上增加一個計算列,使用前面定義的函數作為該列的計算公式,如圖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為計算列的結算公式

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


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


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


  在SQL Server(2005和后續(xù)版本)中,XML列是以二進制大對象(BLOB)形式存儲的,可以使用XQuery進行查詢,但如果沒有索引,每次查詢XML數據類型時都非常耗時,特別是大型XML實例,因為SQL Server在運行時需要分隔二進制大對象評估查詢。為了提升XML數據類型上的查詢性能,XML列可以索引,XML索引分為兩類。


  主XML索引


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


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

  次要XML索引


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


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


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


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


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



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

  請注意,上面講的原則是基礎,如果盲目地在表上創(chuàng)建索引,不一定會提升性能,因為有時在某些表的某些列上創(chuàng)建索引時,可能會致使插入和更新操作變慢,當這個表上有一個低選中性列時更是如此,同樣,當表中的記錄很少(如<500)時,如果在這樣的表上創(chuàng)建索引反倒會使數據檢索性能降低,因為對于小表而言,全表掃描反而會更快,因此在創(chuàng)建索引時應放聰明一點。



  第七步:應用反范式化,使用歷史表和預計算列


  反范式化


  如果你正在為一個OLTA(在線事務分析)系統(tǒng)設計數據庫,主要指為只讀查詢優(yōu)化過的數據倉庫,你可以(和應該)在你的數據庫中應用反范式化和索引,也就是說,某些數據可以跨多個表存儲,但報告和數據分析查詢在這種數據庫上可能會更快。


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


  無論我們在OLTP系統(tǒng)上是否應用范式,在數據庫上總有大量的讀操作(即select查詢),當應用了所有優(yōu)化技術后,如果發(fā)現數據檢索操作仍然效率低下,此時,你可能需要考慮應用反范式設計了,但問題是如何應用反范式化,以及為什么應用反范式化會提升性能?讓我們來看一個簡單的例子,答案就在例子中。


  假設我們有兩個表OrderDetails(ID,ProductID,OrderQty) 和 Products(ID,ProductName)分別存儲訂單詳細信息和產品信息,現在要查詢某個客戶訂購的產品名稱和它們的數量,查詢SQL語句如下:



SELECT Products.ProductName,OrderQty

  
FROM OrderDetails INNER JOIN Products

  
ON OrderDetails.ProductID = Products.ProductID

  
WHERE SalesOrderID = 47057

  如果這兩個都是大表,當你應用了所有優(yōu)化技巧后,查詢速度仍然很慢,這時可以考慮以下反范式化設計:


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


  2)重寫上面的SQL語句



 SELECT ProductName,OrderQty

  
FROM OrderDetails

  
WHERE SalesOrderID = 47057

  注意在OrderDetails表上應用了反范式化后,不再需要連接Products表,因此在執(zhí)行SQL時,SQL引擎不會執(zhí)行兩個表的連接操作,查詢速度當然會快一些。


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


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


  歷史表


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


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


  1)使用反范式化結構創(chuàng)建一個歷史表,并對銷售數據建立合適的索引;


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


  3)修改報表代碼,從歷史表獲取數據。


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


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


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


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


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


  4)切換到“調度”標簽頁,點擊“新建”按鈕創(chuàng)建一個新調度計劃;


  5)最后保存調度計劃。


  在數據插入和更新中提前執(zhí)行耗時的計算,簡化查詢


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


  如果你的查詢中包括一個復雜的計算操作,毫無疑問這將導致整體的查詢性能下降,你可以考慮下面的解決辦法:


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


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


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


  實施完上述步驟后,插入和更新操作可能會更慢一點,因為每次插入和更新時觸發(fā)器都會執(zhí)行一下,但數據檢索操作會比之前快得多,因為執(zhí)行查詢時,數據庫引擎不會執(zhí)行計算操作了。


  小結


  至此,我們已經應用了索引,重構TSQL,應用高級索引,反范式化,以及歷史表加速數據檢索速度,但性能優(yōu)化是一個永無終點的過程,最下一篇文章中我們將會介紹如何診斷數據庫性能問題。



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


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


  在SQL Server應用領域SQL事件探查器可能是最著名的性能故障排除工具,大多數情況下,當得到一個性能問題報告后,一般首先啟動它進行診斷。


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


  SQL事件探查器的基本用法


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


  1)啟動SQL事件探查器,連接到目標數據庫實例,創(chuàng)建一個新跟蹤,指定一個跟蹤模板(跟蹤模板預置了一些事件和用于跟蹤的列),如圖1所示;



  圖 1 選擇跟蹤模板


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



  圖 2 選擇跟蹤過程要捕捉的事件


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



  圖 3 過濾器設置


  4)運行事件探查器,等待捕捉事件



  圖 4 運行事件探查器


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



  圖 5 將探查器跟蹤數據保存到表中


  6)執(zhí)行下面的SQL查詢語句找出執(zhí)行代價較高的TSQL



SELECT TextData,Duration,…, FROM Table_Name ORDER BY

  Duration
DESC


  圖 6 查找成本最高的TSQL/存儲過程



  有效利用SQL事件探查器排除與性能相關的問題


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


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


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



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



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


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


  沒錯,你可以使用SQL事件探查器監(jiān)聽這兩個有趣的事件。


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


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


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


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



  圖 9 檢測表掃描



  圖 10 檢測死鎖


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


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



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


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


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



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


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


  有時相同的查詢在測試服務器和生產服務器上的性能完全不一樣,假設你遇到這種問題,你應該仔細查看一下生產數據庫上TSQL的執(zhí)行計劃。但問題是現在不能在生產庫上執(zhí)行這個TSQL,因為它已經有嚴重的性能問題。這時SQL事件探查器可以派上用場,在跟蹤屬性中選中ShowPlan或ShowPlan XML,這樣可以捕捉到SQL執(zhí)行計劃和TSQL文本,然后在測試服務器上執(zhí)行相同的TSQL,并比較兩者的執(zhí)行計劃。



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



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



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


  當你的數據庫遇到性能問題時,大多數時候使用SQL事件探查器就能夠診斷和找出引起性能問題的背后原因了,但有時SQL事件探查器并不是萬能的。


  例如,在生產庫上使用SQL事件探查器分析查詢執(zhí)行時間時,對應的TSQL執(zhí)行很慢(假設需要10秒),但同樣的TSQL在測試服務器上執(zhí)行時間卻只要200毫秒,通過分析執(zhí)行計劃和數據列,發(fā)現它們都沒有太大的差異,因此在生產庫上肯定有其它問題,那該如何揪出這些問題呢?


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


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


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


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


  Windows內置了許多性能監(jiān)視計數器,安裝SQL Server時會添加一個SQL Server性能計數器,下面是創(chuàng)建一個性能計數器日志的過程。


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



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


  2)點擊“計數器日志”*“新建日志設置”創(chuàng)建一個新的性能計數器日志



  圖 16 創(chuàng)建一個性能計數器日志


  指定日志文件名,點擊“確定”。



  圖 17 為性能計數器日志指定名字


  3)點擊“添加計數器”按鈕,選擇一個需要的計數器



  圖 18 為性能計數器日志指定計數器


  4)從列表中選擇要監(jiān)視的對象和對應的計數器,點擊“關閉”



  圖 19 指定對象和對應的計數器


  5)選擇的計數器應顯示在窗體中



  圖 20 指定計數器


  6)點擊“日志文件”標簽,再點擊“配置”按鈕,指定日志文件保存位置,如果需要現在還可以修改日志文件名



  圖 21 指定性能計數器日志文件保存位置


  7)點擊“調度”標簽,指定一個時間讀取計數器性能,寫入日志文件,也可以選擇“手動”啟動和停止計數器日志。



  圖 22 指定性能計數器日志運行時間


  8)點擊“常規(guī)”標簽,指定收集計數器數據的間隔時間



  圖 23 設置計數器間隔采樣時間


  9)點擊“確定”,選擇剛剛創(chuàng)建的計數器日志,點擊右鍵啟動它。



  圖 24 啟動性能計數器日志


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



  圖 25 查看性能計數器日志


  11)默認情況下,在日志輸出中只有三個計數器被選中,點擊“數據”標簽可以追加其它計數器。



  圖 26 查看日志數據時追加計數器


  12)點擊“確定”,返回圖形化的性能計數器日志輸出界面



  圖 27 查看性能計數器日志



  關聯性能計數器日志和SQL事件探查器跟蹤信息進行深入的分析


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


  如果相同的查詢在生產庫和測試庫上的執(zhí)行時間差別過大,那說明測試服務器的負載,環(huán)境和查詢執(zhí)行上下文都和生產服務器不一樣,因此需要一種方法來模擬生產服務器上的查詢執(zhí)行上下文,這時就需要結合SQL事件探查器的跟蹤信息和性能監(jiān)視工具的性能計數器日志。


  將二者結合起來分析可以更容易找出性能問題的根本原因,例如,你可能發(fā)現在生產服務器上每次查詢都需要10秒,CPU利用率達到了100%,這時就應該放下SQL調優(yōu),先調查一下為什么CPU利用率會上升到100%。


  關聯SQL事件探查器跟蹤信息和性能計數器日志的步驟如下:


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


  --網絡接口\輸出隊列長度


  --處理器\%處理器時間


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


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


  --SQL Server:SQL統(tǒng)計\批量請求數/秒


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


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


  創(chuàng)建好性能計數器日志,但不啟動它。


  2)使用SQL事件探查器TSQL Duration模板創(chuàng)建一個跟蹤,添加“開始時間”和“結束時間”列跟蹤,同時啟動事件探查器跟蹤和前一步創(chuàng)建的性能計數器日志;


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


  4)關閉SQL事件探查器跟蹤窗口,再使用事件探查器打開.trc文件,點擊“文件”*“導入性能數據”關聯性能計數器日志,此時會打開一個文件瀏覽器窗口,選擇剛剛保存的性能計數器日志文件進行關聯;


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



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


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


  我相信你學會如何關聯這兩個工具的輸出數據后,一定會覺得非常方便和有趣。


  小結


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


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



  優(yōu)化技巧主要是面向DBA的,但我認為即使是開發(fā)人員也應該掌握這些技巧,因為不是每個開發(fā)團隊都配有專門的DBA的。


  第九步:合理組織數據庫文件組和文件


  創(chuàng)建SQL Server數據庫時,數據庫服務器會自動在文件系統(tǒng)上創(chuàng)建一系列的文件,之后創(chuàng)建的每一個數據庫對象實際上都是存儲在這些文件中的。SQL Server有下面三種文件:


  1).mdf文件


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


  2).ndf文件


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


  3).ldf文件


  這些是事務日志文件,數量從一到幾個不等,它里面存儲的是事務日志。


  默認情況下,創(chuàng)建SQL Server數據庫時會自動創(chuàng)建主數據文件和事務日志文件,當然也可以修改這兩個文件的屬性,如保存路徑。


  文件組


  為了便于管理和獲得更好的性能,數據文件通常都進行了合理的分組,創(chuàng)建一個新的SQL Server數據庫時,會自動創(chuàng)建主文件組,主數據文件就包含在主文件組中,主文件組也被設為默認組,因此所有新創(chuàng)建的用戶對象都自動存儲在主文件組中(具體說就是存儲在主數據文件中)。


  如果你想將你的用戶對象(表、視圖、存儲過程和函數等)存儲在次要數據文件中,那需要:


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


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


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


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


  文件/文件組組織最佳實踐


  如果你的數據庫不大,那么默認的文件/文件組應該就能滿足你的需要,但如果你的數據庫變得很大時(假設有1000MB),你可以(應該)對文件/文件組進行調整以獲得更好的性能,調整文件/文件組的最佳實踐內容如下:


  1)主文件組必須完全獨立,它里面應該只存儲系統(tǒng)對象,所有的用戶對象都不應該放在主文件組中。主文件組也不應該設為默認組,將系統(tǒng)對象和用戶對象分開可以獲得更好的性能;


  2)如果有多塊硬盤,可以將每個文件組中的每個文件分配到每塊硬盤上,這樣可以實現分布式磁盤I/O,大大提高數據讀寫速度;


  3)將訪問頻繁的表及其索引放到一個單獨的文件組中,這樣讀取表數據和索引都會更快;


  4)將訪問頻繁的包含Text和Image數據類型的列的表放到一個單獨的文件組中,最好將其中的Text和Image列數據放在一個獨立的硬盤中,這樣檢索該表的非Text和Image列時速度就不會受Text和Image列的影響;


  5)將事務日志文件放在一個獨立的硬盤上,千萬不要和數據文件共用一塊硬盤,日志操作屬于寫密集型操作,因此保證日志寫入具有良好的I/O性能非常重要;


  6)將“只讀”表單獨放到一個獨立的文件組中,同樣,將“只寫”表單獨放到一個文件組中,這樣只讀表的檢索速度會更快,只寫表的更新速度也會更快;


  7)不要過度使用SQL Server的“自動增長”特性,因為自動增長的成本其實是很高的,設置“自動增長”值為一個合適的值,如一周,同樣,也不要過度頻繁地使用“自動收縮”特性,最好禁用掉自動收縮,改為手工收縮數據庫大小,或使用調度操作,設置一個合理的時間間隔,如一個月。



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


  什么是表分區(qū)?


  表分區(qū)就是將大表拆分成多個小表,以免檢索數據時掃描的數據太多,這個思想參考了“分而治之”的理論。


  當你的數據庫中有一個大表(假設有上百萬行記錄),如果其它優(yōu)化技巧都用上了,但查詢速度仍然非常慢時,你就應該考慮對這個表進行分區(qū)了。首先來看一下分區(qū)的類型:


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


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


  另一個垂直分區(qū)的原則是按有索引的列無索引列進行拆分,但這種分區(qū)法需要小心,因為如果任何查詢都涉及到檢索這兩個分區(qū),SQL引擎不得不連接這兩個分區(qū),那樣的話性能反而會低。


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


  分區(qū)最佳實踐


  1)將大表分區(qū)后,將每個分區(qū)放在一個獨立的文件中,并將這個文件存放在獨立的硬盤上,這樣數據庫引擎可以同時并行檢索多塊硬盤上的不同數據文件,提高并發(fā)讀寫速度;


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


  如何分區(qū)?


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


  1)添加文件組


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


  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]


  通過上面的語句我們添加了一個文件組1999,然后增加了一個次要數據文件“C:\OrderDB\1999.ndf”到這個文件組中。


  使用上面的命令再創(chuàng)建三個文件組2000,2001和2002,每個文件組存儲一年的銷售數據。


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


  分區(qū)函數是定義分界點的一個對象,使用下面的命令創(chuàng)建分區(qū)函數:


  CREATE PARTITION FUNCTION FNOrderDateRange (DateTime) AS


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


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


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


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


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


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


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


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


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


  CREATE PARTITION SCHEME OrderDatePScheme AS PARTITION FNOrderDateRange


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


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


  第一個分區(qū)應該進入1999文件組;


  第二個分區(qū)就進入2000文件組;


  第三個分區(qū)進入2001文件組;


  第四個分區(qū)進入2002文件組。


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


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


  ALTER TABLE Orders DROP CONSTRAINT PK_Orders;


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


  CREATE UNIQUE CLUSTERED INDEX PK_Orders ON Orders(OrderDate) ON


  OrderDatePScheme (OrderDate)


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



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


  為了更好地管理DBMS對象(存儲過程,函數,視圖,觸發(fā)器等),需要遵循一致的結構,但由于某些原因(主要是時間限制),我們未能維護一個一致的結構,因此后來遇到性能問題或其它原因需要重新調試這些代碼時,那感覺就像是做噩夢。


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


  如果你的團隊有人專門負責檢查團隊成員編寫的TSQL代碼,在這些模板中專門有一個“審查”段落用來描寫審查意見。


  我提交幾個常見的DBMS對象模板,它們是:


   Template_StoredProcedure.txt:存儲過程模板(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:標量函數模板(http://www.codeproject.com/KB/database/OrganizeFilesAndPartition/Template_TableValuedFunction.txt)


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


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


   首先下載前面給出的模板代碼,然打開SQL Server管理控制臺,點擊“查看”*“模板瀏覽器”;


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


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


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


  上面是創(chuàng)建一個存儲過程模板的過程,創(chuàng)建其它DBMS對象過程類似。


  2)如何使用模板?


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


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


   連接成功后,模板將會在編輯器中打開,變量將會賦上適當的值;


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



  圖 1 為模板參數指定值


   點擊“OK”,然后在SQL Server管理控制臺中選擇目標數據庫,然后點擊“執(zhí)行”按鈕;


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


  小結


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


 


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

美女性感一二区,天堂久久久久久中文,自拍偷拍亚洲动漫 ,小浪货腿打开水真多视频,国产无套内精在线观看,巨胸喷奶水免费视频,欧美一级粗黑,免费高清欧美一区二区三区,黑人越猛烈欧美XX00动态图,最近亚洲国产网页aⅴ,少妇自拍视频一区,亚洲精品福利视频久久,最新手机国产在线小视频,国产午夜福利无,在线免费观看国产污污污视频,97视频国产中文,在线欧美sm一卡
亚洲无吗在线观看| 亚洲最大AV一区二区三区| 十分钟在线视频免费看| 吉林老女人高潮| 国产女主播喷出白浆视频| 国产无遮挡很黄很爽网站| 在线播放免费观看AV片| 又色又爽又黄的视频大全| Gay男同gv网站播放免费国产 | 日本中文字幕天天更新| 2020年国产最新在线观看| 亚洲永久精品ww47网站导航| 亚洲欧洲视频一二三区| 精品久久久久久久久久久AⅤ| 国产女女豆腐互摩擦视频| 国产午夜福利片| 小h片资源免费观看在线| 巨胸喷奶水视频www免费动漫| 日本免费一区二区三区不卡在线观看 | 在线看AV中文字幕| AV未满十八禁在线观看免| 高潮福利视频导航| www.91尤物视频.| 天天爽夜夜爽人人爽婷婷| 亚洲无线中文字幕乱码| 亚洲国产精品第一页| 国产免费看AV高清不卡| 欧美日韩色另类综合| 国内午夜国产精品小视频| 黄在线看片免费人成视频不收费| 性aⅴ观看免费| 国产精品VA在线| 97色婷婷手机在线| 2022AV在线视频网站| 中文字幕丁香五月天| 亚洲综合色区另类第一会所 | 初高中生洗澡被偷拍福利| 欧美大BBBB流白水| 亚洲日韩 自偷自拍| 欧美嗯啊在线观看| 精品伊人久久久大香线蕉?,丰满大屁股熟女啪播 | 国产女人全身精品拍拍拍拍| 在线播放2021国产亚洲精品| 亚洲精品欧美综合四区| 动漫免费又黄又硬又爽大片| 国产剧情21p| 国产白浆美女免费观看| 韩日AV高清不卡在线| 97色在线中文| 毛多水多茸茸的撒尿| 啊灬啊灬啊灬快好深午夜视频| AV剧情麻豆映画国产在线观看| 亚洲国产日韩欧美精品| 水蜜桃午夜视频观看| 99热这里只有精品 国产 首页| 色 在线观看视频免费观看| 国产在线aⅴ精品| 久久中文字幕国产情侣| jizzjizz日本护士水多视频| 日本在线观看污免费观看污| 亚洲人毛茸茸视频| 香蕉一区二区三区观| 成人综合激情网| 成年女人免费高清视频| 亚洲动漫一区二区| 美女国产爆浆精品视频| 色综合久久综合中文综合网| 欧美性狂猛XXXXX深喉| 18末年视频在线观看国产| 夜夜爽88888免费视频| mm1313又大又粗受不了| 欧美久久一区二区| 玩丰满女领导对白露脸视频| 成 人 黄 片免费观看| 韩国三级久久网站| 国产未满岁18在线观看| 俺来也俺去啦久久综合网| 丁香婷婷婷婷中文字幕在线 | 国产十八禁网站免费在线观看| 最近亚洲国产网页AⅤ| 久久中文字幕国产情侣| A片多人午夜免费视频| 成年片色大黄全免费APP久久 | h成年动漫在线播放网站| 人成电影在线观看国产传媒| 公共厕所www日本撒尿视频| 撕美女衣服网站18以下禁| 在线看白丝AV| 亚洲成手机在线| 国产午夜免费美女福利| 国产精品午夜一区二区三区,| 色婷婷亚洲高清| 一级在线性视频| 亚洲A∨色| AV天堂污污在线| AV嗯啊| 101超级碰碰碰碰久久久久| 精品国产日韩亚洲一区在线| 熟女少妇正在播放| 又黄又爽又大又猛| 国产一区二区欧美激情| 天天看精品免费视频| 国产美女爽到喷出水来视频99| 国产综合10p| 又大又硬视频| 啊AV免费播放| 91麻豆国产自产在线观看| 好大好爽我疼视频| 天天摸天天做天天爽| 旗袍老师穿丝袜满足我| 国产а天堂在线| 伊大人香蕉久久网欧美| 动漫无遮羞肉体在线观看免费| 日日夜夜狠狠| 又黄又粗又爽动漫免费观看| 粉嫩一级免费毛卡片| 国产精品福利影院在线观看| 日韩一区二区久久久久久| 亚洲成年美女一二三区免费看| 又爽又黄又无遮挡动漫网站| 一女被多人喷潮视频| 国产日产久久高清欧美| 欧美成在线视频综合| 亚洲欧洲人体超大胆露私| 亚洲国产高清在线观看视频| 久久久噜噜噜久久中文字幕| 午夜福利日本动漫h在线观看| 大胆顶级欧美A级视频| 国产大全国际久久亚洲精品视频| 夜夜添视频| 精品国产免费人成网站| 国产情侣浪潮| 92午夜福利合集1000在线| 成年动漫3D无尽视频不卡在线观看| 丁香激情九月| 色综合天天综合网国产| 老色鬼精品视频在线观看| 国产剧情国产精品一区| 亚洲国产欧美国产综合久久| 中文字幕国产综合| 欧亚熟女手机视频| 国产一区二区三区水蜜桃| 国产精品水多| 在线观看无套粉嫩| 在线观看你懂的网站在线| 97久久久亚洲综合久久| 一本大道香蕉中文视频| 亚洲h成年动漫在线观看网站| xxxxx japan18第一次| 午夜试看120秒体验区下载| 亚洲日本人成网站在线播放| 久久精品青青草原不卡| 伊人丁香综合在| 自拍偷拍区一区二区 精品区| 国产精品 - 色哟哟| 哟男哟女视频八区| 又爽又黄又大胆的激情视频| 国产污污在线网站| 日本三级香港三级孕妇孕交| 中美日韩亚洲印度高清在线| 国产人成午夜免电影在线观看| bbwbbwbbwbbwbbw精彩| 亚洲a免费在线观看| 69精品在线观看| 久久97视频| 在线看AV天堂| 先国产亚洲**精品| 成熟少妇水真多免费视频| 国产高清在线精品一区app| 成本人h视频动漫免费| 97porm国内自拍视频| 被多人强奷很舒服好爽好爽| 色多多视频人在线观看高清| 专干老肥熟女视频网站| 小h片资源免费观看在线| 亚洲欧美校区综合在| 伊人久久大香线蕉综合网| 国产AV-肉欲| 宅女午夜福利免费视频| 性荡视频播放在线视频| 大肥屁股白浆一区二区| 又黄又爽又粗又长又大视频| 亚洲影院天堂中文AV色| 亚洲A∨无吗在线| 国产欧美精品福利一区二区| 老湿免费试看| chinesefree乱子伦对白| 欧美脚交视频在线观看| 亚洲最大在线视频网站| 精品国产片在线观看| 波多野结衣双飞中文字幕| 激情视频亚洲| 多毛亚洲女毛茸小便| 吃上面搞下面的很爽视频| 欧美日视频777888| JAPANESE护士日本XX| 色888视频在线观看| 美女黄18以下禁止观看黄频 | 一色屋精品视频在线观看免费 | 女人喷液抽搐高?频| 苍井空一区二区三区免费视频| 口工漫画纯彩无遮挡h| 影音先锋男人的AV资源站| H肉无遮挡3D动漫在线观看| 下面好湿好想要香蕉国产在线| 6080YYY午夜理论片中文| 婷婷丁香五月激情综合在线| jizz国产免费观看| 2012中文字幕一页| 好吊妞在线免费视频| 337p日本欧洲亚洲大胆精品555588| 国产呦系列福利在线| 亚洲第一页呦女| 男人添女人下面真爽视频免费 | 艾草在线精品视频免费观看| 欧美VIDEOS粗暴| 中文字幕永久在线第一页| 亚洲A人片在线观看网址| 99热6这里只有精品2| 黑人上司粗大拔不出来电影| 国产精品丝袜美| 换爱交换乱AV| 久久综合国产乱子伦精品免费| 自拍不卡dvd在线一区| 国产高清视频免费人人爱| 亚洲乱片| 张开腿无遮无挡在线观看| 日韩综合久久久| 将军白浊粗大娇乳娇吟| 成 人 黄 色 激 情视频网站亚洲七七| 国产高清视频在线观看三区| 最新亚洲精品国产理论电影| 久久综合给久久狠狠97色| 韩国日本中文字幕| 最佳国产高清视频在线观看| 99热在线精品国产观看| 又湿又黄又粗又爽在线看 | 伊人大香线在线播放| h高潮娇喘抽搐视频| 杨幂视频 国产在线| 日本爽快片十八禁在线播放| 高清性欧美ⅩXX护士| 久99久热爱精品免费视频| 中文字幕在线永久视频| 亚洲高h视频在线观看| 亚洲欧美国产网曝| 国产乱子伦精品免费视频| 国产精品自拍自偷| 伊人狠狠操| 国产精品疯狂输出jk草莓视频| 变态另类调教在线视频区| 老司机成人午夜精品视频| 国产视频999| 久久九九有精品国产免费| 尤物在线视频免费国产| 国产男女乱婬真高清免费视频| 国产午夜精品理论片| 国产 在线swag| 午夜福利男女XX00在线观看| 天天噜噜天天爽| 2020国自产拍精品高潮| @熟女天堂| 色综合久久中文色婷婷| 亚欧日韩欧美网站| 国产美女被高潮免费网站| 国产嘿嘿嘿视频在线观看| 久久超级碰| Α片无限看亚洲| 白嫩美女被体内中出| 色呦呦影视在线观看| 一女被多男玩喷潮视频免费| 阿片免费在线视频网站| 国产系列 亚洲系列| 成人嫩草研究院免费网址| 黑人巨大巨粗在线观看| ass日本少妇p| 胖女性大bbbbbb视频| 亚洲AV电影院在线观看| 丰满少妇被猛烈进入高清的 | 亚洲中文字幕丁香婷婷| yy111111少妇影院光屁股| 国产在线下药迷倒白嫩美女| 国产真实露脸精彩对白| 日韩在线视频| 99久久免费精品色老| 好大好硬我要喷水了视频| 久久观看免费中文字幕版| 国产男女乱婬真视频免费| 亚洲欧洲日韩在线三区| 又爽又刺激又黄又大又大| 久久午夜综合久久| 福利国产私?线观看| 夫目前犯系列AV在线播放| 2020国产精品久久久久精品| 久久精品导航| 国产永久美国发布站旧版| 最新的AV导航在线观看| 亚洲色自偷自拍另类亚洲美女视频| xxxx手机在线播放www| 亚洲综合图片专区150p | 2019亚洲性爱| 在线二区人妖系列| 亚洲综合色88综合天堂| 亚洲精品h| 同性男男黄h片免费网站| 婷婷开心色四房播播久久一本人 | 国产一区二区三区尤物| 婷婷色香五月综合缴缴情香蕉| 综合图片亚洲网友自拍三区| 亚洲女子高潮爆白浆| 色多多国产中文字幕在线| 成年黄页网站免费大全| 尤物视频在线观看| 国产人成午夜免电影费观看国内在线精品2021| 一道本不卡免费高清在线直播在线 | 在线看人与动人物A级网址| 国产精品久久久久精品| 天天做天天爱天天爽天天摸| 国产午夜在线精品三级a| 国产愉拍视频在线观看| 爽爽婬人综合网| H视频在线观看视频在线男同| 亚洲一区二区电影视频| 亚洲美女亚洲美女炮交图久久| 2018偷拍亚洲精品视频| 日本XXXX视频免费看| 综合AV第1页| 精品午夜中文字幕在线| 婷婷丁香激情综合| 好湿好痛好紧的A级视频| 久久久久久影院| 又黄又刺激的网视频| 精品动漫第一页在线观看| 天堂AV里番在线观看| 国产男人桶女人| 国产高清视频在线观看三区| 高清人人天天夜夜曰狠狠狠狠| 曰韩美女午夜免费福利| 未成满18岁禁止免费观看网站| 刺激男女动态图| 久久精品摘花第一次俄罗斯| 亚洲色大成情网站| 香蕉在线视频观看大黄| 亚洲人成7777网站高清| 国内精品这里有免费视频| 又粗又硬又黄又刺激的视频| 国产在线精品二区刘亦菲多人| 国产在线下药迷倒闺蜜| 国产女同互慰高潮流水| 亚洲国产一区二区三区在线观看| 亚洲老熟女俱乐部| 午夜精品第一页| 久久撒尿视频下载| 永久看免费40分钟| 国产精品人成在线播放新网站 | 国内真实愉拍系列在线观看| 性小网站在线观看| 后进极品白嫩翘臀在线视频| 91极品反差婊在线观看| 国产131在线视频免费观看| 中国男同GayAv网站| 久久国产精品-国产精品| 国产精品无遮挡性行为| 国产一级婬片A| 又黄又爽又硬网站| 亚洲 日韩 熟女 色| ASIAN日本JAVA少妇乱子| 国产午夜精品一区理论片| 国产尤物视频网址导航| 全部AV免费手机网站| 亚洲人成网站18以下禁止| 亚洲日本va中文字幕在线不卡| 伊人久久大线影院首页动漫| AV高潮在线| 美女午夜福利视频| 国产高清毛卡片| 青青国产揄拍视频| AV资源站最稳定的资源站| 果冻传媒AV出轨剧情新作在线| H色在线播放| 白丝美女被啪到高潮视频| 又粗又硬又黄又刺激的视频| 国产精品日韩欧美一区二区三区| 成 人3D动漫在线观看网站| 最近中文字幕完整免费视频| 线日本妇人成熟免费| 久久久久久久久AV熟女| 一本大道香蕉久在线播放29| 亚洲人妖在线| 精品国产污免费网站在线观看 | 8888jiz国产视频| 放荡的护士乳在办公室揉视频| 把腿扒开做爽爽视频中文| 放荡的女老板bd在线观看| 精品免费国产一区二区| 久拍国产在线观看| 国内少妇偷人精品免费| japanese国产中文在线观看| 3d动漫偷拍亚洲| 亚洲熟女淫妇| 亚洲美女高清无水AV| 尤物午夜在线| 1区1区3区4区产品乱码芒果图片 | 国午夜产一级| 手机在线搞中出| 300部小U女视频在线麻豆| 女人喷液抽搐高?频| 国产免费888在线观看| 久久久久2021一个人看| 精品白嫩美女在线观看| 苍井空激烈的75分钟| 最新国产精品拍自在线观看| 多水的粉嫩小穴视频| 888激情视频在线观看| 天天视频H| 日出水成年人免费| 2021精品一区二区三区| 亚洲线精品一区二区三区四区| 高潮抽搐中文字幕在线看| 日日夜一区二区三区| 久久久免费网址| 丝袜美腿性爱AV| 美女福利午夜在线短视频| 永久baoyu国产在线播放| 亚洲欧美日韩国产综合一区二区三区| 在线视频网站www色| 国产一级免费看| 一个人看的www高清视频免费在线| 香蕉免费一区二区三区在| 可以在线看的网址你懂的| 淹影二区妇女三区自拍偷拍自偷 | 色窝窝免费播放视频在线| 麻豆国产原创视频在线播放| 啦啦啦啦在线视频免费播放8| 久久久久亚洲男同| 又粗又长又硬高潮了视频| 最近手机中文字幕大全| 国产初高中生在线视频| 国产极品嫩白精品| 日日爱 小视频| 亚洲永久免费视頻| AV片手机在线看| 亚洲制服日韩专区| 好紧真爽喷水高潮视频0L一 | 精品2020婷婷激情五月| 国产系列丝袜熟女精品网站| 亚洲最大性爱网站| AV淘宝国产首页在线观看| 高清清纯大学国产在线| 俺去俺来也最新色官网| 亚洲日本在线在线看片4k超清| 2020日本www网站不卡| 黄又色又免费的视频| 亚洲校园丝袜欧美校园丝袜| 欧美xxxx做受欧美| 美女任你摸啊啊视频里面那个啊| 亚洲欧美成视频| 浪货舒服吗好紧好多水视频| 亚洲天堂性爱网址| 久久亚洲美女精品国产精品| 国产精品2020免费看艾草网| 免费久久99精品国产自在现| 国产精品香蕉自产拍在线观看| 亚洲嫩草研究院久久久精品| 伊人的天堂| 伊人91AV视频| 午夜国产精华2021| 各种姿势玩小处雏女视频| 邪恶国产在线看| 国产第一亚洲| 天堂亚洲人成在线| 一个色综合社区| 制服丝袜第10页综合| 么公的好大好硬好深好爽视频| 日本网站大全在线观看| 中文字幕亚洲婷婷| 啊……不要啊,好深,用力……免费视频 | 亚洲国产精品一区二| 97色精品视频在线观看| 风流少妇按摩到高潮| 五月婷婷热六月激综合| 深田咏美一区二区三区AV高清| 欧美日韩在线观看国产一区| 日本高清不卡不码免费| 拧花蒂尿用力按凸起喷水尿视频| 少妇 日本 中文字幕| 理论片福利片在线观看欧美| 亚洲日本系列久久| 欧美视频妺妺窝人体色www| 亚洲日韩AV在线波多野结衣| 国产脚交视频在线观看| 啊~流水了嗯~日本在线视频| 亚洲 欧洲 日产 韩国网站| 老妇福利网站| 水多多国产精品视频| 刺激一区仑乱| 久久九九又粗又大又圆又爽又硬 | 国产呦精品系列在线播放| 日本成本人片免费久久 | 夜夜操护士视频| 99精品一区二区网| 呦男呦女视频精品一区| 旧里番在线一区二区视频| 偷看超市女厕所大白屁股| 国产婷婷丁香五月麻豆| 国产私密二区| 国产午夜精品百合| 国产精品又色又爽| A片大全丝袜国产动漫| 亚洲一区二区三区2020芒果| 婷婷激情婷婷激情产在线精品亚洲| 高干病房玩弄双飞| 欧美成亚洲成在线| 午夜丝袜鲁丝| h片在线观看资源网站| 国产1区1区3区4区产品乱码不卡| 精品在线视频欧美性爱| gogo西西人体大尺寸大胆高清| 永久美女视频在线看| yy4408国产AV一级| 亚洲青青草原高清| 亚洲综合色在线播放www| 免费观看很黄很色裸乳视频网站| WWW拍拍拍| 又长又大又粗又爽又黄的免费视频| 自拍偷拍区一区二区 精品区| 久久久私拍视频| 午夜少妇精品视频小电影| 在线亚洲人成电影网站色www| 国产综合视频一区二区三区| 大学生高潮流白浆在线观看| 曰本美女无遮挡网站| 色老久久精品SELAO| 日韩小说在线观看18| 欧美 天干天干国产| h片在线观看资源网站| 一站久久精| 天堂亚洲欧美| 久久久3P| jlZZjlZZ日木人水多| 久久人人爽人人爽人人爽| 久久成人成狠狠爱综合网| 全球AV导航在线观看| 天堂在线亚洲精品专区app| 在线精品中出| 麻豆国产区精品系列在线| 艾草在线精品视频播放| 小14萝视频在线视频精品| igao国产视频| 色呦呦在在线| 欧美日韩国产1区| 亚洲视免费播放一区伊人| 久久只有这精品99正在播放| 丰满的女教师波多野结衣| 国产欧美va欧美va香蕉在线| 隔壁寂寞的少妇中文字幕| 亚洲老熟女俱乐部| 久久久久精品青草线蕉综合| 久久人人爽人人爽人人片669| 波多野结衣好大好紧好爽| h国产在线观看| 久久亚洲制服视频| 国产精品美女被遭强扒双腿| 国产流白浆手机在线观看| 亚洲色大成网站www同| 高h视频亚洲| 给娇妻安排又粗又大玩3| 十八禁美女网站| 欧洲免费无线码在线观看二区 | 精品白丝喷水jk娇喘视频| 国产片美女福利| 亚洲va韩国va欧美va久久七七| 分一二三四区中文字永久幕| 成年男女人免费看片播放| 亚洲国产精品导航| 青青草原午夜精品福利| 夜夜春亚洲嫩草影院| A级高潮视频| A∨在线品爱网| 思思热久久精品| 久久久2019中文字幕乱码| 高潮尖叫视频网站| 成年女人免费观看大片| 国产一级毛卡片免费| 国产精品永久不卡免费视频| 久久久久性爱| 少妇下面好多紧水视频| 9久9久免费精品视频在线观看| 爱情鸟论坛波多野结衣| mmm国产在线人成| 女人下面白浆喷水视频| 午夜福利网偷拍| 18人成视频在线观看| 男男无遮挡H肉真人在线观看| 在线观看AV网站永久免费观看| 午夜福利精品亚洲不卡DY888| 亚洲色就色成人综合网| 久久久精品浪潮AV| 伊人AV一区二区三区| 18以下勿进色禁网站| 国产免费乱在线观看| 亚洲清纯国产视频一片一片| heyzo高清中文字幕| 日韩欧美另类小说| 一道本不卡免费高清在线直播在线 | 日日摸夜夜歪歪| 中文字幕高潮到痉挛手机在线看| 第九色综合激情婷婷| 欧美精品v国产精品v日韩精品| 日韩精品在线h| 亚洲色偷偷男人的天堂| 午夜福利体验免费体验区| 国产福利酱视频资源福利| YIN乱校园性运动体育课| 久久久视五月天视频| 亚洲va在线va天堂va888软件| 女强人被春药精油按摩4| 亚洲欧美日韩精品综合网| 国产黑色丝袜在线15| 一级a爱全过程全视频| 中文文字幕文字幕永久免费| 国产精品免费看久久久| 亚洲天天堂在线观看| 国产在线大屁股白浆一区| 在线观看免人成视频网站| 国产人妇三级视频| 国产巨波霸乳在线视频| 一级a爱全过程全视频| 狠狠操一区| 视频二区 国产精品 职场同事| 久久亚洲老熟女cc98cm| 1000部拍拍拍18勿入福利视频| 色综合久久白洁| 啦啦啦啦视频资源免费观看| J8又粗又硬又大又爽又长网站| 92精品国产自产在线观看48| 国产脚交榨精视频| 白丝制服美女在线好爽视频| 鸭子tv国产在线永久播放| 韩国在线观看一区二区三区| 国产丝袜jk福利在线观看| 国产V综合V亚洲欧美大| 亚洲中亚洲中文字幕无线| 无套中出中文字幕| 国产高清乱理伦片中文| 真人性囗交69视频| 极品色色97| 上课被同桌揉搓到高潮| 伊人久久性爱导航| 18人成视频在线观看| 强被迫伦姧惨叫国产| 野草视频在线观看免费最新| 女人脱裤子让男生桶爽在线观看| 亚洲欧美视频在线观看| 青青久久少妇| 可以看的黑人性较视频| 十八禁污视频男男| 新婚娇妻被注入春药| 亚洲国产另类久久久精品黑人| 亚洲人成午夜影院| 中国产看美女AV| a级亚洲中文字幕人成影院| yw193尤物国产精品| 丰满大乳奶水在线播放| 性爱综合网狠狠| 黄频视频大全免费的国产| 依依成亚洲综合人网| 粗了大了整进去好爽视频| 国产成_人_综合_亚洲_国产绿巨人| 国产午夜福利电影| 理论片免费视频观看影片| 狼人色香| 国产小屁孩cao大人AV免费| 午夜福利深夜xx00动态视频| 综合激情六月婷婷| 日韩欧美中文一区二区视频乱| 日本熟女 乱交| 午夜福利片国产精品| 色露露一级毛| 激情视频女人的天堂| 美女黄视屏免费| 午夜免费福利爽爽羞羞视频| 亚洲色大网WWW永久| 中日韩一区二区三区中文免费视频 | 香蕉97超级碰碰碰免费公开| 16女下面流水不遮图| 波多野结衣乳喷高潮视频| 波多野结衣高潮15P| 在线看片免费人成视频久网app| 又黄又粗暴的120秒免费GIF| 国产人人模人人爽人人喊98| 在线bt天堂网www| GV在线观看免费亚洲视频| 一区二区三区a视频| 91麻豆精品国产91久久久久久| 亚洲综合激情九月婷婷| 曰批视频免费看40分钟| 亚洲自偷自拍另类图片二区| 白嫩小受男同GV| 护士毛茸茸的性| 动漫 亚洲 自拍| 伊人久久大线影院首页动漫| 国语对白嫖大波女双飞| chinese国语videos国产| 被公多次侵犯致怀孕中文| 亚洲步兵一区二区三区 | 美女黄18以下禁止观看免费的| 岛国免费Aⅴ在线观看| 又粗又黄又硬又爽日韩| 国产AⅤ一肉欲| 无遮挡H肉动漫在线播网站| 国内视频爽死| 国产亚洲AⅤ在线电影| 亚洲色天堂2021| 国产永久免费BBw| 二区三区喷白浆| 嗯,啊轻点儿视频在线免费观看| 3D动漫精品啪| 久久影院狼人影院| 色老汉精品福利视频| AV换脸在线播放| 久久精品女人天堂网| 午夜福利视频少妇嗯啊| 精品国产这么小也不放过| 国产xxxx69真实实拍| freeHD农民工XXXX| 国产一区二区三区动漫精品| 国色天香社区视频在线观看| 在厨房被夫上司强迫中文| 777尤物免费国产在线| 各种少妇正面bbw撒尿| 日本无遮挡吸乳视频在线观看| 亚洲午夜精品一区二区三区| 在线看片V免费观看视频777 | 亚洲无吗在线观看| jk白丝国产精品| 777777米奇亚洲色| 草莓视频色版在线观看| A级国产片在线| 欧美日本α片免费| 欧美一区二区九九| 亚洲综合一本色一区| 西欧少妇伦乱在线视频| 国产超薄肉丝袜在线播放| 很黄很爽的视频网站| 亚洲日韩动漫精品| 国产高潮流白浆网站| 国产女人婷婷| 高H视频在线| 亚洲伊人久久综合影院| 中文字幕日本韩| 国产亚洲欧美日韩俺去了| 多人强伦姧美女免费看| 最新日韩AV网址在线观看| 福利高H视频| 2020国产情侣在线视频播放| 亚洲精品国产福利在线观看| aaa爽爽爽片在线观看| w11111光屁股影院| 激情婷婷丁香色| 深一点~我下面好爽视频| 无遮挡又爽又刺激的视| 亚洲七七久久88桃花综合| 偷窥国产亚洲女爱视频在线| 扒开老师的粉嫩泬10p| 好爽好紧好大的免费视频国产| 亚洲午夜福利网在线观看| 亚洲中文字幕毛茸茸| 免费A∨中文| 国产多人群p在线视频| 沈阳少妇高潮在线| 在线观看日韩制服丝袜欧美| 国产chinesehdxxxx老太婆| 日本A级一二三区| 加勒比AV在线| 国产欧美一区二区喷水| 亚洲色精品一区二区三区91| 韩国兔费A级作爱片在线观看| 白浆在线播放| 6一12泑女WWW雏| 久久加勒比| 国产乱理伦片在线观看夜| 老师的肉穴先锋影音| 99国精品午夜福利视频不卡99| 色综合伊人尤物| 2019国自产拍精品| 丰满少妇三级全黄| 杨幂精品视频在线免费观看| 国产一级AV片免费观看| 中国XXXX真实自拍| 五十路在线视频| 高清一区二区三区| 亚洲 日韩 熟女 色| 最新精品卡一卡二| 欧美人成免费网站| 欧美性爱一区二区在线观看| 国产精品私拍| 中文字幕久久青青| 十八禁网免费看| 午夜影院麻豆| 国产精品美女视频午夜版免费| 黄点网址在线观看| 欧美激情拍拍拍!| 嫩草亚洲精品在线观看| 久久九九精品国产免费看小说| aaa爽爽爽片在线观看| 亚瑟国产精品久久| 白俄罗斯毛茸茸福利| 欧美高清三区| 韩国aⅴ在线视频| 在熟睡夫面前侵犯我在线播放 | 曰批免费视频全过程在线观看| 999久久久免费精品国产| 五月天婷婷综合| 无遮高潮国产免费观看韩国| 又粗又黄又爽免费视频| 爱做综合网| 啊~cao死你个小sao货视频| 国产精品久线在线观看| 尤物国产综合国产综合| 国产白浆喷潮视频在线| 国产午夜福利免费视频网站| 国产老妇spa偷窥盗摄| 欧美高清一区二区欧美| 亚洲国产另类久久久精品黑人| 亚洲香蕉网久久| 苍井空一区二区三区免费视频| 中文字幕 免费乱码 欧美| 美女张开腿扒开逼给男人操高潮视频免费看| 亚洲丁香色婷婷综合欲色啪| 成年男女拍拍拍免费视频| 色露一区二区| jealousvue厨房乱子| 2021中文字幕入口网站| 亚洲午夜精品一区二区三区| AV在观线观看男人的天堂| 999国内精品视频免费| 好狠色在线视频| 国产无套乱子伦精彩是白视频高清下载| 成人夜晚爱做免费观看| 亚洲日韩电影网天堂| 羞羞色国产精品网站| K8福利精品第一导航| 国产免费一区二区三区免费视频| 亚洲色一区二区自拍| 最新在线精品国产福利| 朝鲜AV免费在线看| 草棚caoporon入口| 日韩女同互慰视频在线观看| 婷婷色五月中文在线字幕| 99RE 久久这里只有精品6| 国产熟睡乱子伦视频| 最新国产专区不卡| 久久网站亚蕉| 97一区二区在线精品视频| 国产黑色丝袜在线观看片| 我和妽妽的两天一夜视频| 亚洲熟女少妇视频| 2022AV在线免费观看| 亚洲一日韩欧美中文字幕在合| 性生大片免费观看网站yy| 2022国产最新在线视频| 精品香蕉久久久午夜福利| 国产,欧美,日韩,亚洲,一分钟| 啦啦啦啦免费视频在线观看| 日日噜噜夜夜狠狠视频| 办公室娇喘的丝袜短裙老师| 在线天天看片视频免费观看观看| 69堂国内精品片| 97色伦综合在线欧美视频| 大陆国产vs国产对白| mm1313亚洲国产精品无吗| yY111111少妇影院免费| 成 人 网 站 视频免费| 精品国产sM最大网站字幕| 亚洲成年女性大片在线播放| 天堂网成年在线网| 在线观看免费大黄美女片| 九月婷婷激情网| 亚洲va综合va国产产va中| 视频播放99re66在线| 杨幂AV喷水在线| 午夜福利美女在线| 国产乱婬视频| K8福利精品第一导航| 一级丰满少妇按摩| 亚洲中文有码字幕青青| 无遮挡又黄又高潮的视频| 国产精品自在在线午夜出白浆| 欧美激情性爱片在线观看不卡 | 2022年国产区在线观看免费视频| 久久国语露脸国产精品电影| 欧美性xxxxx极品| 国内女人喷潮完整免费视频| 亚洲欧洲视频一二三区| 一级a毛一级a做视频免费观看| 狠狠狠免费网| 高清国产下药迷倒白嫩美女| 7777狠狠狠琪琪电影| 成人午夜污污在线观看网站| 成人精品视频一区二区三区 | 久久精品二区中文字幕| 一级少妇精品一区二区三区| 久久久一本精品99久久精品88| 久久婷婷一区二区三区| 亚洲成国产人片在线观看| 中文字幕精品| a网站在线观看| 国产欧美亚洲精品第一页| 日韩在线直播天堂Av| 777米奇色狠狠狠888影| 手机免费Av片在线播放| 奇米777国产在线视频| 国产后进视频| 色综合 图片区 小说区| 亚洲精品国产综合久久一线| yellow片在线少妇| 国产精品杨幂在线观看99| 国产女主播高潮视频在线观看| 久久国产亚洲欧美久久| 性导航 天天精品| 最新国产区亚洲另类| 熟女乱肉艳妇视频| 国產性愛高清無碼| 最近更新97高清国语自产拍| 真人最新100部拍拍拍直播| 亚洲国产最新AV片| 99久久国产综合精品尤物| 亚洲欧美日韩在线视频一区二区| 日本特大a级猛片在线观看| 国产强奷女交警在线播放| 伊人色AV| 99欧美色性爱| 偷窥日本少妇撒尿chinese| 国产精品午夜一区二区三区,| 日韩性公交车上XXHD| 五月天婷婷白浆| 免费人成网站在线观看欧美| 妺妺窝人体色www新址| 国产大全中文字幕大看焦在线看| 久久99精品国产麻豆| 少妇被粗大的猛烈进出图片| 青青青在线视频免费观看| 青娱乐一区国产| 黑人又粗又大一| 国产精品中文字幕在线| 国产亚洲色内内电影网站| 强奷表妺电影bd高清云播 | 亚洲图综合专区20P| a级视频在线观看网站| 欧美一级艳片爽快片| aiai永久网站在线观看| 又大又硬又爽免费视频| 多人乱p欧美| 九九影院尤物视频| 波多野结衣在线观看一区| 动漫AV在线麻豆| AV未满十八禁在线观看免| 国产冒白浆视频| 色色AV网| 992午夜在线观看| 国产精品玖玖资源站大全| 校园 丝袜 亚洲| 色综合伊人色综合| 国产AV双飞| 69久久国产精品视频| 最新国产狂喷潮在线观看中文| 国产清纯美女高潮出白浆直播| 91久久香蕉国产熟女线看观看| 国产射里面吞精高潮在线播放| 久久88女同性午夜福利| 国产在线麻豆区香蕉| 国产在线不卡一区二区三区| XXXX性欧美高清| 亚洲色熟女图| 日韩gv国产gv欧美旡码天堂| 亚洲国产人成在线观看69网站| 亚欧日韩欧美网站| 午夜福利亚洲主播国产| 7777久久中文字幕| 中文字幕亚洲社区| 日日摸夜夜操的视频| 国产点击进入在线影院尤物| 国产主播在线播放粉嫩| 午夜福利电影| 婷婷丁香中文字幕| 久久久久99| 久久福利视频96| 国产簧片免费在线播放| 国产熟女高潮叫床视频| 成年女人片免费看| 东北老富婆粗口叫床语音| 亚洲国产综合专区在线播放| 中文字母乱码一二三区| 欧美A免费播放| 在线观看AV高清无毒网站| 关晓彤被调教的奶水横流| AV不卡一区二区| 亚洲老师机Av片有码| 肥大屁股日出白浆| 中文字幕日韩一区二区不卡| 日本xxxxx片免费播放| 丰满毛多小少妇12P| 久久撒尿视频下载| 国产V免费在线观看| 亚洲欧美日韩国产麻豆| 日本公厕所撒尿高清视频| 很污很黄而且免费的网站| 欧美老妇XXXXⅩ:性开放| 久久香蕉综合色一综合色88| 26uuu亚洲国产精品下| 国产美女被弄到高潮的视频| 中文字幕一区二区精品区| 正在播放亚洲国产旧里番| 天天狠天天透天天伊人| 初高中生洗澡被偷拍福利| 亚洲性肉天堂| 很黄很污无遮挡网站| 国产高清无夽456教| 成年午夜精品久久久精品| 口本中文字幕在线观看者| 亚洲成A∨人片在线观看| 久久精品国产99国产精品最新 | 最新AV网站在线网址观看| 老汉老妇姓交视频| 久久亚洲五月天| 69久久福利窝窝网| 俺去啦电影网不卡在线观看| 国产91精品久久久久久| 啊好爽快点国产精品| 成年片色大黄全免费APP久久| 69堂午夜福利| 黑人30公分无套内谢中国少妇| 少妇白浆在线| 91大神在线观看蜜芽尤物| 十八禁止无遮挡免费视频软件| 成年动漫在线网站免费| 制服丝袜美腿Av一级网站| 水好多啊,使劲插,真紧视频| 浴室乱子伦| 亚洲乱码中文字幕手机在线| 禁伦H肉高辣网站视频| 又又又爽又黄的美女网站| 亚洲欧美日产综合在线网| 99久久国产综合精品五月天| 国产A级片免费| 又大又黄在线播放| 综合亚洲图片一区在线| 作爱国产男男| 有码视频中文字幕| 激情综合在线亚洲九月天| 东北妇女精品bbwbbw| 亚洲多毛视频| 午夜欧美老妇理论片| 一起色一起碰一起爽| 又长又粗又大的欧美性爱视频| 要做AV在线播放| 日爽尤物视频| 日韩XXXXX免费视频| 亚洲精品亚洲人成在线| 尤物视频国产精品导航网址| 国产白嫩美女在线| h视频在线观看导航| 老师洗澡让我摸她胸的视频| 亚洲AV天天做在线观| 国产福利一区二区| 少妇特黄A片一区二区三区 | 国产精品久久久久福利电影| 亚洲欧美日韩综合一区| 永久免费AV网站在线观看 | 亚洲精品制服丝袜综合资源网| 性知音久久最新地址发布页| 日韩女同中文字幕在线| 久久精品导航| 国产老师精品视频| 亚洲A人片在线观看网址| XX娇小嫩XX中国XX| 双腿打开放在刑架受辱女视频| 亚洲AV成人综合网在线观看| 好湿好紧好痛A级视频| 性XXXX中国老太肥肥| 老色鬼永久视频网站| 亚洲欧美AⅤ在线资源| 国产免费高清国产在线视频| 亚洲尤物精品一区| 亚洲精品女同中文字幕| 少妇福利水多多| 亚洲欧美中文字幕品| 国产精品麻豆最新AV| 久久综合狠狠综合久久激情| 国产欧美精品福利一区二区| 国产日韩欧美久久久精品图片 | 欧美xxxx做受欧美88hd| 久久少妇精品视频| 就去吻亚洲精品国产| 又黄又爽网站在线观看| 亚洲国产高清在线观看视频| 精品H动漫无遮挡在线看尤物| 黑森林精品导航在线看| 在线一区女主播| 日日夜夜综合网| 黄H视频在线观看| 国产在线拍揄自揄视频菠萝| 国产一区二区三区精品久久| 邻居新婚少妇真紧| 老湿机69福利区在线观看| 午夜性刺激在线看免费| 欧美性爱喷水| 亚洲日韩欧美日本高观看| 久久HEZYO久综合亚洲色| 国产亚洲精品美女久久久久久| 四月激情狠狠操| 九九99九九99精彩视频观看| 疯狂做受XXXX中文字幕| 最新精品国偷自产在线| 91久久嫩草影院免费看| 大香伊蕉国产综合影院| 特黄 做受又硬又粗又大视频| 最新午夜理片中文字幕| 香港三 国产精| 福利视频综合| 日本中文鲁啊鲁在线播放| 亚洲一区电影在线观看| 成年女人免费观看播放视频| 一级理论片免费观看| 国产va在线观看免费| 又黄又爽又大又猛| 1024国产在线精品| 尤物国产在线精品福利三区| 狼人综合免费视频在线| 16女下面流水不遮视频| 亚洲色婷婷爱婷婷丁香五月| 国产亚洲日韩在线一区二区三区| 免费观看刺激高潮的视频| 国产超逼视频| 日韩亚洲免费看| 97久久嫩草影院免费看| 在线 中文 天堂| 好紧好爽好多水视频465视频| 国产白领嘘嘘视频在线免费观看| 亚洲欧美午夜理论香蕉| 又黄又硬又爽又色的视频| 欧美人与ZOZOXXXX视频| 伊人首页| 用力…深点灬用力在线视频| 最近更新在线日韩| 日韩一区二区三区免费视| 国产精品夜间| 自拍午夜精品| 成a人免费视频在线观看| 精品亚洲成a人片在线观看 | 男女肉粗暴进来120秒动态图| 波多野结衣AV网站点击进入| 精品第一国产综合| 久久九九又粗又大又圆又爽又硬| 久久成年片色大黄全免费| FREEEⅩXX性欧美HD| 在线亚洲日本欧美日韩国产| 国产激情丝袜破除在线观看| 最新成免费人视频在线| 国产免费踩踏调教视频| 操美女逼视频网站高潮| 性XXXX欧美老妇胖老太囗交| 国产超薄黑色丝袜在线观看| 日韩国产综合精选| 久久精品中文字幕有码| 亚洲曰本一区二区三区在线| 日本同志GAY片在线观看| 成年片色大黄全免费网站| 成年视频免费拍拍| 亚洲欧洲美洲天堂Av| 超级97碰碰车免费视频| 在线免费国内一级视频| 国产wwwvom在线播放| 成人免费视频一区二区三区| 粉嫩高中生的第一次| 2012年中文字幕在线中字| 黑人巨大亚洲综合在线| 丰满五十老女人性视频| 久久精品国产72国产精| 羞羞午夜男女爽爽成人影院一| 亚洲 教师 五月天| 国产男生午夜福利免费网站| 亚洲国产片论片在线播放| 2017天天爽夜夜爽精品视频| 亚洲欧美日韩精品另类| 张筱雨两腿肉门打开图| 久久久久久国产| 亚洲欧美视频艹逼嗯啊| 精品久久99| 国产丝袜在线精品丝袜不卡超薄 | 亚洲第一视角不卡高清在线| 老湿机香蕉久久久久久| 国产乱子伦对白露脸| 嗯啊嗯啊黑人在线视频| 天堂色在线观看| 国产精品多P对白交换绿帽| 又大又黄又粗的视频| 精品日本久久久久久久久久 | 777在线观看日本| 国产打屁股在线调教97| 97偷自拍亚洲综合| 九九九少妇免费| 午夜福利图片视频| 亚洲国产一区二区波多野结衣| 翁公在和厨房猛烈进出| 最爽网址在线观看| 性色AⅤ在线观看| 粉色成年视频在线观看| 亚洲自偷自拍首页精品| 91日日夜夜美女| 国产又粗又大在线观看| 老师扒开双腿任我玩| 亚洲护士老师的毛茸茸| 天天做夜夜做狠狠做| 亚洲国产精品尤物yw在线 | 高H猛烈失禁在线视频| 欧美日韩国产精品激情| 国产精品永久免费导航| 在线视频三区日本精品| 综合图片第二页| 精品国产AV一区二区三区| 2019午夜视频福利在线| 国产欲女高潮正在播放| 亚洲图片另类图片激情| 欧美性爱视频网不下载| 182tv午夜福利香蕉| 国产小U未发育视频| 8888四色奇米在线观看不卡| 不卡AV电影在线| 亚洲人成网站18男男| 国产AV现役女高中生无庶挡| 无遮挡H肉在线观看免费网站| 初音在线国产| 国产男女乱婬真视频免费| 亚洲国产综合人成综合网站| 又黄又刺激又粗又硬又大视频| 无人区乱码一区二区三区| www日韩欧美| 国产亚洲欧美日韩精品一区二区 | 99国产丝袜在线精品丝袜不卡 | 伊人久久综合免费视频| 国产深田咏美一区二区| 天堂AV大芭蕉伊人AV| 国产午夜在线精品三级a| 国产自在自线午夜精品| 8×8X拔擦拔擦AV网站| www.尤物在线| 国产中文字字幕乱码无限2021| 国内永久福利在线视频| 天天做天天爱夜夜爽女人爽| 在线播放国产不卡免费视频| 色呦呦在线免费看| 少妇挑战三黑人4p在线观看| 朝鲜精品一区二区视频| 流白浆h视频| 在线午夜免费网址| 在线推荐视频国产| 深夜福利在线视频免费| 日韩欧美激情在线看| 亚洲免费福利在线视频| 亚洲十八禁网站丝袜高跟| 歪歪福利亚洲福利| 娇妻粗大高潮白浆视频| 天天爱天天做天天爱狼狼| 午夜福利图片网站| 5252色欧美在线男人的天堂| 色多多www| 日本妇人成熟免费2020| 国产精品嘿咻嘿咻网站视频| 高潮抽搐娇喘的视频| 一本一道波多野结衣Av不卡| 曰批全免费视频观看| 久久综合九色综合欧美98| 久久久久久久性潮| 国产鲁鲁色| 嗯啊亚洲| …亚洲欧洲另类春色| 欧美高清视频一区二区三区| 亚洲免费热女视频| 极品美女三级在线观看| JIZZ丝袜老师国产在线| 草裙社区精品视频三区| 大陆出口高潮福利视频| 好黄好硬好爽好刺激免费视频 | 将军白浊粗大娇乳娇吟| 视频二区亚洲天堂2021| 日本午夜激情| 不戴套插女人视频在线观看动漫版| 国产videossex精品| 一级看黄免费网站| 中文字幕 第2页| 男女AV麻豆| 国产白丝JK制服在线视频| 啊~流水了嗯~日本在线视频| 五月丁了香蕉综合| 天天爱天天摸天天做| 亚洲国产AⅤ久久综合| 国产乱理伦片在线观看夜| 中国农村河南妇女BBW| 亚洲三级孕妇视频| 精品一区二区三区在线观看视频| 国产精品一区二区三区97视频| xxxx性欧美极品v| 嗯…啊 摸 湿 内裤 动态图| 被操高潮受不了视频| 精品推荐在线观看| 巨胸狂喷奶水www影院| 色多多久久精品视频2022| 啊不要别舔我高潮了啊视频在线观看| 珍贵张柏芝下毛在线| h网站黄在线观看| 大香伊蕉国产综合影院| 国产丝袜足脚在线播放| 日本道免费精品一区在线观看| 宅男噜噜噜66网| 看黄a大片日本真人视频直播| 在线观看国产午夜福利片| 韩国高清AV在线免费观看| 免费人成视频x8x8入口AA | 中文字幕一二三区2021| 中文亚洲成a人片在线观看| 香蕉久久福利院| 国产精品M V视频久久久| 2021最新手机在线观看视频| 精品偷自拍另类在线观看| 国产浪潮免费AV在线| 成人综合区另类小说区| 天天爽天天狼久久久综合| 国产精品_国产精品_K频道| 亚洲AⅤ熟女五十路中出| 中文字幕日产六区小草| 丝袜A∨在线一区二区三区| 精品国产另类AⅤ一区二区| 欧美日本成人| 婷婷综合之综合激情在线| 日韩在线不卡一区二区Av| 99丝袜脚交网站a| 草棚 国产精品| 美女高潮无套内谢双飞| 99国产在线综合网| 日韩无砖专区2020| 日本一区二区午夜| 东北不带套对白| 国产小呦泬泬99精品| 杨幂与老外沙发激情大战| 182tv午夜福利免费路线主页| 久久久久久久久久久熟女人AV| 成l人在线观看线路1| 18进禁美女网站| 久久精品欧美日韩精品| 夜夜夜性性性爽爽| 国产大学生闺蜜AV在线播放| 后进白嫩嫩翘臀在线视频| 正在播放老熟女高潮| 大香蕉天天噜在线视频| 成熟少妇水真多免费视频| 亚洲午夜福利在线播放器| 国内私拍福利精品| 灌醉迷晕系列在线观看| 亚洲A√无玛专区在线…| 亚洲免费影院香蕉| 亚洲理论电影在线观看| 麻豆久久五月国产综合| 中文在线А√在线| 欧美高清三区| 国产美女被遭强高潮无套| 免费xvideoa在线视频入口| 日本三级在线播放线观看免| 99久久这里只精品国产99RE| 99国产小视频| 香蕉大黄区片| 正在播放变态另类zozo| 久久综合色鬼综合色| 免费人成视频欧美| 老头扒开粉嫩的小缝亲吻| 新婚之夜破苞第一次视频| 曰批女人视频在线观看免费| 白丝美女被狂躁免费网站| 粉色成年视频app在线观看| 120秒十八禁免费视频无遮挡| 在线免费男女激情动态图| 在线免费国内一级视频| 137肉体日本大胆摄影| 日韩不卡不码视频观看| 国产v片在线播放免费无遮挡| 太长太粗太深好爽视频| 亚洲国产呦萝小初| 国产一区二区欧美激情| jyzz在线播放| 波少野结衣一区二区高清| 激情午夜福利| 国产女主播高潮在线观看| 操欧美大波美女视频| 最新国产一区二区三区理论片| 91极品反差婊在线观看| 波多野结衣紧身裙系列AV| 另类小说 在线日韩 欧美| 欧美日本韩国三级| 波多野结衣手机在线aⅴ| 国产精品久久久三级| 怡红院aⅴ国产一区二区| 又色又爽又高潮国产视频播放 | 国产美女槽高潮| 亚洲AⅤ永久| 俺去啦电影网不卡在线观看| 一进一出50分钟试看| 丝袜亚洲高清专区日韩精品| 成人午夜电影院免费观看| 波多野结衣ay在线| 9966精品视频在线| 午夜福利男女视频| 久久国产张柏芝| 日韩精品亚洲电影193| 国产丰满乱子伦麻豆| 女人与公拘交性视频| 加勒比中文字幕乱交| 未满十八禁止看1000部拍拍拍| 2020国内少妇自拍区免费视频| 亚洲激情四视频| 久久99国产综合精品女同| 丰满白嫩大屁股ass| 亚洲乱码尤物193yw| 永久精子网在线观看免费| 2012中文字幕第一页| 久久国产三区| 在线网站你懂得| 白嫩极品女粉嫩喷水视频的 | 色综合伊人尤物| 99热这里只有精品6国产| 一本二卡三卡四卡乱码娱乐网 | 激情一道本| 黑人巨粗巨大巨长视频| 久加久久加久久加久久| 男女后进式猛烈XX00免费动态图 | 久久a免费视频| 草莓国产在线观看免费| 2018欧美bbbbbxxxxx精品| 大香伊蕉在人线国产手机看片| 又黄又硬又色的免费视频| 成年动漫在线看网站免费 | 嗯哦国产在线播放| 久久久www老妇| 亚洲第一AⅤ在线| 朝鲜毛茸茸片| 国产免费AV一级在线观看| 99在线观看视频这里只有精品| MM131国产精品| 日本大乳高潮视频在线观看| 天堂亚洲中文字幕一卡| 欧美黑人巨大xxxxx| 一本久久a久久精品不卡| 婷婷六月激情在线综合| 十八禁视频网站免费| 美女扒开下面流白浆在线试听 | 又白又肥的大白屁股在线视频| 日韩免费不卡一区二区AV| 尤物yw193coc在线观看| 欧美男男作爱videos可播放| 国产亚洲人成网站在线观看| 69热视频在线观看免费a| 俄罗斯精品三级播放视频| 天堂免费在线观看骚虎视频| 国产视频嗯啊啊啊| 大陆老熟女洗澡性视频Tube| 99久久精品国产精品亚洲| 国产精品二区三区| 欧美成年免费一二三| 18以下勿进色禁网站一区二区| 国产又色又爽又黄的视频在线| 国产青青视频精品久久| 嘿咻嘿咻免费区在线观看欧美| 国产强奷视频在线观看| 粉嫩高中生第一次不戴套| 亚洲综合校园欧美制服| 国产午夜福利片| 杨幂被遭强奷倒高潮在线观看| 国产香蕉AV| 国产h视频| 一级a性色黄生活片| 粉嫩高中生洗澡偷拍视频| 941国产高清资源在线观看| 2020国产精品永久在线| 国产自产在线| 久久亚洲露脸| 国产小受18asian男男| 网址你懂的亚洲| 日本午夜高潮大痉挛电影| 久久久精品浪潮AV| BBBBBXXXXX精品农村野| 国产热综合热AV| 视频二区 69| 午夜福利在线啊啊啊啊不要| CAO死你小SAO货湿透了视频| 人成视频中文字幕免费在线观看| 综合狠狠久久| 国产在线精品一区二区三区不卡 | 一个人www视频在线国产| 2022成年视频网站| 色友国产精品| 91情侣偷在线精品国产| 国产精品一区二区在线| 亚洲精品卡通动漫第一页7区| 久久99国产精一区二区三区 | 亚洲一卡2卡3卡4卡乱码| 国产精品VA在线| 国产狂喷潮在线免费观看| 女百合精品久久| 国产精品337P| 色婷婷久久综合中文久久一本| 国产呦系列福利在线| xxxx69hd老师| 被操到高潮视频| AV水多多在线观看| 国产91爱在线播放| 在线亚洲精品456| 天色天干天天在线观看美女视频| 国产簧片免费在线播放| jk福利诱惑影视在线| 欧美老妇多毛最大的生殖器| 天堂精品伊人| 在线看片免费人成视久网app| 啦啦啦啦啦在线观看视频免费| 国产私拍福利精品视频推出导航| 韩国19禁A片在线播放免费| 国内精品伊人久久久影视| 国产呦系列视频网站在线观看| FREEEⅩXX性欧美HD| 最爽无遮挡行房视频| 动漫无遮羞视频在线播放| 最近最新免费中文字幕大全| 主播在线一区视频| 在线看黄AV免费安全| 公孙离脱光光禁止未18| 嗯,啊。日韩| 精品在线视频欧美性爱| 人XXXX性XXXXX欧美| 国产十八禁网站免费在线观看| 情侣作爱视频免费观看网址| 偷窥国内熟女高潮高清视频| 国产电影网亚洲第一| 最新mature熟女成熟丰满| 国产高潮国产高潮久久久| 亚洲免费成h| 亚洲熟女俱乐部| 国产一级理论免费版| 国产被弄到高潮在线观看| 尤物网址在线播放| 凹凸aⅴ视频免费播放| 极品AV凹凸视觉盛宴| 一区二区免费国产在线观看| 伊人五月综合| 亚洲中文字字幕AV影院| 亚洲中文字无线乱码| 在线观看国产精品日韩| 亚洲vs欧洲AV网站| wwwcncom中文字幕| 在线观看国产网址你懂| 男女激情爽爽爽免费动态图| 亚洲成aⅴ人在线电影| 久久99日韩国产精品久久99| 亚洲性爱性爱视频| 深夜福利小视频在线观看| 制服丝袜美腿一区二区| 午夜福利男女XX00在线观看| zozozo女人与牛交zozozo视频| 菲菲学院亚洲欧美激情片| 777米奇在线观看视频国产| 百花久久东京综合| 邪恶国产精品| 亚洲人五月天| 老妇xxxxx性开放| 精品国产迪丽热巴在线| 国产主播粉嫩白浆到高潮| 久久综合亚洲专区| 私拍国产精品视频| 无限资源在线观看视频| 中文字幕一区亚洲高清| 国产大学生一区二区三区| 国产激情一区二区三区| 狠狠pa免费视频| 99精品热视频这里只有精品| 亚洲制服久久精品一区| 亚洲呦女视频| 黄大色大片免费久久| 关晓彤被调教的奶水横流| 久久亚洲精品中文字幕60分钟| 国产精品九九色| 中文字幕第2页| 久久亚洲日本不卡一区二区 | 亚洲精品在线亚瑟视频| 一区二区三区高清无马在线| 2020精品国产自在现线看| 黑人freesex又粗又大又长| 中文字幕大看焦在线看| 不卡视频夜夜爽| 丁香五月激情中文麻豆| 国产主播粉嫩在线啪| 精品少妇XXXX| 国产精品任我爽爆在线播放,| 精品白丝喷水jk娇喘视频| 色久窝窝| 高潮巨胸喷奶水视频| 日韩00XX视频| 亚洲 中文 字幕视频免费看| 成本人动漫视频在线看18| 真人一进一出抽搐gif免费| 精品推荐在线观看| eee线免费观看视频网站在线观看。 | 国产原创精品国产专区| 啊……不要啊,好深,用力……免费视频| www欧洲ww在线视频看| 久久美国十大啦导航| 欧美性黑人精品HD| 免费gay片敏感小受男男| 91激情视频| 国产 欧美?亚洲?日韩视频| 亚洲五十路在线观看| 亚洲欧美中文字幕在线一区| 又大又硬又粗又长的日批视频| 老女毛茸茸乱伦视频| www.五月天| 免费国产精品女A| 久久综合九色综合97网| jk白丝高潮xx| 波多野结衣 一区二区三区| 嗯啊视频在线观看网站| 男人疯狂桶爽女人的视频| 国产69精品网址| 7777在线视频| 久久综合五月丁香久久激情| 老熟女导航精品导航| 又粗又硬又黄又刺激的视频| 中国AAAA一级淫片| 亚洲Av色在线站| 午夜免费交换在线观看| 午夜激情视频网站| 中文字幕DVD波多野结衣专区 | 亚洲美女乱码| 羞羞影院午夜男女爽爽真人视频| 久久精品国产亚洲大片| 国产制服丝袜在线第一页| 激情五月男女| 无遮高潮国产免费观看| 国产在线观看无遮挡| 无遮无挡拍拍拍| 久久不卡网| 饥渴少妇高清videos| 愉拍自拍视频在线播放| 亚洲AⅤ永久| 影音先锋在线中文系列| 国产人成免费视频不卡码| 国产精品丝袜在线综合区| 美女张开腿没内裤裸身视频无遮挡| wwwcncom中文字幕| 最新系列国产专区|亚洲国产| 大胆亚洲专区| 国产视频x爽死了| 成·人免费午夜在线观看| 天堂2021欧美日韩中文在线不卡| 久久久久久久久久久精品| jizz国产精品| 国产专区aⅴ在线观看| 国产自产在线视频一区| 伊人大杳焦在线23| 日韩毛女男土少| 久久综合亚洲综合| 日日放夜夜高潮| XVIDEOS国产在线视频| 亚洲色倩vA电影| 91青青草原在线| ady中文字幕在线视频大全| 99爱国产精品免费高清在线| 嗯啊嗯啊黑人在线视频| 日本 不卡 一区 色多多| 吉泽明步在线二区三区高清| 26uuu欧美一级| 亚洲二区在线观看| 阿v天堂网2021在线观看| 好吊妞国产欧美日韩免费观看| 色综合久久888| 成人Α片免费视频在线观看| YELLOW字幕网 中文字幕| 丰满多毛茸茸的大隂户| 国产女同互慰高潮流水| 亚洲色,天堂网。| 亚洲东京色一区二区三区| 女教师巨大乳孔中文字幕| 国产情侣一区二区三区| 久久精品一二三区| 久久偷拍视频SPA| AV美女免费看网站| 表妺好紧竟然流水了在线观看| 羞羞午夜男女爽爽成人影院一| 国产尤物视频网址导航| 2020国产精品午夜福利在线观看| 男人的j把女人的j桶爽了| 精品国产乱子伦一区二区三区| 国产免费性爱视频网站| 狠狠五月激情六月丁香| 亚洲尤物精品一区| 国产99视| 国产精品免费p区| 国产在线h| 黑巨茎大战欧美| 又黄又大又硬的免费网站| 精品国产日韩亚洲一区在线| 午夜dj免费看完整视频| 国产视频999| 国产女主播19播放| 777米奇色8888狠狠俺去啦| AV淘宝国产首页在线观看| 国产chinasex对白videos麻豆| 熟女毛茸茸bbw、bbw| 尤物AⅤ精品一区二区三区| 狠狠艹一区| 国产女厕所精品| 图片区 小说区 区 亚洲影院| 亚洲永久网站| 亚洲精品有码在线观看| 亚洲综合国产精品第一页| 久久精品视频免费| 2020韩国日本免费不卡在线| 2022在线免费观看黄v| 性夜影院爽黄A爽在线看| 久久精品国产一区二区三区| 国产精品麻豆系列在线播放| ai钙片在线观看尤物| А天堂中文最新版在线官网 | 婷婷成人丁香五月综合激情| 六月婷婷激情综合网| 亚洲十八禁 网站在线观看| 亚洲一区首页任你躁XXXXX| 宅男噜亚洲精品| 久久九九又粗又大又圆又爽又硬| AV网在线观看网站| 二级成 人影片 免费观看| 一个男孩子被5个男孩子淦哭| 亚洲性爱免费视频网站| 国产女做A爱全免费视频| 欧美激情拍拍拍!| 再深点再快点要高潮了在线看| 亚洲欧美在线看片AI| 成a人片在线观看免播放器| 推油一一区二区| 国产乱干丝袜| 亚洲国产午夜精品理论片13| 色www视频永久免费| 亚洲精品欧美精品日韩精品| 人免费午夜视频香蕉中文精品久久久久国产 | 粗了大了整进去好爽视频| 久久久r精品66| 国产大片黄在线观看私人影院| 精品在线99国内精品女| 灌满精子的波多野结衣| 日韩AV免费在线观看一区二区| 8x国产福利导航| 2022AV天堂免费视频| 亚洲国产精品久久久天堂| 亚洲精品综合色区二区| 青青草成人影片在线观看| 国产麻豆私拍精品视频| 青青伊人操五月天| 国产精品久久久| 国产日韩欧美亚欧在线| 国产swag在线| 亚洲成A∧人片在线播放调教| 你懂的 欧美| 24小时日本在线观看视频网| 中文字幕久久按摩| 欧美性视频浪潮!| 精品久久国产字幕高潮| 亚洲欧美影院| 亚洲欧洲日韩综合一区在线| 婷婷色中文字幕| 久久99国产精品三区| H漫大全视频在线观看不卡| 2018欧美亚洲综合另类色妞| 亚洲一区二区三区免费观看| 小天堂AV| les女女磨豆腐视频在线观看| 伊人久久大香线蕉综合直播| 一级风流片A级在线| 就要鲁就要鲁夜夜爽| 国产美女久久久久| 日本A级片网址| 毛多BBWBBWXXXXX| 久久香蕉国产线看观看精品yw| FreeXX性欧美最猛黑人| 亚洲无线码观看欧美午夜精品电影91| A级免费视频| 国产高潮流白浆免费观看| 韩国三级强奷老师| 夜色福利夜AV| 午夜亚洲国产理论片亚洲2020 | 亚洲全国最大的色惰网| gay在线观看| 国产精品久久久| 亚洲欧美日韩国产日批视频| 国产在线精品一区二区三区不| 亚洲精品嫩草研究院久| 亚洲欧美在线| GV在线观看免费亚洲视频| 99久在线国内在线播放免费观看| 在线国产一区免费网站| 在线日韩日本国产亚洲| 古典武侠丝袜制服| 国产情在线视频在线观看| AVwang在线精品| 麻豆国产区精品系列在线| 呦男呦女精品视频十区| 最近中文字幕电影在线| 日韩AV孕妇在线观看| 真实乱子伦露脸| GOGO全球亚洲中日韩人体高清| 国内www色综合| 欧洲婬荡少妇一级视频| 杨幂国产精品福利在线| 一个人在线观看欧美www高清| 最新国产在线aⅴ精品| 国产精品videossex白浆| 又白又嫩毛又多15P| 久久不卡日韩美女| 国产激情巨作麻豆高潮| 波多野结衣被操五十分钟视频| XVIDEOS国产在线视频| 欧美一区二区肉| aⅴ视频| 国产一本一道久久香蕉| 亚洲中文色欧另类欧美| AV天然尤物电影网| 午夜视频不卡| 亚洲美女乱码| 国产亚洲精品影视在线产品| 2020日韩在中文字幕在线| 好大好硬好长好爽A网站| 亚洲老熟女毛茸茸BBw| 中文字幕30p| AⅤ天堂亚洲 师生 中文 制服| 国产妇女免费日| 一级码无在线观看| 中文字幕亚洲精品第二页| 久久97精品久久久久久hb| 久久动漫一精品伊人| 九九99九九99精彩视频观看| 东北对白高潮视频?一| 亚州一极生活片| 久久调教亚洲| 啊啊啊啊啊亚洲| 狠狠狠狠视频| 久久久老熟女| 永久美女视频在线看| 午夜福利男女XX00动态图片| 国产高清视频免费人人爱| 国产破外女出血视频| 国产精品va在线观看丝瓜影院| baoyu222国产精品| 国产真实伦在线观看视频| 后进极品圆润翘臀少妇视频| 国色精品专区精品亚洲| 亚洲自偷自拍另类第| 91香蕉精品视觉盛宴| 全黄性性激高免费视频| 国产69XXXXX精品免费| 自拍 亚洲 欧美 另类 动漫| 久久黄瓜视频| 亚洲闷骚影院| 夜夜2018精品亚洲| 国产久re热视频精品播放| 最新国内少妇自拍区视频免费| 旧里番-[3d]怪物蹂躏美女| 啦啦啦啦视频资源免费观看| japanesehd国产在线视频| 在线观看人成视频免费观看| 99精品自拍高清一区二区| 天天影院色香综合| 久久系列国产精品喷水| 国产V综合V亚洲欧美大| 国产女同在线观看| 亚洲中文字幕A∨| 一边亲一边摸的高潮视频| 色多多美女精品视频网站| 国产美女久久久亚洲| 亚洲视频日本有码中文| 最新影片日本巨波霸乳影院| 久久综合色之久久综合| 最新日韩AV电影久久网| 在线看黄V免费网站免费| 亚洲国产男同同性videos| 日本亚洲中文字幕色| 2022AV国产精品| 国产精品一区二区动漫精品| 波多野一区在线观看| 又爽又黄又无遮掩的免费网站| 99re8这里有精品热视| 白丝少妇抠逼喷水| 国产女人叫床高潮视频| 欧美深夜释放| 又色又爽又黄的视频大片| 综合图区亚洲偷自| 97人人模人人喊直播| 极品小视频影院| 中国一级特黄大片美女| 亚洲精选福利视频| 亚洲日本va一区二区三区| 亚洲日韩穿丝袜在线推荐| 国产丝袜在线精品丝袜| 麻豆国产AV床下闺蜜| 五月丁香六月综合激情深深爱| 最?好看最新中文字幕2019最新資訊 | 国产白浆四溢| 女同AV在线播放| 丰满少妇2在线观看| 高潮视频网站| 2022AV电影在线观看| 免费观看人成视在线观看不卡| 日韩国产18年亚洲| 国产在线成人一区二区三区| 亚洲永久精品ww47香蕉图片| 最大胆人休大胆的做受| AV美女免费网站| 欧洲vpsw一级女片| 韩国AV在线| igao在线播放 国产精品| 好涨好硬好爽免费视频| 国产精品一区二区色爱| 午夜高潮电影网| 亚洲综合图色40p| 亚洲欧美综合另类自拍| 夜夜搂欧美视频| 亚洲丁香色婷婷综合欲色啪| ā片免费观看网址| 91碰在线观看| 又色又爽又黄又粗暴的小说| 国产H肉视频在线观看| 岛国岛国免费v片在线观看| 亚洲最大网站免费在线观看| A春药视频| 久久aⅴ不卡网站| 中文字幕专区最新資訊| 色偷拍 自怕 亚洲 10p| 老司机电影院在线观看高H| 亚洲情a成黄在线观看| Av丝袜天堂网手机版| 久久99热这里只有精品热| 国产精品合集乱| 高潮尖叫免费视频| 欧美激情性| 色综合 图片区 小说区| 在线看的视频网址你懂的| 男男浴室吸乳play特殊军种| H另类在线不卡免费播放视频网站| 五十路熟久久网| 国产精品VA在线| 国产打屁股在线调教97| 怡红院aⅴ国产一区二区| 善良丰满大胸年轻继坶hd| 2019亚洲va在线va天堂va国产| 国语自产偷拍精品视频偷拍| 手机天堂AV网| 国产偷窥熟女精品视频大全| 呦男呦女视频二区| 亚洲依依成人综合网站| 色综合青草香蕉97| 扒开屁股从后面进去动视频| 香蕉久久久久久AV综合网成人| 涨精装满肚子上学流出来| 老妇女老熟女老少妇乱熟| 亚洲第一红杏| 国产精品10p综合二区| 午夜性刺激免费的视频| 思思久久美女软件免费观看| 最新国产精品第一页| 精品少妇AV免费久久| 国产白浆喷水在线视频免费看| 亚洲中文字幕永久不卡视频| 青娱乐极品视觉盛宴| 阿娇13分钟坐爱视频| 又大又粗又硬又硬免费日批视频| 香港三级日本三级三级韩级2一′2| 高清清纯大学国产在线| 又粗又长又大又色的免费网站| 亚洲一区二区三区不卡视频| 自在自线亚洲а∨天堂在线| 亚洲人成网站色WW| 中国妇女被黑人在线播放| 亚洲国产美女精品久久久久| 午夜电影福利网| 久热爱精品蜜芽视频在线播放| 丁香婷图一区二区三区| 成年人免费视频在线播放| 中文字幕无线观看高清| 成人体免费视频| 电车美人强奷系列在线播放bd| 性情网站在线观看免费| 人人狠狠综合久久888亚洲| 亚洲女同同性videos| 又黄又爽又色又刺激的网址| 在线播放 白浆| 亚洲无线一二三四区男男| 亚洲国产精品久久久天堂| 欧美最猛黑人xxxx猛黑| 尤物在线视频网| 2021AV最新高清在线播放| 亚洲视频九区| Sm捆起来被多人强奷免费网站| 在线观看美女网站大全免费| 91青青祝频免费| AV一区二区三区| 人人爽人人爽人人片a∨| 成 人免费视频播放器| 国产无套高潮在线观看| 久视频精品线在线观看| 近親相姦中文字幕在线| 五月停停之综合| 亚洲欧美中文字幕日韩一区二区| 3d动漫h在线观看网站蜜芽| 正在播放国产水嫩美女叫| 2021AV天堂网在线视频免费| 亚洲色倩vA电影| 日本在线sm虐视频网站| 中文字幕乱码亚洲影视| 在线观看亚洲你懂得| 夜夜燥天天燥日日燥欧美老妇| 亚洲日本中文字幕在线四区| 国产又粗又黄又猛又爽| chinesefree乱子伦对白| yw193.can尤物国产在线网页| 成年男女免费视频网站| 桃色国产精品免费视频| 亚洲线路一国产线路| аⅴ的天堂网最新版在线| 忘忧草在线社区www日本免费按摩| 欧洲亚洲偷自拍第一页| 国产一卡免费在线播放观看| 亚洲高清精品50路| 被男人日下面视频| 99久久高清视频狠狠| 女上男下边做边叫视频免费| 亚洲阿v天堂视频在线观看| 尤物无H码在线观看| 亚洲婷婷一区二区三区| 日本嗯啊不要,视频| 午夜男女无遮挡拍拍流水视频| 亚洲物尤网址AV女优在线观看| BAOYU131永久免费视频| 国产狂喷潮在线免费观看 | 国产女主播一区二区二| 青青草原精品视频美女大全| 国产精品边做奶水狂喷直播| 国产精品一区二区三区亚洲电影 | 国产清纯大学生被调教视频| 高潮亚洲福利| 日本亚洲中文字幕色| 有码高清在线视频| 在线视频第一页日本| 2020最新国产在线中文不卡| 久久综合五月丁香六月丁香| 最新国产一卡二卡三卡四卡| 97高清国语自产拍在线观看| 婷婷亚洲久悠悠色悠在线播放| 禁止的波多野结衣| 一女被两根凶猛挺进视频| 国产精选91热在线观看| 暴力强奷美女孕妇视频| 又黄又高潮的视频| 夜夜爽夜夜爱| 国产精品半夜| 国产未满十八岁| 182tv午夜福利免费路线主页| 国产精品网站一起| 天堂网WWW在线资源| 野花视频免费观看高清在线观看| 成人福利在线视频| 欧洲 成 人 在 线 免费| 免费人成视频x8x8老司机| 最新免费播放福利小视频| 中文人成影院| 给丰满丁字裤少妇按摩到高潮| 深夜福利小视频国产| 亚洲婷婷后入动态图| 亚洲国产成熟视频在线色多多| 欧美激情在线观看免费不卡| 亚洲大陆夜晚福利| xxxxtv国产| 粗大猛烈进出高潮视频| 毛多BBWBBWXXXXX| AV 天堂 色| 在线播放免费观看AV片| 嘿咻嘿咻免费区在线观看97| 2020亚洲最新中文字幕乱码不卡| 高h男男视频在线| 美利坚精品视频| 午夜dj在线观看免费完整高清在线| 日韩 三级中文字幕| 亚洲免费Ⅴa视频网站| 国产激情电影综合在线看| 亚洲国产精品高清线久久dvd| 日本道DVD中文字幕专区| 国产电击在线观看| aⅴ免费网站观看| 亚洲影院在线| 欧美伊人久久大香线蕉综合| 开心五月婷婷色婷在线| 久久www免费人成看片内容丰富| 伊大人香蕉综合在线视频LD | 在线观看AV网站永久能播放的| 91情侣在线精品国产| 免费人成视频x8x8老司机| 激情午夜福利| 一级爽快片高清在线观看| 在线观看免费H| 久久精品国产99久久六动漫| 巨胸喷奶水视频milk| AV不卡一区二区在线直播| 极品少妇做受| 久久精品麻豆| 在线天堂中文新版WWW| 精品亚洲人人| 内地china麻豆videos| 青青草原网站手机版| 中文字幕中文有码在线| 3D国产小屁孩cao大人免费| 波多野结衣119分钟中文字幕| 国产美女被遭强高潮开双腿视频| 久久这里只精品国产免费99热4| 国产h视频| 又黄又硬做受视频| 国产精品h片在线播放| 曰批在线亚洲| 丰满年轻岳欲乱在线播放| 九月婷婷亚洲综合成人| 日本午夜小视频| 久久精品张柏芝| 亚洲中文无线码| 亚洲AV电影院在线观看| 天天摸天天碰天天添| 自拍另类图片区亚洲| 二个人看的www视频在线观看下载| 曰批全过程免费观看| 久久a视频| 尤物yw国产在线观看| 春药高潮抽搐在线观看| 欧美孕交VIDEOSFREE黑| 欧美精品制服丝袜自拍| 337p粉嫩日本欧洲亚洲大胆| 动漫精品三区亚洲精品| youwu视频网站在线播放| 国产欧美日韩va另类| 伊人亚洲天堂色色王国黑人| 国产女主播高潮视频在线播放| 影音先锋大黄瓜视频| g0go人体大尺香蕉| 好吊操无需播放器手机在线| 伊人久久大蕉视大全| 午夜三级a三级三点窝| 亚洲精品自产拍在线观看动漫| 另类小说综合图片去日本道| 女人的AV天堂| 久久久久国产精品| 亚洲小少妇| 最新A V在线播放| 国内精品视频在线观看九九| 国产欧美va欧美va在线| 日韩中文字幕衣裤| 日韩AB播放三区| 视频一区 制服丝袜 古典武侠| 国产yw8825免费观看网站| 在线免费观看两男操一女视频番污| 国产精品日日摸夜夜添夜夜添| 国产丝袜jk福利在线观看| 亚洲人情综合网| 伊人色综合久久另类| 啊v天堂网在线观看手机版| 国产美女免费高潮流白浆| 亚洲综合图片专区150p| 亚洲中文aⅴ中文字幕| 中年熟女五十路免费观看久久| 国产色秀视频在线播放| 日本高清一区和二区免费| 一区二区国产在线观看免费| Jk女人喷液抽搐高潮视频| 精品国产1024| 老师穿着旗袍肉色丝袜让我玩| 丁香婷婷中文字幕综合| 国产男女乱婬真高清免费视频| 精品精品精品国产自| 精品女厕高清国产| 午夜福利男女XX00动态图翅| 亚洲h 视频| 好男人免费观看在线视频社区 | 日本高清在线中字视频| 五月天婷婷网亚洲综合在线| 美女被搞在线国产| 亚洲午夜福利在线网站| 无遮挡又黄又高潮的视频| 国产欧美精品一区AⅤ| 亚洲国产精品九月天| 久久亚洲五月| 四川美女白浆在线| 把日出女人白浆免费视频| 久久久久性爱| 亚洲一区二区三区在线免费电影| 丁香五香天堂久久| 亚洲A级片免费看| 最新国产午夜精品视频不卡| ijzzijzz精的女人美女| 在线18视频免费看| 国产精品八区在线观看| 夜夜添视频| 久久久精品少妇| 中文字幕色综合| 国产熟女BBXX| 很黄很色很污的免费网站| 99久热只有精品视频在线17| 波多野结衣一区二区三区高清| 有在线看片的资源吗www| 国产美腿丝袜激情视频| 久久精品女人天堂AV麻| 天天综合天天做天天爱| 国产理论一区二区三区| 第九色综合激情婷婷| 大屁股XXXX高跟欧美黑人| 亚洲国产一区二区三区狠干| 很黄很色很爽在线免费观看| 193尤物视频在线看| 手机免费Av片在线播放| 午夜福利体验免费体验区| 午夜福利视频试看两分钟| 极品少妇福利午夜电影| 综合五月激情二区视频| 国产夫妻在线视频| 久久97视频| 日本又色又爽又黄的视频网站啊| 夫の上司に犯波多野结衣| 久久亚洲国产| 亚洲日韩中文字幕久热| 亚洲视频在线观看免费| 国产情侣动作自拍| 亚洲中文久久免费精品| 国产白浆视频在线| 好吊妞在线免费视频| 成人三级视频在线观看一区二区| 天天堂AV麻豆| 殴美亚洲动漫视频| 亚洲成年人AV| sm无遮挡免费看| 久久99热这里只频精品6| YY,11111111111少妇影院| 精品伊人久久久香线蕉| 久久网更衣室偷窥国产| 野花永久免费看视频久久| 国产精品又色又爽| 亚洲影院一区二区三区| 国产精品久久久久影院亚瑟| 久久99热只有频精品6狠狠| 午夜美女一级A级视频| 商场全景女厕偷拍红内裤美眉| 亚洲VA在线VA天堂VA不卡| 亚洲一区公司在线| 国产在线一区二区三在线| 一本久久综合aa亚瑟| 粗大猛烈进出高潮视频二| mm131亚洲美女视频| 黄se视频在线观看免费| 丁香婷婷激情在线| 日本丰满少妇一区二区| 亚洲a视频欧美| 亚洲国产高清不卡在线播放| 国产美女在线观看| 朝鲜精品一区二区视频| AV网站在线观看白丝| AV天堂永久资源防屏蔽网址| 又爽又高潮的免费视频在线| 天天做天天摸| 韩国免费无遮挡在线观看| 狠狠操视频区| 2021最新久久久视精品爱| a级理伦午夜日本区| 欧洲A老妇女黄大片| 一区二区三区精品道| Av不卡一区在线看| 色福利视频导航| 中文亚洲成a人片在线观看| 岛国视频一区二区| 成a人片在线观看免播放器| AV免费不卡国产在线观看| 最近最新中文字幕视频| 不要好爽好深高H视频在线| 椎名空强制中出在线观看| 日本一区二区电影在线观看| 天堂AV里番在线观看| 亚洲欧美精品综合欧美一区| 韩国久久一级| 白浆视频网| 99RE 久久这里只有精品6| 领导不戴套玩弄下属娇妻| 国产精品三级最新一区、| 国产精品第17页| 国产精品尤物铁牛tv| 嗯……嗯 啊视频在线观看| 在线播放亚洲日韩5| 国产Av下药| 午夜影视在线观看免费| 8x永久免费视频在线网| 热の综合热の国产热の潮在线| 131美女图片爱做视频| 又黄又猛又粗又大视频| 亚洲天堂在线免费观看视频| swag 你懂的 视频| 大伊香蕉在线播放97| 在线观看国产网址你懂的 | 婷婷丁香八月激情综合站| 黑人粗长五月天在线观看| 亚洲va中文在线播放| 开心播播网| 你懂的视频网站| 日韩在线一区二区三区观看| 国产zzjjzzjj视频全免费| 女强人被春药精油按摩4| 少妇爽到流白浆18p| 1000部辣妞范在线观看| 国产美女爽到喷出水来视频99| 成年午夜性视频131| iGAO视频网_为爱搞点激情| 2021AV天堂精品手机版| 国产日产久久高清欧美一区AB| 影音先锋色AV男人资源网| 国产亚洲视频免费播放| 小草在线资源视频免费观看| 欧美推油| 国产精品V日韩精品v| 成年拍拍视频| 在线看片国产日韩欧美亚洲| 在线观看网站亚洲h| 国产羞涩在线视频| 澳门久久少妇| 亚洲欧美日韩一区二区三区在线观看| 最黄最刺激的网站| 中国多毛洗澡偷看| 男女无遮挡羞羞视频免费网站| 一级看片免费视频囗交| 久久综合色中文字幕| 日本最新免费区中文| 外国三级真做在线观看| 小嫩批日出水视频免费下载| 综合图区亚洲偷自| 在线视频提供日本高清视频在线一本视频| yy11111111手机版少妇`院| 又大又黄又硬又免费的费的视频| 公和我做好爽添| 天天做天天爱夜夜爽夜夜爽| jk国产在线播放| 99久热re在线精品视频| 三上悠亚AV香蕉在线观看| 中文字幕福利一区二区三区| 另类专区欧美制服视频| 很黄很色很污的免费网站| 呦导航国产在线| 单亲乱l仑视频在线观看日本| 亚洲一区在线观看入口| 大桥未久亚洲一区二区| 国产在线观看你懂的| 午夜喷水视频在线观看| 日本高清有码青草| 两女互慰高潮视频在线播放 | 韩国一级婬片特黄特刺激| 日本午夜久久久久久| 不卡在线观看免费AV| 久久久亚洲精品日韩| 69色最新在线视频| 国产黄区18勿进视频免费| 激情试看60秒做受小视频| 狠狠操免费公开视频| 欧美又大又粗又硬又长视频| 亚洲国产日韩AV| 欧美一级肉情视频在线观看| 一本到日本不卡在线播放| 亚洲精品国产精品乱码不卡√| 国自产拍在线天天更新网站| 亚洲精品久爱网站| 亚州AV永久综合在线观看红杏| 五月婷婷2019| 亚洲综合久久艹| 啊啊啊我想要天堂| 制服丝袜第一页 在线播放| 亚洲熟女交换| 成a人片免费网址| 亚洲欧美日韩国产麻豆| 成人拍拍拍无遮挡免费视频| 粗大猛烈进出高潮在线视频| 伊人久在线视频| 午夜喷水福利视频| 欧美日韩视频777888| 日日日 揉揉揉 日日日| 久久国产乱子伦精品免费台湾| 亚洲,欧洲AVAV| 国产xo免费视频在线观看| 西西人体337p| 国产h在线观看| 2021国产自一区二区| 国产富婆一区二区三区| 又大又硬又粗又长的日批视频| 动漫久青草国产在线视频| 国内外成年在线视频你懂的| 又黄又爽的成人免费视频| 4P少妇挑战黑人全集| 强制高潮18xxxxhd日韩| 18满xo影院视频免费体验区| 国产在线精品一区二区高清不卡| 国产在线视精品在一区二区M| 免费在线国产一区二区三区精品| 亚洲嫩模喷白浆| 亚洲日韩 今日更新| 大量国自拍情侣| 亚洲综合制服丝袜另类| 日本丝袜办公室视频在线| 久视频精品线在线观看| 中文字幕少妇大胸| 午夜男女XX00视频免费777| 成人福利在线视频| 高清午夜福利视频| 亚洲午夜久久久影院伊人| 成 人 网 站 免费 在 线品善网| 老司机国内精品久久久久精品 | ai迪丽热巴喷水| ww555kkk欧美精品| 午夜福利精品亚洲不卡DY888| 一区二区女优| 尤物精品资源YW193网址| 2021日韩中文字幕视频在线| 中国大陆精品视频XXXX在线看 | 亚洲乱码中文字幕综合| 亚洲天堂AV麻豆| 午夜福利国产小电影| 亚欧乱色国产精品免费九库| 青草青草亚洲一区二区| 伊人依成久久人综合网| 999五月精品| 亚洲aⅴ一区二区三区| 欧美性爱精品国产12| 国产欧美成aⅴ人高清| 亚洲第一页欧美在线播放| 国产精品亚洲综合色区| 成 人 网 站 免费 在 线品善网| 国产性夜夜春夜夜爽| 亚欧a人视频在线| 顶级少妇午夜福利水多多在线观看 | 成 人 网 站 大全香蕉| 中文字幕久热精品视频在线| 亚洲综合色自拍一区| 国产女人天堂| 2021国产精品自在自线| 亚洲综合偷拍不卡一二三区| AV理论片福利片在线观看| 日本护士吞精囗交图| 在线免费你懂的| 国产高清在线精品一本大道| 国产偷国产偷亚洲高清日韩| AV在线综合导航| 少妇影院yy11111中文| 亚洲熟女XXⅩ| 办公室娇喘的丝袜短裙老师 | 中国性BBBBBxxxxx另类| 太粗太硬太深了太涨了轻点视频| mm1314午夜福利在线视频| AV线上免费网站| 嗯,啊啊免费视频| 中文字幕尤物视频在线观看| 美女露全身永久免费网站| 五月综合影院婷婷综合在线 | 色偷拍自怕亚洲综合| 午夜精品视频网站是| 素人激情视频福利| 97自拍超频在线| 国产刚刚发育被强j在线| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品VIDEOSSEX国产| 亚洲午夜福利电影| 亚洲多人视频在线播放| 色综合久久88色综合天天| 天堂AV熟女网站| 日韩XX视频| 国产高潮大叫在线播放| 午夜岛国福利视频| 亚洲国在线观看网| AV天然尤物电影网| 又爽又硬又黄的视频| 亚洲一区二区狠干| 最新尤物国产在线观看| 久久久久久久久久久久中文字幕| 最近更新中文字幕第1| 欧美XX片| 国内精品一区二区三区| 国产精品永久视频免费| 伊人久久综在合线亚洲2019}| 尤物视频在线h| 高潮在线一区| 国产精品二区三区| 国内性生大片免费观看|