首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 數據庫性能持久優化四大支柱:分區表、索引重建、段碎片整理、自由區合併

     編輯:MySQL 資料庫相關知識

一、分區表

  • 動機:大數據庫中少數表佔用多數空間;分區將記錄物理分離到不同表空間,便於維護、備份、恢復、查詢裁剪。
  • 範圍分區建表示例:
    CREATE TABLE Employee (
      EmpNo VARCHAR2(10) PRIMARY KEY,
      Name VARCHAR2(30),
      DeptNo NUMBER(2)
    )
    PARTITION BY RANGE (DeptNo) (
      PARTITION PART1 VALUES LESS THAN (11) TABLESPACE PART1_TS,
      PARTITION PART2 VALUES LESS THAN (21) TABLESPACE PART2_TS,
      PARTITION PART3 VALUES LESS THAN (31) TABLESPACE PART3_TS,
      PARTITION PART4 VALUES LESS THAN (MAXVALUE) TABLESPACE PART4_TS
    );
  • 局部索引:索引分區與表分區一一對應,管理最簡單;全局索引僅用於跨分區唯一性約束。
  • 分區管理:ALTER TABLE 支援 ADD/DROP/EXCHANGE/MOVE/MODIFY/RENAME/SPLIT/TRUNCATE 分區。

二、索引重建

  • 現象:頻繁 DELETE/INSERT 導致索引空間膨脹,刪除記錄的索引條目空間無法復用。
  • 對策:定期 ALTER INDEX idx REBUILD 回收空間,提高空間利用率。
  • 自動化:編寫批處理腳本,業務閒時運行,避免衝突。

三、段碎片整理

  • 原理:段由多個非連續區組成;區滿則分配新區,導致碎片化。碎片過多影響性能並引發表空間管理問題。
  • 監控:查詢 DBA_SEGMENTS 找出區數 ≥ 10 的段。
  • 解決:
    1. 建新表(正確存儲參數)→ 導入數據 → 刪舊表。
    2. EXP/IMP 配合 COMPRESS=Y 重組存儲參數。

四、自由區碎片合併

  • 現象:段釋放後形成自由區,相鄰自由區不自動合併(除非 pctincrease != 0 觸發 SMON 合併)。
  • 危害:大空間請求失敗,導致「表空間不足」誤報。
  • 手動合併:ALTER TABLESPACE ts COALESCE; 強制合併相鄰自由區。
  • 理想狀態:每對象單區、所有自由空間聚合為一大連續區,最大化空間分配成功率。

總結

持久優化需建立常態化機制:分區設計前置化、索引重建排程化、段/自由區碎片監控報警化、存儲參數科學化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved