PostgreSQL - отрицательные индексы
Sep 20, 22Предыстория
В целом всё описание есть в вопросе на Хабр Q&A. Что-то ломает логику БД и в базу летит отрицательный индекс, который ломает всю логику программы дальше.
Выясняем, что к чему
Сначала выясняем, где у нас хранятся логи:
SHOW data_directory
Включим логирование запросов через БД (можно сделать через правку конфигурационного файла postgresql.conf, но для этого нам нужно будет дергать службу):
-- Включаем логирование
ALTER SYSTEM SET log_duration TO on
-- Включаем продолжительность выполнения всех команд
ALTER SYSTEM SET log_min_duration_statement TO 1
-- Пишем в отдельную директорию
ALTER SYSTEM SET log_directory = 'pg_log_mylogdir'
ALTER SYSTEM SET log_filename = 'mylogdir-%Y-%m-%d_%H%M%S.log'
Для применения параметров используем команду
pg_reload_conf()
-- Показать значения всех конфигурационных параметров с описаниями.
-- show all
Смотри в логи и видим, что в них индекс не участвует:
По другим логам было выяснено, что БД отклоняет запросы при превышении количества подключений к ней. Повысим с 100 до 200:
ALTER SYSTEM SET max_connections TO 200
А помогло это или нет - узнаем позже.