Анализатор для БД PostgreSQL.
Приложение можно использовать и как модуль Python и как утилиту командной строки; как для ручного сбора информации, так и в процессах непрерывной интеграции.

Утилита командной строки умеет выводить результаты анализа как в табличном виде, так и в виде JSON для упрощения последующей обработки.

Предоставляет информацию о:

  • Здоровье индексов (раздутость, дубли, неиспользуемость, пр.);
  • Таблицах без первичных ключей и индексов;
  • Самых медленных запросах.

SQL, используемые в инспекциях, доступны здесь.

Пример использования



Из кода:

    from pg_analyse.toolbox import Analyser, analyse_and_format

analyser = Analyser(dsn='user=test')

inspections = analyser.run()
inspection = inspections[0]

print(inspection.alias)
print(inspection.result)

# или то же, но одной строкой
out = analyse_and_format()

На заметку
Чтобы не указывать DSN подключения к PostgreSQL каждый раз, можно присвоить его переменной среды PG_ANALYSE_DSN. Если установлена envbox , то эту переменную можно положить в .env файл.


Из командной строки:

    ; Показать известные инспекции и их описния:
$ pg_analyse inspections

; Используем DSN из переменной окружения (см. подсказку выше),
; и выводим сложные значения (например, объём данных) в человекочитаемом виде:
$ pg_analyse run --human

; Запускаем только некоторые инспекции, переопределив некоторые параметры.
; При помощи ключевого слова "common" можно передать параметр сразу всем инспекциям.
$ pg_analyse run --one idx_unused --one idx_bloat --args "idx_bloat:schema=my,bloat_min=20;common:schema=my"

; Задаём DSN явно:
$ pg_analyse run --dsn "host=myhost.net port=6432 user=test password=xxx sslmode=verify-full sslrootcert=/home/my.pem"
; Локальное подключение к пользователем postgres и паролем:
$ pg_analyse run --dsn "host=127.0.0.1 user=postgres password=yourpass"

; Выводим результаты анализа в виде json (вместо табличного представления):
$ pg_analyse run --fmt json

Смотрите также:
* Анонс pg_analyse 0.2.2 — инспектируем PostgreSQL
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.