1. 有什么樣的方法來判斷一個資料庫庫表是否需要來做統計更新呢?
2. 如何來檢測統計更新的效果?
3.統計更新的方法是什么:analyze table 表名 compute statistics;
還是:EXEC dbms_stats.gather_table_stats('用戶名',‘表名’),這兩種方法有區別嗎?
如何檢測兩者的效果
uj5u.com熱心網友回復:
1,系統一般會自動更新統計資訊。除非有大量頻繁的刪改操作,統計資訊會有出錯或延時。2,可以看下all_tables下面的資料量和實際的資料量是否有差距。當然還有別的方式,待大神回復
3,更新的方式這兩者沒什么差距,只是一個是老版本一個是新版本的,機制應該差不多。
uj5u.com熱心網友回復:
1、判斷是否需要再次收集統計資訊很難,因為統計資訊是否合理,要看最終sql執行的性能如何,說難聽點,如果從始至終sql性能都可以接受,那么不收集統計資訊,或者收集一次統計資訊,甚至鎖定統計資訊都無所謂。這個最好要先定一個粗獷的頻率,然后由一線的運維來細化更好;2、更新的效果指的是什么?是是否更新?還是更新是否正確?不同的統計資訊存放在不同的資料字典里,包括user_tables、user_tab_partitions、user_tab_subpartitions、user_indexes、user_tab_col_statistics等等,對于表,最簡單暴力看它統計資訊是否在最近被更新,可以查看user_tables.last_analyzed欄位,這個代表最近一次收集統計資訊的時間;
3、建議使用dbms包來收集統計資訊,因為至少可以并行,對于磁區表的統計資訊收集也更準確(可以指定更細粒度的磁區層級)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/22890.html
標籤:開發
上一篇:oracle問題
