日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SQL Server 最佳實踐分析器使用小結

瀏覽:204日期:2023-10-30 13:14:04

Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server開發團隊開發的一個數據庫管理工具,可以讓你檢測設計的數據庫是否遵循SQL Server操作和管理的最佳實踐準則。這些準則公認有助于提高數據庫的性能和效率,并讓應用程序易于維護。

2,開始使用SQL BPA最佳實踐分析器

安裝完成后會有一個SQL Server Best Practices Analyzer User Guide的Word文檔,如何使用講解的很清楚,基本步驟如下:

(1)登錄SQL BPA

(2)添加分析/檢測的SQL Server實例

這里需要輸入SQL Server實例名稱,Friendly Name用來和后面創建Best Practice Group相關聯(和SQL Server實例名稱保持一樣就可以了)。Database List的缺省值為*,表示包含當前SQL Server實例的所有數據庫。但是,BPA會跳過對‘master’, ‘tempdb’, ‘msdb’, ‘pubs’, and ‘northwind’等數據庫的檢測。

(3)管理Best Practice Groups(最佳實踐組)

首先需要創建一個Best Practice Group,其實是組合了一些Rules,并和前面輸入的SQL Server實例進行關聯。

(4)分析SQL Server實例

將前面創建Best Practice Group移到Best Practice Groups to be Executed列表中,就可以按照前面定義的Rules來執行,并產生Report提供改進的建議和準則。

3,SQL BPA v1.0包括的Rules

我覺得這個是重點,因為只有明白了這些SQL Server操作和管理的最佳實踐準則,才能在設計數據庫和編寫T-SQL腳本時,盡量按照這些Rules來操作,提高SQL Server和應用程序的性能和效率。

其實所有的Rules都在這里(English Version)file:///C:/Program%20Files/Microsoft%20SQL%20Server%20Best%20Practices%20Analyzer/html/RuleInformation.html#_Rule:_Explicit_Index_Creation,請注意我是采用默認路徑安裝的SQL BPA,如果你改變的安裝路徑,就不在這里了。

下面將一些自己比較感興趣的Rules整理了一下:

(1)數據庫設計

Rule: Tables without Primary Keys or Unique Constraints

檢測數據庫確保所有的table都有定義一個Primary Key或一列有Unique Constraint的定義。

Rule: User Object Naming(用戶對象的命名)

檢測以sp_, xp_, or fn_為前綴命名的用戶對象,避免和SQL Server的內置對象發生命名沖突。如果SQL Server發現存儲過程以sp_作為前綴,就會先到master數據庫中查詢這個存儲過程,影響性能呵。

因此,要符合下列準則:

不要使用sp_前綴來命名用戶定義的存儲過程;

不要使用xp_前綴來命名用戶定義的擴展存儲過程;

不要使用fn_前綴來命名用戶定義的函數。

其實,可以通過使用usp_, uxp_, or ufn_等前綴來命名就可以了,u表示user defined。

(2)T-SQL

Rule: Cursor FOR UPDATE column list

檢測stored procedures, functions, views and triggers中FOR UPDATE子句。當一個cursor定義了FOR UPDATE子句,則推薦提供明確的column列。FOR UPDATE用來定義cursor內可更新的列。如果提供了 OF column_name,則只允許修改列出的列。如果在沒有指定列的列表,除非指定了READ_ONLY并發選項,否則所有列均可更新。SQL Server可以基于指定的列優化操作。

Rule: Cursor Usage

檢測stored procedures, functions, views and triggers中是否正確定義cursor可更新性。在如下情況下,會報告失敗:

當一個cursor沒有定義FOR UPDATE子句,但通過cursor來更新;

當一個cursor定義了FOR UPDATE子句,卻沒有通過cursor來更新。

不過,一般我們盡量避免使用服務器端cursor,因為比較占用服務器內存資源,影響SQL Server的性能。可以使用嵌套查詢或者WHILE語句,來代替cursor。即使使用cursor,也應注意定義cursor的一些選項,如FAST_FORWARD。

Rule: Explicit Index Creation

推薦使用CLUSTERED or NONCLUSTERED顯式創建index。

Rule: INSERT Column List

要求在使用INSERT時,明確提供column列表,提高代碼的可維護性。

Rule: Nested Triggers Configuration

檢測由于nested triggers的配置問題,未觸發的triggers。這個比較少有,直接貼過來了。

When 'nested triggers' configuration option is set to 0, any AFTER trigger defined on tables/views updated inside an INSTEAD OF trigger is not fired. This rule:

1) Checks the value of the configuration option and exits if it is not 0.

2) Scans all INSTEAD OF triggers and generates a list of tables/view being target of DML from within a trigger.

3) Checks whether any of the identified DML targets have AFTER triggers defined on them.

4) Reports non-compliance for any such case.

Rule: NOCOUNT Option in Triggers

檢測triggers,確保在triggers前面寫有SET NOCOUNT ON。

SQL Server在每一條語句執行完成后,都會發送’done’信息。這些信息會導致觸發trigger的應用程序可能產生一些意外的后果。因此,在trigger前面加上SET NOCOUNT ON是一個良好的設計習慣。

當然,在stored procedures, functions中都推薦在前面添加SET NOCOUNT ON。這樣一系列SQL命令執行影響的行數不會傳回客戶端,減少網絡流量,提高性能。

Rule: NULL Comparisons

檢測stored procedures, functions, views and triggers中涉及NULL常量的等于或不等于比較。推薦設置ANSI_NULLS為ON,并且使用IS關鍵字來呵NULL常量進行比較。

Rule: Results in Triggers

檢測triggers,確保triggers沒有數據返回給調用者。因此,不推薦在triggers中使用如下語句:

PRINT statement

SELECT (without assignment or INTO clause)

FETCH (without assignment)

Rule: Scoping of Transactions

檢測stored procedures and triggers中的transaction范圍,推薦transaction的開始和結束在同一T-SQL結構內。

一般而言,盡量縮小transaction的范圍,避免占用大量的資源,影響SQL Server性能。

Rule: SELECT *

檢測stored procedures, functions, views and triggers中SELECT *的使用。盡管SELECT * 比較方便,但是會降低程序的可維護性。對table or view的改變,可能會引起錯誤或性能的改變。

因此,推薦在SELECT語句后面顯式指定字段列表。

Rule: SET Options

檢測stored procedures and triggers中如下SET語句的使用。

推薦如下選項設置為ON:

ANSI_NULLS ANSI_PADDING ANSI_WARNINGS ARITHABORT CONCAT_NULL_YIELDS_NULL QUOTED_IDENTIFIER

推薦如下選項設置為OFF:

NUMERIC_ROUNDABOUT

Rule: Temp Table Usage

檢測stored procedures and triggers中臨時表的使用。當創建臨時表時,需要創建CREATE INDEX,并且在使用完成后,需要釋放該臨時表。

因為臨時表會產生大量的磁盤IO操作,因此推薦采用TABLE變量替換臨時表的使用。

不過,由于并發執行的限制和統計信息的維護,當有大量的數據插入臨時表時,仍推薦采用臨時表。

Rule: TOP without ORDER BY

檢測stored procedures, functions, views and triggers中缺少ORDER BY的TOP語句。在使用TOP語句時,推薦指定排序條件。否則,產生的結果將于SQL執行計劃相關而導致異常的行為。

Rule: Use of Schema Qualified Tables/Views

檢測stored procedures, functions, views and triggers中引用tables and views時,擁護者owner是否指定。雖然在SQL Server中引用特定的對象時,可以不指定server, database and owner(schema),也就是說不用server_name.database_name.owner_name.***這么麻煩,但是SQL Server推薦當在stored procedure, function, view or trigger中引用table or view時,最好指定table or view的擁有者。

當SQL Server查詢未指定owner的table/view對象時,首先查詢缺省的owner,然后才是dbo。這樣,會導致SQL Server產品額外的運行成本。通過指定owner,可以改進SQL Server的性能。(第一次聽到這種說法)

4,參考文檔及相關資源

工具下載URL:

http://www.microsoft.com/downloads/details.aspx?FamilyId=B352EB1F-D3CA-44EE-893E-9E07339C1F22&displaylang=en

視頻下載URL:

http://www.microsoft.com/china/msdn/events/webcasts/shared/msdntv/episode.aspx?xml=/china/msdn/events/webcasts/msdntv/20040610sqlserverck/manifest.xml

標簽: Sql Server 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品日本一区二区不卡视频| 亚洲国产专区校园欧美| 国产成人精品一区二区三区在线| 日韩激情综合| 日韩av一区二区三区| 日本电影久久久| 国产精品高潮呻吟久久久久| 婷婷综合一区| 国产精品观看| 久久一级电影| 亚洲精品少妇| 麻豆精品视频在线观看视频| 国产suv精品一区| 免费久久精品| 亚洲精品看片| 欧美交a欧美精品喷水| 97成人在线| 日本在线高清| 免播放器亚洲一区| 麻豆91精品91久久久的内涵| 欧洲亚洲一区二区三区| 爽爽淫人综合网网站| 日韩综合小视频| 精品少妇一区| 美女日韩在线中文字幕| 欧美激情综合| 亚洲精品电影| 美女久久精品| 午夜欧美在线| 91精品在线免费视频| 日韩在线高清| 中文字幕日韩高清在线| 精品福利久久久| 日韩中文欧美在线| 精品久久一区| 亚洲三级视频| 亚洲国产专区| 国产欧美一区二区精品久久久 | 国产一二在线播放| 日韩一区二区免费看| 麻豆精品视频在线观看| 日韩精品1区2区3区| 久久裸体视频| 国产精品二区影院| 日韩专区一卡二卡| 超碰99在线| 中文视频一区| 欧美精品资源| 国产精品亚洲四区在线观看| 99综合视频| 久久亚洲人体| 免费在线观看不卡| 日韩欧美一区二区三区免费观看| 伊人www22综合色| 色婷婷精品视频| 国产精品videossex久久发布 | 国产成人久久精品麻豆二区| 综合激情视频| 激情久久五月| 成人精品久久| 欧美自拍一区| 亚洲精品激情| 国产精品三上| 99国产精品一区二区| 日韩高清一区| 免费中文字幕日韩欧美| 久久久天天操| 神马午夜在线视频| 麻豆精品在线视频| 日韩超碰人人爽人人做人人添| 99久久精品网站| 精品国产一区二区三区噜噜噜| 日韩中文字幕区一区有砖一区| 97在线精品| 国产不卡精品在线| 麻豆精品视频在线观看免费| 日韩精品一二区| 国产一在线精品一区在线观看| 久久中文在线| 日韩激情一区二区| 亚洲一区网站| aⅴ色国产欧美| 欧美精品羞羞答答| 久久久久99| 中文在线а√天堂| 精品视频黄色| 黄色网一区二区| 免费看一区二区三区| 国产欧美日韩精品高清二区综合区| 久久先锋影音| 亚洲欧美日本国产专区一区| 午夜久久影院| 美女久久网站| 亚洲精选久久| 蜜臀av一区二区在线免费观看| 136国产福利精品导航网址| 国产精品久久久久av电视剧| 午夜在线一区| 午夜天堂精品久久久久| 日本不卡中文字幕| 国产乱人伦丫前精品视频| 你懂的国产精品永久在线| 久久夜夜操妹子| 91精品国产福利在线观看麻豆| 美女国产精品久久久| 国产精品xxx| 精品国产18久久久久久二百| 日本激情一区| 欧美日韩一区二区综合| 激情欧美丁香| 亚洲欧美日韩国产一区| 亚洲人成精品久久久| 日本高清久久| 久久久久黄色| 一本大道色婷婷在线| 免费国产自久久久久三四区久久| 亚洲午夜一级| 久久亚洲电影| 国产欧美一区二区精品久久久| 国产美女久久| 成人亚洲一区| 欧美va天堂在线| 久久亚洲影院| 国产精品一区二区三区www| 国产精久久一区二区| 首页国产精品| 国产精品7m凸凹视频分类| 亚洲精品美女91| 国产精品v日韩精品v欧美精品网站| 久久国产精品美女| 日韩在线欧美| 亚洲精品在线国产| 福利在线一区| 影音国产精品| 亚洲午夜91| 久久人人99| 中文一区一区三区免费在线观 | 99视频精品免费观看| 亚洲神马久久| 国产精品视频一区二区三区综合 | 韩日一区二区三区| 亚洲精品黄色| 欧美sss在线视频| 婷婷久久免费视频| 麻豆视频在线观看免费网站黄| 欧美色图一区| 日韩三级久久| 色婷婷久久久| 日本精品在线播放| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 极品av在线| 合欧美一区二区三区| 国产精品亚洲一区二区在线观看| 久久超级碰碰| 九九综合在线| 国产精区一区二区| 亚洲国产专区校园欧美| 国产日韩一区二区三区在线 | 欧美一区二区性| 国产毛片精品久久| 一区三区视频| 国产精品久久久久久妇女| 不卡av一区二区| 国产精品第十页| 美女久久网站| 婷婷激情一区| 久久精品二区亚洲w码| 在线精品一区| 国产99久久| 久久青青视频| 国产精品一二| 中文字幕日韩亚洲| 午夜国产一区二区| 免费观看亚洲| 国产精品免费精品自在线观看| 免费观看不卡av| 在线看片福利| 欧美1区二区| 久久国产精品免费精品3p| 在线看片一区| 蜜桃成人av| 欧美日韩在线观看首页| 国产精品va| 国产日韩一区二区三区在线 | 免费精品一区| 日韩中出av| 黄色亚洲大片免费在线观看| 色偷偷色偷偷色偷偷在线视频| 欧美日韩xxxx| 免费在线看一区| 婷婷六月综合| 久久精品亚洲人成影院 | 99精品在线观看| 电影91久久久| 欧美精品三级在线| 日本综合视频| 日本一区二区中文字幕| 日韩精品一级二级| 一区二区日韩免费看| 视频一区二区三区中文字幕|