Чи є якесь (бажано з відкритим кодом) програмне забезпечення, ніж можна аналізувати PostgreSQL EXPLAIN, і рекомендувати необхідні показники, які пришвидшили б запит?
Чи є якесь (бажано з відкритим кодом) програмне забезпечення, ніж можна аналізувати PostgreSQL EXPLAIN, і рекомендувати необхідні показники, які пришвидшили б запит?
Відповіді:
Я буквально щойно це знайшов пару хвилин тому: http://explain.depesz.com/ . Ви вставляєте результати свого ПОЯСНЕНОГО АНАЛІЗУ, і це показує, де можуть виникнути проблеми (це навіть кольорове кодування).
З розділу довідки ...
objas.depesz.com - це інструмент для пошуку реальної причини для повільних запитів. Як правило, можна використовувати запит EXPLAIN ANALYZE; і читати вихід. Проблема полягає в тому, що не всі частини виводу ким-небудь легко зрозумілі, і не завжди очевидно, чи вузол, який виконується за 17.3 мс, швидший або повільніший, ніж той, який працює в 100 мс - враховуючи той факт, що перша виконується 7 разів. Щоб скористатися сайтом, просто перейдіть на його першу сторінку і вставте там пояснення аналізу результатів з вашого psql. Цей результат може виглядати приблизно так. Після завантаження ви перейдете на сторінку, на якій зображено проаналізовану, і непогано (ну, принаймні приємно для мене :) розфарбована, щоб зробити акцент на важливих частинах. Це могло виглядати приблизно так. Бічна примітка: URL-адреса для кольорового виводу зберігається, тож ви можете просто використовувати його, щоб показати це іншим - наприклад - для тих приємних хлопців на каналі irc #postgresql на freenode. Цей графік використовує 4 кольори для позначення важливих речей: білий фон - все добре на жовтому тлі - даний вузол турбує коричневий фон - даний вузол хвилює більше червоний фон - даний вузол дуже хвилює, який колір використовується, обирається залежно від режиму ви будете використовувати: "Ексклюзив", "Включно" або "Рядки X".
Я не знаю жодного інструменту для Postgres, який би це робив алгоритмічно, і, на мою думку, людський мозок (а часто і трохи експериментів у середовищі розробників) є насправді єдиним підходящим інструментом тут. Задіяно безліч факторів, зокрема, чи планувальник запитів навіть вважатиме, що ваш індекс вартий використання - те, що визначається тим, як ваша установка налаштувала налаштування планувальника запитів та розмір / статистику в зайнятій таблиці ( з).
Найкраща рекомендація, яку я можу зробити, - це зробити EXPLAIN ANALYZE
( ANALYZE
важливо - це дасть вам час запитів і підрядників), подивіться самі на результати та атакуйте найбільше число, яке ви бачите першим. Ви, ймовірно, можете написати аналізатор, щоб розбити вихід EXPLAIN (особливо в 9.0 з виходом JSON), але я не знаю, хто ще вирішив це (це в основному те, що роблять оптимізатори для MS-SQL ...)
Нічого виробничого класу, але для допитливих, існує / був дослідницький проект, щоб реалізувати щось подібне. Шукайте "Радника з індексу PostgreSQL".