程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server性能優化綜述

SQL Server性能優化綜述

編輯:關於SqlServer

近期因工作需要,希望比較全面的總結下SQL Server數據庫性能優化相關的注意事項,在網上搜索了 一下,發現很多文章,有的都列出了上百條,但是仔細看發現,有很多似是而非或者過時(可能對SQL SERVER6.5以前的版本或者ORACLE是適用的)的信息,只好自己根據以前的經驗和測試結果進行總結了。

我始終認為,一個系統的性能的提高,不單單是試運行或者維護階段的性能調優的任務,也不單 單是開發階段的事情,而是在整個軟件生命周期都需要注意,進行有效工作才能達到的。所以我希望按照 軟件生命周期的不同階段來總結數據庫性能優化相關的注意事項。

一、分析階段

一般來說 ,在系統分析階段往往有太多需要關注的地方,系統各種功能性、可用性、可靠性、安全性需求往往吸引 了我們大部分的注意力,但是,我們必須注意,性能是很重要的非功能性需求,必須根據系統的特點確定 其實時性需求、響應時間的需求、硬件的配置等。最好能有各種需求的量化的指標。

另一方面, 在分析階段應該根據各種需求區分出系統的類型,大的方面,區分是OLTP(聯機事務處理系統)和OLAP(聯 機分析處理系統)。

二、設計階段

設計階段可以說是以後系統性能的關鍵階段,在這個階 段,有一個關系到以後幾乎所有性能調優的過程—數據庫設計。

在數據庫設計完成後,可以 進行初步的索引設計,好的索引設計可以指導編碼階段寫出高效率的代碼,為整個系統的性能打下良好的 基礎。

以下是性能要求設計階段需要注意的:

1、數據庫邏輯設計的規范化

數據庫 邏輯設計的規范化就是我們一般所說的范式,我們可以這樣來簡單理解范式:

第1規范:沒有重復 的組或多值的列,這是數據庫設計的最低要求。

第2規范: 每個非關鍵字段必須依賴於主關鍵字, 不能依賴於一個組合式主關鍵字的某些組成部分。消除部分依賴,大部分情況下,數據庫設計都應該達到 第二范式。

第3規范: 一個非關鍵字段不能依賴於另一個非關鍵字段。消除傳遞依賴,達到第三范 式應該是系統中大部分表的要求,除非一些特殊作用的表。

更高的范式要求這裡就不再作介紹了 ,個人認為,如果全部達到第二范式,大部分達到第三范式,系統會產生較少的列和較多的表,因而減少 了數據冗余,也利於性能的提高。

2、合理的冗余

完全按照規范化設計的系統幾乎是不可 能的,除非系統特別的小,在規范化設計後,有計劃地加入冗余是必要的。

冗余可以是冗余數據 庫、冗余表或者冗余字段,不同粒度的冗余可以起到不同的作用。

冗余可以是為了編程方便而增 加,也可以是為了性能的提高而增加。從性能角度來說,冗余數據庫可以分散數據庫壓力,冗余表可以分 散數據量大的表的並發壓力,也可以加快特殊查詢的速度,冗余字段可以有效減少數據庫表的連接,提高 效率。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved