比較SQL Server 2008資料庫引擎優化和索引優化

iSQlServer發表於2009-03-09
除了可以處理 Microsoft SQL Server 的新資料庫功能以外,資料庫引擎優化顧問在具體操作方面也不同於 Microsoft SQL Server 2000 索引優化嚮導。儘管這兩個工具都提供了圖形使用者介面 (GUI) 和命令提示符介面,但熟悉索引優化嚮導的使用者應注意以下更改。

  有關資料庫引擎優化顧問的新功能的完整列表,請參閱資料庫引擎優化顧問功能。

  優化資料庫所需的許可權

  在 SQL Server 2000 中,只有 sysadmin 固定伺服器角色的成員可以使用索引優化嚮導來優化資料庫。在 SQL Server 中,通過使用資料庫引擎優化顧問,sysadmin 角色的成員仍可以優化資料庫,但目前 db_owner 固定資料庫角色的成員同樣可以優化自己所擁有的資料庫。

  注意:

  首次使用時,必須由具有系統管理員許可權的使用者啟動資料庫引擎優化顧問以初始化應用程式。初始化後,sysadmin 固定伺服器角色的成員和 db_owner 固定資料庫角色的成員都可以使用資料庫引擎優化顧問來優化資料庫。但請注意,db_owner 角色成員只可以優化自己所擁有的資料庫。有關詳細資訊,請參閱初始化資料庫引擎優化顧問。

  工作負荷上下文

  索引優化嚮導使用選定要優化的資料庫來評估工作負荷中的每條語句,而不管該語句最初是否是在該資料庫的上下文中執行的。索引優化嚮導在一個優化會話中只能優化一個資料庫。資料庫引擎優化顧問可以在一個優化會話期間優化多個資料庫。資料庫引擎優化顧問使用指令碼中的資訊確定語句執行所在的資料庫,並針對該資料庫評估此語句。選定要優化的資料庫不會影響評估語句的方式。

例如:

  * AdventureWorks 資料庫包含一個 Person.Contact 表,該表中包含 FirstName 和 LastName 列。
  * 工作負荷 TuneQuery.sql 包含以下查詢:

   SELECT FirstName, LastName
   FROM Person.Contact
   WHERE LastName = 'Abercrombie';
   GO

  * 在預設情況下,User1 連線到 MyDB 資料庫。

  在 SQL Server 2000 中,User1 從命令列發出以下命令,或使用索引優化嚮導 GUI 執行類似的步驟:

  Itwiz -D AdventureWorks -I TuneQuery.sql –o rec.sql –U –P

  此方法有效,因為 TuneQuery.sql 中的每條語句均針對 AdventureWorks 資料庫(因為命令列 -D AventureWorks 中指定了它)進行了分析。TuneQuery.sql 在 AdventureWorks 資料庫中有效,優化繼續進行,並且未出現任何問題。

  使用資料庫引擎優化顧問時,命令列語法為:

  dta -s Session1 –D AdventureWorks –if TuneQuery.sql –of rec.sql –U username –P password

  由於預設情況下,User1 連線到 MyDB 資料庫,因此係統將資料庫上下文設定為 MyDB。然後,對 MyDB 資料庫而不是對 AdventureWorks 分析 Transact-SQL 語句。該語句在 MyDB 中無效,因此被忽略。

  為什麼會出現這種情況?如果 User1 在未指定目標資料庫的情況下使用 sqlcmd 或 SQL Server Management Studio 來執行 TuneQuery.sql,則 TuneQuery.sql 將針對 MyDB 執行分析,這將導致分析失敗。資料庫引擎優化顧問的操作與此類似。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-564913/,如需轉載,請註明出處,否則將追究法律責任。

相關文章