NOT LOGGED INITIALLY 或 LOAD NONRECOVERABLE 降低日誌量。RUNSTATS ON TABLE schema.tab AND INDEXES ALL 更新統計,否則優化器不使用索引。| 模式 | 日誌量 | 速度 | 風險 | 適用 |
|---|---|---|---|---|
| 完全記錄 | 大 | 慢 | 可回滾/前滾 | 核心 OLTP |
| NOT LOGGED INITIALLY | 極少 | 極快 | 失敗表報廢,需重建 | 資料倉庫載入、暫存表 |
| LOAD NONRECOVERABLE | 無 | 最快 | 不可前滾,載入後必須備份 | TB 級初始化 |
LOCKLIST、MAXLOCKS 控制,行級鎖易耗盡 → 鎖升級 → 並發崩潰。LOCK TABLE tab IN EXCLUSIVE MODE 或 SHARE MODE 將數萬行鎖縮減為 1 把表鎖。INSERT INTO temp SELECT * FROM big_table → 臨時表膨脹 10 倍。DECLARE GLOBAL TEMPORARY TABLE session.temp AS (SELECT id, name, dept FROM big WHERE status='A') DEFINITION ONLY → 僅投影必要欄位。CREATE INDEX session.ix_temp_dept ON session.temp(dept))。DECLARE GLOBAL TEMPORARY TABLE)自動隔離會話、提交/斷開自動清理。SELECT a.*, b.col
FROM main a
LEFT JOIN sub b ON a.id = b.id AND a.status='ACTIVE' -- ❌
WHERE b.type='X';
後果:語意錯誤、優化器誤判、無法利用主表索引。
SELECT a.*, b.col
FROM main a
LEFT JOIN sub b ON a.id = b.id AND b.type='X' -- ✅
WHERE a.status='ACTIVE'; -- ✅