Різниця між наповнювачем таблиці та показником заповнення


16

У Postgres можна встановити коефіцієнт заповнення для індексу, а також таблиці. Яка різниця? Як визначити значення для будь-якого. Що таке шафи використання?

Я намагаюся кластеризувати просторове відношення за просторовим індексом. Він має пару мільйонів записів. Записи оновлюються постійно, хоча дуже мало нових створюється щодня.

Випадок використання - це запити просторового діапазону. Що буде корисним для наповнювача та / або заповнювача індексу?

Відповіді:


12

На сторінці керівництва CREATE TABLE (наголос додано):

Типовий коефіцієнт заповнення таблиці становить відсоток від 10 до 100. За замовчуванням 100 (повна упаковка). Коли вказано менший коефіцієнт заповнення, операції INSERT пакують сторінки таблиці лише до вказаного відсотка; решта місця на кожній сторінці відведена для оновлення рядків на цій сторінці. Це дає можливість ОНОВЛЕННЯ розмістити оновлену копію рядка на тій же сторінці, що і оригіналу, що є більш ефективним, ніж розміщення її на іншій сторінці. Для таблиці, записи якої ніколи не оновлюються, повне упакування є найкращим вибором, але для сильно оновлених таблиць менші наповнювачі підходять.

На сторінці керівництва CREATE INDEX (наголос додано):

Коефіцієнт заповнення індексу - це відсоток, який визначає, наскільки повно метод індексу намагатиметься упакувати індексні сторінки. Для B-дерев листкові сторінки заповнюються до цього відсотка під час початкового складання індексу, а також при розширенні індексу праворуч (найбільші ключові значення). Якщо сторінки згодом повністю заповняться, вони будуть розбиті, що призводить до поступової деградації ефективності індексу.B-дерева використовують коефіцієнт заповнення за замовчуванням 90, але можна вибрати будь-яке значення від 10 до 100. Якщо таблиця статична, то fillfactor 100 найкраще мінімізувати фізичний розмір індексу, але для сильно оновлених таблиць менший заповнювач краще мінімізувати потребу в розбиттях сторінок. Інші методи індексів використовують fillfactor різними, але приблизно аналогічними способами; типовий коефіцієнт заповнення залежить від методів.


1
Зазвичай називати джерело цитати. Навіть якщо це легко зрозуміти.
— Ервін Брандстеттер

так, звичайно) забувай іноді ...

Вибачте, що ще більше молюю. Будь ласка, посилання на поточну версію посібника (якщо вам не потрібно звертатись до конкретної). Я редагував. Більше про це тут .
— Ервін Брандстеттер

Посилання зворотні.
— Дейв Йохансен

2
Re: "Якщо таблиця статична, то fillfactor 100 найкраще мінімізувати фізичний розмір індексу, але для сильно оновлених таблиць менший fillfactor краще мінімізувати потребу в розбиттях сторінок." Намагаючись зрозуміти контекст "сильно оновлених таблиць" - це означає таблицю зі значеннями рядків, які сильно оновлюються, чи, можливо, це може включати також таблиці з рядками, які часто вставляються та / або видаляються? Мені хотілося дізнатись, чи може моя таблиця з кількома змінами значень рядків, але великими вставками та видаленнями може отримати користь від нижчого заповнювача на її основний (ключовий) індекс.
— Рейнсбрайн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.