Фрагментація таблиць у Oracle - Програмні продукти
Рекомендовано для:
|
Коли рядки не зберігаються поруч, або якщо рядки розбиті більше ніж один блок, знижується продуктивність, тому що ці рядки вимагають додаткового доступу до блоків.
Слід розуміти, що фрагментація таблиць відрізняється від файлової фрагментації. Коли серія операцій DML виконується над таблицею, таблиця фрагментується, тому що DML не звільняє вільний простір до HWM.
HWM – це індикатор використання блоків (USED BLOCKS) у базі даних. Блоки йдуть до лінії HWM - блоки, що використовуються, і містять дані. Ці дані можна видалити. Oracle знає які блоки до HWM не містять даних, він читає блоки вище за HWM, коли виконує повне сканування таблиці.
DDL пропозиція завжди скидає HWM.
Як знайти фрагментацію таблиці?
Розмір таблиці (з фрагментацією)
Підсумок = 72952 - 30604 = 42348 Kb використовується без користі.
Різниця між двома значеннями майже 60% і Pctfree 10% (за замовчуванням), в результаті, 50% простору не використовується і простоює, тому що не містить даних.
Як скинути HWM/прибрати фрагментацію?
Для цього потрібно буде реорганізувати фрагментовану таблицю.
Є чотири опції для реорганізації фрагментованих таблиць:
- alter table. move + rebuild indexes
- export / truncate / import
- create table as select (CTAS)
- dbms_redefinition
Опція 1 "alter table . move + rebuild indexes"
Опція: 2 "Create table as select"
Опція:3 "export/truncate/import"
Опція: 4 "dbms_redefinition"
Який із способів підходить вам, дивіться щодо ситуації.