在一個大型的數據庫中,性能成為人們關注的焦點之一,如何讓數據庫高效有效的運行成為廣大數據庫管理人員和開發人員必須要考慮的問題。性能是一個應用或多個應用在相同的環境下運行時對效率的衡量。性能常用響應時間和工作效率來表示。響應時間是指完成一個任務花費的時間,可以從以下三方面來減少響應時間:
· 減少競爭和等待的次數,尤其是磁盤讀寫等待次數
· 利用更快的部件
· 減少利用資源所需的時間
絕大多數性能的獲得來自於優秀的數據庫設計、精確的查詢分析和適當的索引。最好性能的獲得能夠通過確立優秀的數據庫設計,在開發時學會使用SQL Server查詢優化器來實現。
為了取得更好的數據庫性能,我們就需要對數據庫進行優化,減少系統資源的競爭,如對數據cache,過程cache,系統資源和CPU的競爭。
在SQL Server中,有如下優化層次:
·應用層——大部分性能的獲得來自於對你的SQL應用中查詢的優化,這必須是以好的數據庫設計為基礎的。
·數據庫層——應用共享在數據庫層中的資源,這些資源包括硬盤,事務日志和數據cache。
·服務器層——在服務器層有許多共享的資源,包括數據高速緩存,過程高速緩存,鎖,CPU等。
·設備層——指的是存儲數據的磁盤及其控制器,在這一層,你應尤其關注磁盤的I/O。
·網絡層——指連接用戶和SQL Server的網絡。
·硬件層——指可利用的CPU。
·操作系統層——理想地,SQL Server是一台機器的唯一主要應用,它必須和操作系統以及其他sybase軟件,如Backup Server或SQL Server Monitor共享處理器、內存以及其他資源。
在大多數情況下面,我們是對應用層進行優化,,因為對應用性能的優化是大家最樂於接受的功能,其結果能被觀測及檢驗,查詢的性能是SQL應用的整個性能的一個關鍵。
應用層上的問題包括以下內容:
·決策支持VS.和在線事務處理(OLTP)需要不同的性能策略
·事務設計能夠減少並發,因為長的事務保持占用鎖,也就減少了其他用戶對相關數據的存取
·關聯一致性對數據修改需要join操作
·支持Select操作的索引增加了修改數據的時間
·為了安全而設立的審計限制了性能
在應用層優化的選項包括:
·遠程處理或復制處理能夠把決策支持從OLTP機器中分離出來
·利用存儲過程來減少編譯時間和網絡的利用
·利用最少量的鎖去滿足你的應用需要
數據庫層的問題包括:
·建立備份和恢復方案
·在設備上分布存儲數據
·審計操作影響性能;僅審計你所需的
·日常的維護活動將導致性能的降低和導致用戶不能操作數據庫表
在數據庫層上優化選擇包括:
·利用事務日志的閥值來自動轉儲事務日志防止其超出使用空間
·在數據段中用閥值來監視空間的使用
·利用分區來加速數據的裝入
·對象的定位以避免硬盤的競爭
·把重要表和索引放入cache中,保證隨時取得