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


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.