本文為大家分享了數據庫優化方案,供大家參考,具體內容如下
1. 利用表分區
分區將數據在物理上分隔開,不同分區的數據可以制定保存在處於不同磁盤上的數據文件裡。這樣,當對這個表進行查詢時,只需要在表分區中進行掃描,而不必進行全表掃描,明顯縮短了查詢時間,另外處於不同磁盤的分區也將對這個表的數據傳輸分散在不同的磁盤I/O,一個精心設置的分區可以將數據傳輸對磁盤I/O競爭均勻地分散開。對數據量大的時時表可采取此方法。可按月自動建表分區。
2. 別名的使用
別名是大型數據庫的應用技巧,就是表名、列名在查詢中以一個字母為別名,查詢速度要比建連接表快1.5倍。
3. 索引Index的優化設計
索引可以大大加快數據庫的查詢速度。但是並不是所有的表都需要建立索引,只針對大數據量的表建立索引就好。
缺點:
1.創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加。
2.索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。
3.當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。
索引需要維護:為了維護系統性能,索引在創建之後,由於頻繁地對數據進行增加、刪除、修改等操作使得索引頁發生碎塊,因此,必須對索引進行維護。
4. 物化視圖(索引視圖)
一般的視圖是虛擬的,而物化視圖是實實在在的數據區域,是要占據存儲空間的,另外系統刷新物化視圖也需要耗費一定的資源,但是它卻換來了效率和靈活性。
索引視圖更適合在OLAP(讀取較多,更新較少)的數據庫中使用,不適合在OLTP(記錄即時的增、刪、改、查)的數據庫中使用 。
物化視圖的注意事項:
1.對於復雜而高消耗的查詢,如果使用頻繁,應建成物化視圖。
2.物化視圖是一種典型的以空間換時間的性能優化方式。
3.對於更新頻繁的表慎用物化視圖。
4.選擇合適的刷新方式。
普通視圖和物化視圖的區別:
普通視圖和物化視圖根本就不是一個東西,普通視圖是不存儲任何數據的,在查詢中是轉換為對應定義的SQL去查詢,而物化視圖是將數據轉換為一個表,實際存儲著數據,這樣查詢數據,就不用關聯一大堆表,如果表很大的話,會在臨時表空間內做大量的操作。
普通視圖的三個特征:
1).簡化設計,方便,清晰編碼。視圖並不是提高性能的,它的存在只會降低性能(例如我們關聯兩個視圖,一個視圖關聯6個表,另一個視圖關聯7個表)。
2).安全,在授權給其他用戶或者查看角度,多個表關聯只允許查看,不允許修改。
3.從不同的角度看不同的維度,視圖可以劃分維度和權限,並使多個維度的綜合,也就是你要什麼就可以從不同的角度看,而表是一個實體的而已,一般維度較少。
5. 死鎖與阻塞
1).對於需要頻繁更新的數據,盡量避免放在長事務中,以免導致連鎖反應。
2).不是迫不得已,最好不要在數據庫鎖機制外再加自己設計的鎖。
3).減少事務大小,及時提交事務。
4).盡量避免跨數據庫的分布式事務,因為環境的復雜性,很容易導致阻塞。
5).慎用位圖索引,更新時容易導致死鎖。
6.減少IO與網絡傳輸次數
1).盡量用較少的數據庫請求,獲取到需要的數據,能一次性取出的不分多次取出。
2).對於頻繁操作數據庫的批量操作,應采用存儲過程,減少不必要的網絡傳輸。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持幫客之家。