Сначала отличите медленное выполнение от ожидания блокировки или соединения. Затем сравните план, фактические строки, I/O и статистику с периодом нормальной работы.
User_id участвует в поиске, а name хранится как дополнительная полезная нагрузка. Это создаёт возможность index-only scan, но не гарантирует его для каждого выполнения.
По одной цифре 100 тысяч insert/sec выбрать БД нельзя. Нужны размер записи, профиль чтения, индексы, требования к транзакциям, допустимая потеря данных и целевая p99 latency.
Индекс по status помогает отбору, но не обязательно устраняет сортировку. Кандидат — составной индекс (status, created_at DESC), позволяющий читать подходящие строки в нужном порядке.
Да, Kafka poll-loop можно отделить от workers обычными средствами Java: ограниченной очередью и передачей результатов обратно. Отсутствие Spring и БД не отменяет правил offsets, rebalance и повторной доставки.
Передавайте конфигурацию при запуске: через environment variables, смонтированный конфигурационный файл или secret manager. Образ должен оставаться одинаковым для разных окружений и не содержать пароль БД.
Назовите измеренную конкуренцию и объясните, какой ресурс PostgreSQL упирался в предел: CPU, I/O, locks, connections или длительные транзакции. Одно число запросов без их стоимости мало что говорит.
Нужно описать фактический путь подключения: приложение, JDBC/DataSource и пул, затем PostgreSQL напрямую либо через proxy/pooler. Пул внутри приложения не обязательно является отдельным промежуточным сервисом.
PostgreSQL принимает четыре стандартных названия, но READ UNCOMMITTED работает как READ COMMITTED, поэтому различных режимов три. MVCC хранит версии строк и определяет их видимость через snapshots.
Нужно отфильтровать завершённые заказы за согласованный интервал, сгруппировать по user_id и отсортировать SUM(amount) по убыванию. «Последний месяц» важно уточнить: календарный или скользящий.
Партиционирование PostgreSQL делит логическую таблицу на физические части по диапазону, списку значений или хешу. Это помогает обслуживанию больших данных и чтению подходящих partition.
Селективность связана с долей строк, подходящих под условие. Индекс по boolean может быть полезен при редком значении, но часто бесполезен при выборе большой части таблицы.