Фрагментація таблиць у Oracle - Програмні продукти

Рекомендовано для:
  • Oracle Database 9i R1
  • Oracle Database 9i R2
  • Oracle Database 10g R1
  • Oracle Database 10g R2
  • Oracle Database 11g R1

Коли рядки не зберігаються поруч, або якщо рядки розбиті більше ніж один блок, знижується продуктивність, тому що ці рядки вимагають додаткового доступу до блоків.

Слід розуміти, що фрагментація таблиць відрізняється від файлової фрагментації. Коли серія операцій DML виконується над таблицею, таблиця фрагментується, тому що DML не звільняє вільний простір до HWM.

HWM – це індикатор використання блоків (USED BLOCKS) у базі даних. Блоки йдуть до лінії HWM - блоки, що використовуються, і містять дані. Ці дані можна видалити. Oracle знає які блоки до HWM не містять даних, він читає блоки вище за HWM, коли виконує повне сканування таблиці.

DDL пропозиція завжди скидає HWM.

Як знайти фрагментацію таблиці?

Розмір таблиці (з фрагментацією)

Підсумок = 72952 - 30604 = 42348 Kb використовується без користі.

Різниця між двома значеннями майже 60% і Pctfree 10% (за замовчуванням), в результаті, 50% простору не використовується і простоює, тому що не містить даних.

Як скинути HWM/прибрати фрагментацію?

Для цього потрібно буде реорганізувати фрагментовану таблицю.

Є чотири опції для реорганізації фрагментованих таблиць:

  1. alter table. move + rebuild indexes
  2. export / truncate / import
  3. create table as select (CTAS)
  4. dbms_redefinition

Опція 1 "alter table . move + rebuild indexes"

Опція: 2 "Create table as select"

Опція:3 "export/truncate/import"

Опція: 4 "dbms_redefinition"

Який із способів підходить вам, дивіться щодо ситуації.