範文齋

數據庫讀書筆記

導語:讀書筆記是指讀書時爲了把自己的讀書心得記錄下來或爲了把文中的精彩部分整理出來而做的筆記。以下是數據庫讀書筆記的內容,希望你們喜歡!

數據庫讀書筆記

  數據庫讀書筆記

一.存儲優化

n 物化視圖——物化視圖是包括一個查詢結果的數據庫對象(可由系統定期刷新其中的數據),物化視圖不是在使用時纔讀取,而是預先計算並保存表連接或聚集等耗時較多的操作結果,這樣在查詢時大大提高讀取速度,特別適用於多個數據量較大的表進行連接操作及分佈式數據庫中需要進行分佈在多個站點的表進行連接操作時使用。

物化視圖可以進行遠程數據的本地複製,此時物化視圖的存儲也可以成爲快照。主要用於實施數據庫間的同步。

物化視圖對於數據庫客戶端的使用者來說如同一個實際表,具有和表相同的一般select操作,而其實際上是一個視圖,一個定期刷新的數據視圖。物化視圖的刷新可採用自動刷新和人工刷新兩種方式,具體刷新方式和刷新時間在定義物化視圖的時候可以定義。使用物化視圖可以實現視圖的所有功能,因物化視圖不是在使用時纔讀取,而大大提高了讀取速度,特別使用抽取大量數據表中某些信息以及分佈式環境中跨節點進行多表數據連接的場合。

n 聚集

二、查詢優化

在數據庫運行初期,數據庫對SQL語句各種寫法的性能優劣還不敏感,但是隨着數據庫正式使用,數據庫中的數據不斷增加,劣質SQL語句和好的SQL語句之間的速度差異就逐漸顯示出來。

n 合理使用索引

n 避免和簡化排序:通常在運行order by和group by 的SQL語句值,會涉及到排序操作,應當簡化成避免對大型表進行重複排序,因爲磁盤排序的開銷是很大的。與內存排序相比,磁盤排序操作很慢,從而會花費很長時間,降低數據庫性能,而且磁盤排序會消耗臨時表空間中的資源。

當能夠利用索引自動以適當的次序產生輸出時,優化器就可以避免不必要的排序步驟,以下是一些影響因素(1)由於現有索引的不足,導致排序時索引中不包括一個或幾個待排序的列;(2)group by或order by 子句中列的次序與索引的次序不一樣;(3)排序的列來源於不同的表。

爲了避免不必要的排序,就要正確建立索引,合理地合併數據表(儘管有時可能影響表的`規範化,但相對於效率的提高是值得的)。如果排序不可避免,那麼應當試圖簡化它,如縮小排序的範圍等。

n 消除對大型表數據的順序存取:嵌套查詢中,對錶的順序存取對查詢效率可能產生致命的影響。避免這種情況的主要方法就是對連接的列進行索引。還可以使用並集來避免順序存取,儘管在所有的檢查列上都有索引,但某些形式的where子句強迫優化器使用順序存取。

n 避免複雜的正則表達式——在使用正則表達式進行條件查詢時可能消耗較多的CPU資源進行字符匹配工作。

n 使用臨時表加速查詢——把表的一個子集進行排序並創建臨時表,有時候能加速查詢。它有助於多重排序操作,且在其他方面還能簡化優化器的工作。臨時表中行比主表中的行要少,而且順序就是所要的順序,減少了磁盤的I/O操作,所以查詢工作量可以得到大幅減少。

n 用排序來取代順序磁盤存取

n 不充分的連接條件——左(右)連接消耗的資源非常之多,因爲它們包含於null數據匹配。比內連接消耗更多的資源。

n 存儲過程——平時每次向數據庫發送SQL腳本,都需要先編譯後執行。

n 不要隨意使用遊標

n 事務處理

SQL server性能工具

一、SQL SERVERprofiler——監視SQL server 事件的工具,監視結果保存在跟蹤文件中。

二、數據庫引擎優化顧問:分析數據庫的工作負荷和物理架構。