本文用幾點了說明DB數據庫優化需掌握幾條基本策略
對後續用到的表建立索引(注意在插入數據之前建立或者在插入後建立但是要runstats)
說明插入之前建立的話在表插入數據的過程中索引也隨著更新這樣的話需要較大的日志空間因此速度會比較慢可以采用不計日志的方式插入數據差完之後再建立索引的話該表的日志統計信息沒有更新因此執行計劃會很差用不到索引runstats on tabble asiainfoaaaa and indexes all之後索引統計信息就會更新這樣執行計劃會考慮到使用索引因此速度快
將比較大的表建在多節點的表空間上同時建好索引
說明現有的db數據倉庫每個節點使用個CPUG內存DIM表空間計劃是存放維表的表空間因此是單節點的在使用這個表空間的中的表的時候最多只會用到個CPUG內存加上其他的表空間也都要用到這兩個CPU和這G內存因此資源比較有限建議較大的表不要放在這個表空間中而是建立好分區鍵放在多節點的表空間中這樣檢索這個表的時候個節點同時檢索最後匯總到節點上進行展現速度當然會非常的快另外雖然節點並行性好但是如果建立好索引的話速度會更快
將插入的表使用不計日志的方式插入
說明數據庫為了保證數據的一致性和可回退性插入更新或者刪除數據的時候要計日志這樣在失敗的時候可以回退但是如果並發較多或者操作非常大的話會導致爭搶日志的情況導致操作非常緩慢如果使用不計日志的方式進行插入更新或者刪除操作的話日志使用極少但是如果操作失敗的話是無法回退的這樣一致性得不到保證這個表只能刪除重建!
將表建立表級鎖減少鎖數量的使用
說明數據庫的鎖的最大數量是有限制的並且每個鎖都要占一定的內存因此如果鎖的數量非常多使用的內存也就多導致資源緊張
建立臨時表的時候盡量只插入用的到的數據不插用不到的數據
說明程序中好多地方為了提高速度將用到的數據先插入到一個臨時表中但是插入了非常多的沒有使用的數據這樣導致臨時表也非常大所以盡可能的只向臨時表中插入用的到的數據並且盡可能的使用索引可以大大的提高速度
關於左關聯的一點使用心得
在on的條件裡面盡量的只寫關聯條件和對左關聯的表作限制而對主表的限制不要寫在這裡如果寫在裡面的話不但速度非常慢而且可能會出現莫名其妙的結果
From:http://tw.wingwit.com/Article/program/DB2/201311/21959.html