Набор скриптов для знакомства с PostgreSQL

04.11.19

База данных - Администрирование СУБД

Немного скриптов для PostgreSQL, позволяющих познакомиться с состоянием сервера.

Снова за свое

В одной из прошлых статей был предложен небольшой набор скриптов для SQL Server, позволяющий оценить текущее состояние сервера, узнать какие базы на нем расположены и другую полезную информацию. Сегодня мы попытаемся сделать то же самое для PostgreSQL. Ведь все любят PostgreSQL, не так ли?

Информация будет полезна для администраторов и разработчиков, имеющих дело с хайповой СУБД, а также всем энтузиастам, желающих "пощупать" PostgreSQL. Мы пройдем примерно такой же путь, что проделывали для SQL Server, но с некоторыми существенными отличиями, ведь обе СУБД значительно отличаются в архитектуре и принципах функционирования.

Здесь Вы не найдете продвинутых скриптов, ведь это лишь для знакомство с новым серверов PostgreSQL. Но обо всем далее.

Это не руководство

Данный материал не является полным руководством, и уж тем более не охватывает все вопросы администрирования СУБД, мониторинга производительности и диагностики. Это лишь начальный набор скриптов, с помощью которого Вы сможете ознакомиться что вообще творится на Вашем сервере баз данных и определить дальнейшие шаги.

Все скрипты можно запускать с помощью терминального клиента psqlс помощью графической утилиты pgAdmin или же с помощью другого графического инструмента Azure Data Studio (поддержка PostgreSQL реализовано через расширение, не забудьте его установить). Это прямо "золотой век" инструментария для работы с базами данных!

Начнем с простых скриптов и постепенно перейдем к некоторым вопросам производительности.

Поехали!

Перейдем уже непосредственно к скриптам. Все они были проверены на PostgreSQL версии 10, но абсолютное большинство скриптов можно запускать и на более ранних версиях.

Первое знакомство

Как только Вы запустили свое клиентское приложение, то в первую очередь стоило бы узнать следующую информацию

 
 Базовая информация о сервере
 
 Время работы с момента запуска
 
 Количество активных соединений
 
 Просмотр конфигурации сервера

Общую информацию мы получили, пойдемте дальше.

О базах данных

Следующее, что следует изучить - это список баз данных и их размер.

 
 Список баз

Не думаю, что эта информация может быть полезна сама по себе. Теперь узнаем размер всех баз.

 
 Размер всех баз

На следующем шаге уже может потребоваться посмотреть почему эта база такая большая.

 
 Размер таблиц

Гиганты на сервере найдены, причины их размера почти понятны. Двигаемся дальше, рассмотрим, как у нас обстоят дела с индексами.

И снова индексы

Индексы являются одними из самых важных объектов любой базы данных, обеспечивающих производительность запросов и клиентских приложений для базы (в нашем случае это платформы 1С). Узнаем список индексов, который у нас есть.

 
 Список индексов

Список индексов - это хорошо, но нам нужно больше. Индексы нужны, но они могут и быть избыточными. Получим статистику использования индексов.

 
 Статистика использования индексов

Попробуем определить недостающие индексы.

 
 Таблицы с отсутствующими индексами

Также стоит держать под контролем показатели фрагментации индексов, или bloat ("раздутия") как это обычно еще называют в PostgreSQL.

 
 Информация о фрагментации (раздутии) индексов

На этом с индексами пока все. Давайте посмотрим на статистику.

Статистика в порядке?

Статистика является одним из самых важных показателей, который использует планировщик для построения эффективных планов запросов. Если статистика устареет, то запросы могут быть выполнены самым неоптимальным образом. В итоге вся информационная система может столкнуться с деградацией производительности.

 
 Информация о статистике

Теперь давайте поговорим о производительности.

Производительность

Тема производительности достаточно сложная и творческая, т.к. сильно зависит от инфраструктуры, настроек PostgreSQL, особенностей информационной системы и еще много чего. Нужен уникальный подход в сопровождении и качественный мониторинг. Сейчас же мы просто рассмотрим несколько скриптов, которые могут помочь в самом начале.

 
 Активные запросы

Теперь мы можем получить план запроса.

 
 Получение плана запроса

Может быть полезным получить информацию о выполняемых транзакциях.

 
 Информация о транзакциях

Можно проверить эффективность работы кэша.

 
 Использования кэша

И под конец попробуем получить длительные запросы.

 
 Длительные запросы

Вот и все, со скриптами пока все.

Любите ли Вы PostgreSQL?

Никаких готовых рецептов в статье нет, также как и нет информации о настройке операционной системы для оптимальной работы СУБД (не важно Windows это или *.nix) или настройке мониторинга. Лишь скрипты для получения общей информации.

Однако, теперь у Вас может появиться интерес и направление для изучения этой популярной и эффективной СУБД.

Есть чем дополнить? Добро пожаловать в комментарии!

Или есть интересные вопросы или опыт по PostgreSQL? Не стесняйтесь, пишите!

Другие ссылки

Другие полезные материалы

Авторские разработки

Вступайте в нашу телеграмм-группу Инфостарт

скрипты PostgreSQL PG Postgres диагностика анализ оптимизация администрирование базы данных

См. также

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

Сегодня мы проведем обзор изменений, касающихся работы с высоконагруженными системами 1С. Новый релиз предлагает не просто несколько точечных исправлений, а целый арсенал специализированных функций, призванных существенно ускорить выполнение типичных для 1С операций, снизить нагрузку на инфраструктуру и упростить администрирование. Спектр улучшений распространился на многие ключевые узлы производительности от оптимизации работы с временными таблицами и сложными запросами RLS (row-level security) до ускорения критически важных процессов наподобие «Закрытия месяца». Обо всем этом и пойдет речь в статье.

вчера в 13:30    371    Tantor    1    

5

Администрирование СУБД Системный администратор Бесплатно (free)

Расскажем об опыте внедрения технологии CoW (Copy-On-Write). Вы узнаете, как CoW помогает экономить терабайты дискового пространства с минимальными накладными расходами, а также как интегрировать ее в рабочие процессы разработки и тестирования. Автор кратко объяснит суть CoW, поделится выбором файловой системы (xfs или btrfs?), расскажет, как его команда управляет подтомами прямо из 1С и почему они выбрали MS SQL для Linux. Отдельно он разберет влияние CoW на CI-процессы: как это помогает анализировать длительные регрессы и ускоряет развертывание баз.

вчера в 12:10    276    Golovanoff    3    

5

Администрирование СУБД Linux Сервера Системный администратор Программист Бесплатно (free)

В современных Windows 10 и 11 можно использовать WSL (Windows Subsystem for Linux) для запуска Linux окружения. Возникает соблазнительная мысль: может, PostgreSQL и сервер 1С запустить в WSL. Или даже хуже: в Docker на WSL. Знал бы, что будет сложно - даже не начинал :) Сложность кроется в том, что WSL это не полноценные виртуалки, а легковестные контейнеры Hyper-V с особенностями сети и GUI. Из плюсов, наверно, только размер и скорость запуска.

21.07.2025    632    FSerg    2    

4

Администрирование СУБД Системный администратор Программист Бесплатно (free)

В статье подробно разберем, как в компании организован процесс миграции на PostgreSQL, начиная с подготовки команды, предварительного анализа 1С-систем (с использованием специальных чек-листов и инструментов для аудита) и заканчивая тонкой настройкой PostgreSQL. Расскажем о системе автоматизированного тестирования, которая позволяет сравнивать производительность на MS SQL и PostgreSQL без трудоемких ручных проверок. Особое внимание уделим проблемам, которые возникли при миграции систем объемом 20+ ТБ, и способам их решения. А также поразмышляем о том, что нужно было бы сделать по-другому, если бы этот проект пришлось начинать заново.

10.07.2025    914    leongl    0    

8

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

В финальной статье по докладу «Дамп – не приговор, а повод задуматься», с которым выступили на осенней конференции INFOSTART TECH EVENT 2024, рассказываем, чем может быть полезна информация, полученная из дампа.

27.05.2025    1812    it-expertise    0    

12

Администрирование СУБД Системный администратор 1С v8.3 Бесплатно (free)

Клиент-серверная архитектура 1С Предприятия 8.3 подразумевает работу в связке с так называемой системой управления базами данных (СУБД). Одной из самых распространённых и популярных до сих пор остается MS SQL Server.

19.05.2025    3530    Kostin1978    5    

4

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Рассмотрим, почему при обновлении итогов регистров накопления СУБД может выбирать неоптимальный план запроса, и как это исправить.

28.04.2025    2872    Tantor    7    

26

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

Во второй статье по докладу «Дамп – не приговор, а повод задуматься», с которым выступили на конференции INFOSTART TECH EVENT 2024, рассмотрим, какую информацию содержат файлы дампа, чем она полезна и как ее анализировать.

14.04.2025    1706    it-expertise    7    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 3vs 05.11.19 06:11 Сейчас в теме
Юрий, подскажите правильную на Ваш взгляд методологию обновления конфигураций, к примеру Бухгалтерия 3 и Зарплата 3.1, работающих на PostgreSQL.

Я делаю так - обновляю конфигурацию конфигуратором, запускаю базу, чтобы всё принялось и обновилось, потом закрываю базу и останавливаю сервер предприятия и запускаю pgAdmin3 и в нём последовательно делаю "Обслуживание", сначала VACUUM с включенными флажками "FULL" и "ANALYZE", вопрос, для чего нужен флажок "FREEZE" и нужно ли его включать? Потом делаю "ANALYZE", потом "REINDEX", потом закрываю pgAdmin3, запускаю сервер предприятия и отдаю в работу.
Это правильно, или надо обслуживать базу как-то по другому?

Ещё вопрос, в пункте "Обслуживание" есть ещё ключ "CLUSTER" зачем он нужен и надо ли его запускать, если сервер в одном числе и лице и как сервер базы данных и как сервер предприятия?
2. пользователь 05.11.19 07:10
(1) я бы не хотел касаться темы обслуживания, особенно здесь, в комментариях.

Тем более Ваши вопросы решаются чтением стандартной документации. Но пока сложилось впечатление, что Вы делайте это на всякий случай.
3. 3vs 05.11.19 07:25 Сейчас в теме
(2)Хотелось услышать мнение профессионалов в плане обслуживания баз 1С, работающих на PostgreSQL.
Но пока сложилось впечатление, что Вы делайте это на всякий случай.

Не, мнение сложилось правильное! :-)
Но, после этих телодвижений на старой железяке Бухгалтерия 3 заметно прибавляет в скорости работы!
4. 🅵🅾️🆇 526 05.11.19 22:52 Сейчас в теме
Здорово.
Попробуйте dBeaver или DataGrip

pgAdmin эт прям совсем ниачем.
5. пользователь 06.11.19 05:35
(4) Спасибо! А Azure Data Studio пробовали?
9. 🅵🅾️🆇 526 06.11.19 09:01 Сейчас в теме
(5) Неа.
Был опыт только с dBeaver и DataGrip.
dBeaver - бесплатен и умеет огромное количество различных СУБД.

DataGrip - платен, а также встроен в продукты JetBrains и поставляется отдельной софтиной.
Былоб довольно удобно, еслиб пользовался средами разработки наших соотечественников.


Остановился на dBeaver, не охото заморачиваться с кряками, функционала хватает за глаза, а также:
choco install dbeaver
YPermitin; Fox-trot; +2 Ответить
10. пользователь 06.11.19 09:10
(9) спасибо за развернутый ответ.

Попробую оба инструмента.
6. 3vs 06.11.19 05:43 Сейчас в теме
(4)У меня железо старое и PostgreSQL 9.4, pgAdmin хватает
для обслуживания.
Хотелось просто методологию правильного обновления базы 1С, работающей на PostgreSQL, чтобы производительность не снижалась.
YPermitin; +1 Ответить
7. 3vs 06.11.19 05:45 Сейчас в теме
(6)Извиняюсь, вопрос, видимо был Юрию, влез. :-)
8. 3vs 06.11.19 05:47 Сейчас в теме
Юрий, а может Вы дадите какую-нибудь статью по обслуживанию баз 1С,
работающих на PostgreSQL?
YPermitin; +1 Ответить
11. пользователь 06.11.19 09:26
(8) я бы просто начал отсюда: https://postgrespro.ru/docs/postgrespro/9.5/maintenance

Можно и отдельную публикацию сделать на этот счет. :)
letarch; 3vs; +2 Ответить
12. 3vs 06.11.19 10:42 Сейчас в теме
(11)Да, можно и оттуда! :-)
Хочется рекомендаций профессионалов по обслуживанию PostgreSQL именно в связке с 1С.
Можно ли обойтись просто встроенными в платформу 1С средствами проверки и исправления базы, или оптимальней отключить сервер предприятия, чтобы не мешал и запустить обслуживание PostgreSQL своими средствами PostgreSQL, этапы обслуживания в этом случае.
Архивы у меня делаются скриптом средствами PostgreSQL, но пишут, что не факт, что то, что выгрузилось в архив, корректно загрузится обратно.
Вопрос восстановления базы из архивной копии PostgreSQL тоже бы можно осветить, как лучше это делать, грохнуть старую базу и восстановить на новое место или можно восстанавливать из архива прямо в существующую базу, тьф-тьфу, пока всё работает, из архивов базу восстанавливать пока не приходилось.
Я, правда, ещё делаю контрольный выстрел - перед обновлением ещё базу и в DT выгружаю руками средствами конфигуратора.

Будет время и желание на этот счёт, черкните для крестьянских детей вроде меня статейку! :-)
15. letarch 06.11.19 15:35 Сейчас в теме
(11) да, было бы очень интересно почитать всем, а то сейчас никак не победим "тормоза" 1с в крохотной 70+Гб базе :-(
13. Gorus 48 06.11.19 11:48 Сейчас в теме
Дополню скриптами по управлению соединениями:

1. Закрытие всех активных подключений к базе DBName:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'DBName' AND pid <> pg_backend_pid();


2. Закрываем определенное соединение (pid берем из списка соединений):
SELECT pg_terminate_backend(pid);


3. Запрещаем новые соединения к базе DBName
UPDATE pg_database SET datallowconn = 'false' WHERE datname = 'DBName';


4. Разрешаем новые соединения к базе DBName
UPDATE pg_database SET datallowconn = 'true' WHERE datname = 'DBName';
3vs; YPermitin; +2 Ответить
14. пользователь 06.11.19 11:51
(13) спасибо!

Сохраню в свою коллекцию.
16. Xershi 1539 14.05.20 10:48 Сейчас в теме
(13) у меня похожим образом был 1 клиент. Делали ночную копию и базу для разработки.
На винде запускаю батник, который запускает скрипт на линуксе. 6-7 шагов.
Блочим соединения, выкидываем пользователей, делаем бекап рабочей базы в архив, копируем из архива в нашу базу, открываем доступ.
17. w.r. 653 15.05.20 20:05 Сейчас в теме
18. SanchoD 350 23.06.20 09:22 Сейчас в теме
Подскажите, где в PostgreSQL хранится таблица с основной конфигурацией и конфигурацией базы данных?
Так получилось, что база при обновлении рухнула. Хочу сделать по аналогии с MSSQL, но не нахожу такие таблицы.
Оставьте свое сообщение