Як визначити вартість / вигоду додавання індексу?


10

За словами Крейга Рінгера :

Хоча, як правило, добре створити індекс на (або включати) стовпці сторонніх ключів на стороні референції, це не потрібно. Кожен доданий вами індекс трохи уповільнює операції DML, тому ви платите за ефективність кожного INSERT, UPDATEабо DELETE. Якщо індекс використовується рідко, можливо, його не варто мати.

Як визначити, чи перевага додавання індексу перевищує його вартість?

Чи проводите випробування блоку до / після додавання індексу та перевіряєте на загальне підвищення продуктивності? Або є кращий спосіб?


pg_stat_user_indexesдопомагає вам в цьому, показуючи інформацію про використання індексу. Щоб оцінити витрати на обслуговування, ви можете ознайомитись із активністю запису вашої таблиці, pg_stat_user_tablesале через HOT, не всі оновлення обов'язково повинні торкатися індексу, щоб ви могли трохи завищити.
Крейг Рінгер

@CraigRinger, це дуже корисно. Дякую!
Гілі

Я майже виключно покладаюся на pgBadger. І моя кишка.
Colin 't Hart

Відповіді:


4

Використання індексу залежить від структури ваших даних та вибірковості ваших даних. Якщо ви запитуєте, що ви не користуєтесь ними, вони дорогі. Якщо ви їх ефективно використовуєте, вони - чудовий інструмент. Існує планувальник запитів і аналітика планувальника запитів ( EXPLAIN) просто планування або планування та виконання команд ( EXPLAIN ANALYZE).

І є чудова книга в Інтернеті: користуйтеся індексом щодо рекомендованого використання індексів


4
Правило великих пальців добре, але в цьому випадку занадто загальне. Я шукаю конкретний інструмент / вимірювання, яке запропонує додати / видалити індекси на основі фактичної поведінки часу мого застосування.
Гілі

Може бути , це інструмент , який Ви шукаєте: enterprisedb.com/products-services-training/products / ...
Младен Узелау

1

Виберіть великі правила та дотримуйтесь їх. Наприклад, я завжди створюю індекс на стороні посилання іноземного ключа.

Переконайтесь, що ви перевіряєте продуктивність на відповідність критеріям продуктивності залежно від потреб користувача. Наприклад, системі необхідно обробляти вхідне навантаження 100 запитів POST типу X в хвилину.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.