Подтвердить что ты не робот

Насколько большой размер для таблицы PostgreSQL?

Я работаю над проектом для проекта RoR для своей компании, и наша команда разработчиков уже столкнулась с дебатами о дизайне, в частности с базой данных.

У нас есть модель под названием Message, которая должна сохраняться. Это очень, очень маленькая модель с тремя столбцами db, отличными от id, однако, когда мы пойдем на производство, скорее всего будет много этих моделей. Мы смотрим целых 1 000 000 вставок в день. Модели будут только когда-либо искать два внешних ключа на них, которые могут быть проиндексированы. Кроме того, модели никогда не должны удаляться, но нам также не нужно сохранять их, когда им будет около трех месяцев.

Итак, что нам интересно, если реализация этой таблицы в Postgres представит значительную проблему с производительностью? Кто-нибудь имеет опыт работы с очень большими базами данных SQL, чтобы рассказать нам, будет ли это проблемой? И если да, с какой альтернативой мы должны пойти?

4b9b3361

Ответ 1

Количество строк в таблице само по себе не будет проблемой.

Таким образом, грубо говоря, 1 миллион строк в день в течение 90 дней - это 90 миллионов строк. Я не вижу причин, по которым Postgres не может справиться с этим, не зная всех деталей того, что вы делаете.

В зависимости от вашего распределения данных вы можете использовать комбинацию индексов, отфильтрованных индексов и секционирования таблиц, чтобы ускорить процесс, когда вы увидите, какие проблемы с производительностью могут возникнуть, а какие нет. Ваша проблема будет такой же на любой другой RDMS, о которой я знаю. Если вам нужно всего лишь 3 месяца проектирования данных, чтобы удалить данные, которые вам больше не нужны. Таким образом, вы будете иметь постоянный объем данных на столе. Вам повезло, вы знаете, сколько данных будет существовать, проверьте их на свой объем и посмотрите, что вы получите. Тестирование одной таблицы с 90 миллионами строк может быть так же просто, как:

select x,1 as c2,2 as c3
from generate_series(1,90000000) x;

https://wiki.postgresql.org/wiki/FAQ

Limit   Value
Maximum Database Size       Unlimited
Maximum Table Size          32 TB
Maximum Row Size            1.6 TB
Maximum Field Size          1 GB
Maximum Rows per Table      Unlimited
Maximum Columns per Table   250 - 1600 depending on column types
Maximum Indexes per Table   Unlimited

Ответ 2

Другой способ значительно ускорить ваши запросы к таблице с> 100 миллионами строк - это кластеризация в нерабочее время таблицы по индексу, который чаще всего используется в ваших запросах. У нас есть таблица с> 218 миллионами строк, и мы нашли 30-кратное улучшение.

Кроме того, для очень большой таблицы неплохо было бы создать индекс для ваших внешних ключей.