針對大數據量場景下的查詢統計性能瓶頸,本文提供兩大實戰優化方案:回滾段重構優化大事務處理、叢集表技術加速關聯查詢。
針對大批量數據操作導致的回滾段不足、頻繁擴展帶來的性能抖動,採用統一大規格回滾段策略:
SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS
WHERE INITIAL_EXTENT < 512000 AND UPPER(OWNER) = 'PUBLIC';
ALTER ROLLBACK SEGMENT RB1 OFFLINE;
ALTER ROLLBACK SEGMENT RB2 OFFLINE;
ALTER ROLLBACK SEGMENT RB3 OFFLINE;
ALTER ROLLBACK SEGMENT RB4 OFFLINE;
ALTER ROLLBACK SEGMENT RB5 OFFLINE;
DROP ROLLBACK SEGMENT RB1;
DROP ROLLBACK SEGMENT RB2;
DROP ROLLBACK SEGMENT RB3;
DROP ROLLBACK SEGMENT RB4;
DROP ROLLBACK SEGMENT RB5;
CREATE PUBLIC ROLLBACK SEGMENT RB1 TABLESPACE ROLLBACK_DATA
STORAGE (INITIAL 512000 NEXT 512000 MAXEXTENTS 121);
CREATE PUBLIC ROLLBACK SEGMENT RB2 TABLESPACE ROLLBACK_DATA
STORAGE (INITIAL 512000 NEXT 512000 MAXEXTENTS 121);
CREATE PUBLIC ROLLBACK SEGMENT RB3 TABLESPACE ROLLBACK_DATA
STORAGE (INITIAL 512000 NEXT 512000 MAXEXTENTS 121);
CREATE PUBLIC ROLLBACK SEGMENT RB4 TABLESPACE ROLLBACK_DATA
STORAGE (INITIAL 512000 NEXT 512000 MAXEXTENTS 121);
CREATE PUBLIC ROLLBACK SEGMENT RB5 TABLESPACE ROLLBACK_DATA
STORAGE (INITIAL 512000 NEXT 512000 MAXEXTENTS 121);
ALTER ROLLBACK SEGMENT RB1 ONLINE;
ALTER ROLLBACK SEGMENT RB2 ONLINE;
ALTER ROLLBACK SEGMENT RB3 ONLINE;
ALTER ROLLBACK SEGMENT RB4 ONLINE;
ALTER ROLLBACK SEGMENT RB5 ONLINE;
COMMIT;
效果:消除回滾段動態擴展開銷,支撐長事務穩定運行,減少「Snapshot too old」錯誤發生率。
將高頻關聯的大表(如庫存表)放入叢集,物理存儲鄰近,減少 I/O 往返:
KCB = 'CREATE TABLE QC_KCB(
CKNM NUMBER(8),
QCNM NUMBER(10),
CKKC NUMBER(12,2),
...
) CLUSTER inventory_cluster (CKNM);'
配合叢集索引,同一倉庫的庫存記錄物理聚集,關聯查詢時單次讀取即可獲取相關數據塊,大幅降低邏輯讀與物理讀。
建議結合 AWR 報告定期評估回滾段爭用與叢集表訪問路徑,持續調優存儲參數與叢集鍵設計。