PostgreSQL: Какое максимальное количество таблиц может хранить в базе данных postgreSQL?

Q1: Какое максимальное количество таблиц может хранить в базе данных?

Q2: Какое максимальное количество таблиц может объединиться?

Ответ 1

Q1: нет явного ограничения в документах. На практике некоторые операции - это O (n) для числа таблиц; ожидают увеличения времени планирования и проблем с такими вещами, как autovacuum, поскольку вы получаете в тысячах или десятках тысяч таблиц в базе данных.

Q2: Это зависит от запроса. Как правило, огромные профсоюзы - плохая идея. Наследование таблиц будет работать немного лучше, но если вы используете constraint_exclusion, это приведет к значительному увеличению времени планирования.

Оба эти вопроса указывают на основную проблему с вашим дизайном. Вам не нужно огромное количество таблиц и гигантских союзов.

Следуя комментарию в другом ответе, вы должны просто создать несколько таблиц. Кажется, вы хотите создать одну таблицу на номер телефона, что бессмысленно, и создать над ним число просмотров. Не делайте этого, это несовместимо с данными, и с ними будет работать сложнее, а не проще. Индексы, где предложения и объединения позволят вам использовать данные более эффективно, когда они логически структурируются в несколько таблиц. Я предлагаю изучить базовое реляционное моделирование.

Если вы столкнетесь с проблемами масштабируемости позже, вы можете посмотреть partitioning, но для этого вам не понадобятся тысячи таблиц.

Ответ 2

Оба в практическом смысле без ограничений.

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

Один практический сценарий, когда это может произойти, - это Postgis: наличие множества таблиц со схожими атрибутами, которые могут быть объединены в одном представлении (это недостаток в дизайне Postgis IMHO), но обычно это обрабатывается приложением (например, ГИС).

Можете ли вы объяснить свой сценарий, когда вам понадобится очень большое количество таблиц, которые нужно запросить в одном прогоне?