ну если patroni удаляет неактивный слот (я не помню так ли это) - то чем тут max_slot_wal_keep_size может помочь... Конечно не нужно учитывать слоты которые администратор удалил.
по второму скрину впрочем видно, что слот сохранён и wal'ы он удерживает как положено. Почему отстаёт реплика надо поинтересоваться у реплики, в первую очередь в логах
Сначала потребность (конкретные критерии, какие данные нужно искать достаточно часто и/или нужно искать быстро чтобы оправдать существование индекса) - потом индексы для решения этой потребности. Не наоборот.
Иметь одновременно btree(a), btree(b), btree(c) и btree(a,b,c) смысла нет. Среди них btree(a) будет избыточен. Одновременное существование btree(b), btree(c) и btree(a,b,c) может быть целесообразным.
Индекс может быть вообще не отсортирован никак. Например, hash. Если говорить именно о btree - тогда да, это отсортированная структура данных.
Планировщик анализирует не только where, а много чего. И много чего ещё, напротив, не анализирует, чтобы не тратить слишком много времени на создание возможных и выбор единственного плана выполнения.
btree(name, brand, price) может использоваться для поиска по условию name="user" так же как и btree(name). А вот btree(prand, name, price) уже эффективно использоваться не может.
Проверьте документацию к этой библиотеке, есть ли встроенный пул коннектов и как именно им нужно пользоваться.
нужно действительно использовать пул соединений. Плюс проверить конфигурацию пула на приложении, максимальное число соединений в пуле, конечно, не должно быть больше max_connections базы.
нужно либо выключить archive_mode либо указать archive_command в любую команду возвращающую true. /bin/true например. Включенный archive_mode при пустой archive_command это ошибка конфигурации, при которой база не будет удалять старые WAL вообще, предполагая что администратор исправит archive_command позже.
да, в pg_stat_activity walsender'ы тоже отображаются.
Planning Time - это время затраченное на работу планировщика, вся машинерия по генерации и выбора плана выполнения запроса, а не предполагаемое время работы запроса. Execution Time - выполнение запроса по выбранному плану. Время выполнения запроса это Planning Time + Execution Time + передача результата клиенту по сети (+ ещё пара неожиданных сюрпризов)
А кто сказал что сервис предназначен именно для землян?
ах, просто вероятностное допущение, тут обычно земляне пишут, а они известные шовинисты, не учитывают существование других обитателей вселенной.
Из-за латентности и дороговизны межпланетной связи, впрочем, партицировать пользователей скорей всего по-прежнему не очень разумно, скорей всего придёте к решению шардировать по региональному признаку. Как минимум одна копия сервиса на планету, а может даже и несколько в разных населённых регионах планеты.
password authentication failed for user точно говорит, что pg_hba выполняет парольную аутентификацию (plain text password, md5 или же scram). При неуспехе других методов аутентификации используются другие тексты ошибок.
Следовательно, проверяйте ваш пароль. Который вы задали для пользователя именно в базе, а не в системе.
по второму скрину впрочем видно, что слот сохранён и wal'ы он удерживает как положено. Почему отстаёт реплика надо поинтересоваться у реплики, в первую очередь в логах