本文介紹了統計資訊採集的三種策略和採集建議。
SQL查詢執行計畫的好壞對資料庫效能有重要的影響,為了給最佳化器CBO提供準確的統計資訊用於產生更優的執行計畫,PolarDB-X會在後台發起統計資訊採集任務。
統計資訊採集說明
PolarDB-X包括以下三種採集策略:
名稱 | 採集頻率 | 採集SQL特徵 | 參數控制 |
Auto analyze | 每周一次,預設02:00-05:00 |
| ENABLE_BACKGROUND_STATISTIC_COLLECTION |
information_schema查詢 | 每天一次,預設02:00-05:00 | SELECT table_schema, table_name, table_rows FROM information_schema.tables WHERE table_schema IN (xxx,xxx,xxx....) AND table_name IN (yyy,yyy,yyy...) | 不涉及 |
即時反饋採集 | 資料量更新(insert或delete)超過上次記錄表資料行20%的時候觸發。 | 同Auto analyze一致 | 不涉及 |
注意事項
在表資料量比較大的情況下,儲存節點可能由於執行統計資訊採集任務,在淩晨出現IOPS增高的情況。
在非淩晨時間出現IOPS升高,有可能是以下兩種情況:
表資料量過大,導致統計資訊採集任務針對單個邏輯表採集時間過長,任務從淩晨運行至非淩晨時間。
資料發生劇烈變化的情境,常見於資料匯入過長,會觸發即時的統計資訊採集。
建議
如果不希望在淩晨執行採集,可以在控制台參數設定頁面,將ENABLE_BACKGROUND_STATISTIC_COLLECTION參數的值設定為False,關閉後台定時採集任務與即時採集任務。任務關閉後,建議定期通過手動執行
analyze table [table_name];
語句,在業務可以接受的時間進行統計資訊採集。如果希望立即停止採集任務,請執行以下步驟:
執行
show full physical_processlist where info like '%rand%';
,查看儲存節點正在執行的SQL語句;通過kill語句關閉對應的採集SQL。例如
kill '0-0-222';
,'0-0-222'含義為0號儲存節點,0號分庫上的ID為222的查詢語句。