У меня небольшой домашний сайт, на котором пользователи сделали уже столько данных, что есть таблицы по 2млн записей (а всего около 90 таблиц), и это всё за полгода. При разворачивании проекта у тостера, особо и не думал что так разрастётся, поэтому настройки Postgres брал стандартные.
Вроде сейчас никаких проблем, всё работает и без перебоев, но я впервые сталкиваюсь с такими объёмами, поэтому переживаю, что в один момент с базой что-то будет плохое. Тормозить там начнёт или типа того.
Скажите, если у вас достаточно опыта, что мне посоветуете делать? Я могу увеличить мощности сервера в два раза, это не проблема. Меня больше пугает, а как поведёт себя Postgres? Может с ним надо какие-то профилактические работы делать или типа того? Я читал что есть всякие вакуумы какие-то и анализаторы, но обычно так не углублялся и не знаю чего дальше-то?, может и нет проблемы, добавляй памяти, увелчивай жесткий и всё будет норм.
2 млн записей - это такие копейки.
Что-то делают обычно когда проект не влезает в описание "сейчас никаких проблем".
Что основное можно сделать:
покрутить настройки checkpointer (чтобы checkpoint срабатывал реже - резко меньше random i/o, но при крахе база может дольше стартовать), autovacuum (опустить оба scale_factor куда-нибудь в 0.05 - чтобы автовакуум запускался чаще, но делал меньше работы, плюс уменьшить autovacuum_vacuum_cost_delay - это зависит от дисков)
shared_buffers где-то в 25% от объёма RAM
включить pg_stat_statements и поглядывать топ запросов оттуда
Что-то делают обычно когда проект не влезает в описание "сейчас никаких проблем".
Я просто хочу заранее озадачиться вопросом, чем потом с бегать кругами.
2 млн записей - это такие копейки.
А если 20 млн это тоже копейки? Просто для меня это примерно через 1.5 года.
Что основное можно сделать:
покрутить настройки checkpointer (чтобы checkpoint срабатывал реже - резко меньше random i/o, но при крахе база может дольше стартовать), autovacuum (опустить оба scale_factor куда-нибудь в 0.05 - чтобы автовакуум запускался чаще, но делал меньше работы, плюс уменьшить autovacuum_vacuum_cost_delay - это зависит от дисков)
shared_buffers где-то в 25% от объёма RAM
включить pg_stat_statements и поглядывать топ запросов оттуда
Пока для меня это сложно (не понимаю что такое А, а что Б и зачем В), но вы дали хорошее направление. Спасибо за помощь!