1、對后續用到的表建立索引(注意在插入資料之前建立或者在插入后建立但是要runstats)
說明:插入之前建立的話,在表插入資料的程序中,索引也隨著更新,這樣的話需要較大的日志空間,因此速度會比較慢,可以采用不計日志的方式插入;資料差完之后再建立索引的話,該表的日志統計資訊沒有更新,因此執行計劃會很差,用不到索引,runstats on tabble asiainfo.aaaa and indexes all之后,索引統計資訊就會更新,這樣執行計劃會考慮到使用索引,因此速度快。
2、將比較大的表建在多節點的表空間上,同時建好索引
說明:現有的db2資料倉庫每個節點使用2個CPU,4G記憶體,DIM表空間計劃是存放維表的表空間,因此是單節點的。在使用這個表空間的中的表的時候,最多只會用到2個CPU,4G記憶體,加上其他的表空間也都要用到這兩個CPU和這4G記憶體,因此資源比較有限。建議較大的表不要放在這個表空間中,而是建立好磁區鍵,放在多節點的表空間中,這樣檢索這個表的時候32個節點同時檢索,最后匯總到0節點上進行展現,速度當然會非常的快。另外,雖然32節點并行性好,但是如果建立好索引的話,速度會更快!!
3、將插入的表使用不計日志的方式插入
說明:資料庫為了保證資料的一致性和可回退性,插入、更新或者洗掉資料的時候要計日志,這樣在失敗的時候可以回退,但是如果并發較多或者操作非常大的話,會導致爭搶日志的情況,導致操作非常緩慢。如果使用不計日志的方式進行插入、更新或者洗掉操作的話,日志使用極少,但是如果操作失敗的話是無法回退的,這樣一致性得不到保證,這個表只能洗掉重建!!!!
4、將表建立表級鎖,減少鎖數量的使用
說明:資料庫的鎖的最大數量是有限制的,并且每個鎖都要占一定的記憶體,因此如果鎖的數量非常多,使用的記憶體也就多,導致資源緊張。
5、建立臨時表的時候盡量只插入用的到的資料,不插用不到的資料
說明:程式中好多地方為了提高速度,將用到的資料先插入到一個臨時表中,但是插入了非常多的沒有使用的資料,這樣導致臨時表也非常大,所以盡可能的只向臨時表中插入用的到的資料,并且盡可能的使用索引,可以大大的提高速度。
6、關于左關聯的一點
使用心得:在on的條件里面盡量的只寫關聯條件和對左關聯的表作限制,而對主表的限制不要寫在這里。如果寫在里面的話,不但速度非常慢,而且可能會出現莫名其妙的結果。
轉http://develop.csai.cn/dbms/200701051442391179.htm
uj5u.com熱心網友回復:
支持共享~~uj5u.com熱心網友回復:
good,頂uj5u.com熱心網友回復:
upuj5u.com熱心網友回復:
嘿咻嘿咻接分中uj5u.com熱心網友回復:
學習uj5u.com熱心網友回復:
就這啊!能做到嗎uj5u.com熱心網友回復:
upuj5u.com熱心網友回復:
鼓勵一下uj5u.com熱心網友回復:
侃侃uj5u.com熱心網友回復:
都是很好的建議! 值得學習uj5u.com熱心網友回復:
關注 接分uj5u.com熱心網友回復:
這個簡單啊,網上搜一下就得到答案了.uj5u.com熱心網友回復:
有個這樣的問題,不解之.建了一個空表,建了索引,然后往這個表插入11000條資料,
然后runstats on table ***.**** and indexes all;
結果執行計劃很糟糕,變成了全表掃描,runstats之前還是索引掃描的
有人知道是為什么么?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/110602.html
標籤:數據庫相關
