SQL Server數據庫的整理優化的基本過程(一)

SQL Server 數據庫的整理優化的基本過程(一)

高建剛

作爲系統的重要一個部分,數據庫的性能在系統的運行過程中起到了非常關鍵的作用,系統的運行過程中,我們經常遇到客戶抱怨系統運行的太慢,統計一個月的報表經常會出現超時的情況,面對這些問題,我們應該如何處理哪?程序優化和數據庫優化要同步進行,程序方面應該從編寫的 T-SQL 語句、數據庫的訪問引擎、系統的架構設計等方面,當然了 WEB Form 的程序還要考慮到應用服務器以及 IIS 的問題等等,這是個系統架構師的問題,在此不多涉及。對我來說最關心的還是如何從數據庫方面來優化數據庫,下面就結合我個人的從業經驗對數據庫的優化做一個簡單的介紹。

首先,當我們面對一個數據庫時,我們應該從基礎慢慢的去整理,使之成爲一個基本正常運行的數據庫,這其中包含了很多的信息,由於一個系統的開發、實施、調試過程中都有可能會對數據庫的正常運行造成一定的影響,所以我們要從基礎着手,看看是否是正常運行的數據庫,即便這個數據庫是非常陌生的,我們也可以慢慢的去整理,以便達到初期的整理優化的效果。

查看是否所有的表都有主鍵。一個表沒有主鍵會造成各種各樣的問題,我們可以通過以下語句:

select NAME

from sysobjects T1

where xtype = 'U'

  AND objectproperty ( object_id ( T1. Name), 'IsUserTable' )= 1

  AND objectproperty ( object_id ( T1. Name), 'TableHasPrimaryKey' )= 0

ORDER BY [NAME]

通過上述語句的執行,我們會發現,數據庫中有哪些表沒有主鍵約束,對這些表,要進行分析,增加主鍵。

下一步,我們來看看聚集索引,相信很多人對於聚集索引造成的性能問題印象已經很深了,幾乎涉及到性能兩個字的時候,我們就會想到索引這個詞。通過下邊的語句我們可以找到那些表沒有聚集索引:

SELECT NAME

FROM sysobjects T1

WHERE xtype = 'U'

  AND objectproperty ( object_id ( T1. Name), 'IsUserTable' )= 1

  AND objectproperty ( object_id ( T1. Name), 'TableHasClustIndex' )= 1

ORDER BY [NAME]

缺少聚集索引的表,處理的時候要慎重,怎麼樣建立合適的聚集索引是需要仔細考慮的,有時候,聚集索引建立的不好,會導致索引碎片的頻繁增加,最重導致更加失敗的性能表現,所以要從應用、表結構、數據產生的順序等多方面考慮,然後再確定聚集索引的鍵值,維護好完成聚集索引後,通過實際應用來查看性能是否有所改善。

下一節中,我們將重點關注到索引的優化。

第二節 索引

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章