Я работаю над дизайном проекта RoR для своей компании, и наша команда разработчиков уже столкнулась с небольшими спорами по поводу дизайна, особенно базы данных.
У нас есть модель, Message
которую необходимо сохранить. Это очень, очень маленькая модель с тремя столбцами db, кроме id, однако, когда мы перейдем к производству, вероятно, будет МНОГО этих моделей. Мы смотрим на 1000000 вставок в день. Поиск моделей будет осуществляться только по двум внешним ключам, которые можно индексировать. Кроме того, модели никогда не нужно удалять, но нам также не нужно сохранять их, когда им около трех месяцев.
Итак, нас интересует, не вызовет ли реализация этой таблицы в Postgres значительных проблем с производительностью? Есть ли у кого-нибудь опыт работы с очень большими базами данных SQL, чтобы сказать нам, будет ли это проблемой? И если да, то какую альтернативу нам выбрать?
источник
Ответы:
Количество строк в таблице само по себе не будет проблемой.
Грубо говоря, 1 миллион строк в день в течение 90 дней - это 90 миллионов строк. Я не вижу причин, по которым Постгрес не может с этим справиться, не зная всех деталей того, что вы делаете.
В зависимости от распределения данных вы можете использовать сочетание индексов, отфильтрованных индексов и какого-либо вида секционирования таблиц, чтобы ускорить процесс, как только вы увидите, какие проблемы с производительностью у вас могут быть, а какие нет. Ваша проблема будет такой же в любой другой СУБД, о которой я знаю. Если вам нужно всего 3 месяца на проектирование данных в процессе, чтобы удалить данные, вам больше не нужно. Таким образом у вас будет постоянный объем данных в таблице. Вам повезло, что вы знаете, сколько данных будет существовать, проверьте его на свой объем и посмотрите, что вы получите. Тестирование одной таблицы с 90 миллионами строк может быть очень простым:
https://wiki.postgresql.org/wiki/FAQ
источник
Другой способ значительно ускорить выполнение запросов к таблице с> 100 миллионами строк - кластеризация таблицы в нерабочее время по индексу, который чаще всего используется в ваших запросах. У нас есть таблица с> 218 миллионами строк, и мы обнаружили 30-кратное улучшение.
Кроме того, для очень большой таблицы рекомендуется создать индекс для ваших внешних ключей.
источник