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

Я создал базу данных в PostgreSQL, назовем его база данных testdb.

У меня есть общий набор таблиц внутри этой базы данных,xxx_table_one, xxx_table_two и xxx_table_three.

теперь у меня есть код Python, где я хочу динамически создавать и удалять "наборы" этих 3 таблиц в мою базу данных с уникальным идентификатором в имени таблицы, отличающим разные "наборы" друг от друга, например

установить 1
база данных testdb.aaa_table_one
база данных testdb.aaa_table_two
база данных testdb.aaa_table_three

установить 2
база данных testdb.bbb_table_one
база данных testdb.bbb_table_two
база данных testdb.bbb_table_three

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

Я хочу знать, несколько вещей

  1. ограничивает ли PostgreSQL количество таблиц в базе данных?
  2. каково влияние на производительность, если таковая имеется, наличия большого количества таблиц в базе данных 1?
  3. каково влияние на производительность сохранения коллекций данных в разных наборах таблиц по сравнению с сохранением их всех в одном наборе, например, я думаю, нужно будет написать больше запросов, если я хочу запросить несколько коллекций данных сразу, когда данные распространяются по таблицам по сравнению с только 1 набором таблиц.

3 ответов


PostgreSQL не имеет много ограничений, ваше оборудование намного более ограничено, вот где вы сталкиваетесь с большинством проблем. http://www.postgresql.org/about/

вы можете иметь 2^32 таблиц в одной базе данных, чуть более 4 миллиардов.


  1. PostgreSQL не накладывает прямого ограничения на это, ваша ОС (это зависит от максимального размера каталога)
  2. Это также может зависеть от вашей ОС. Некоторые файловые системы работают медленнее с большими каталогами.
  3. PostgreSQL не сможет оптимизировать запросы, если они находятся в разных таблицах. Поэтому использование меньшего количества таблиц (или одной таблицы) должно быть более эффективным

Если ваши данные не были связаны, я думаю, что ваши таблицы могут быть в другой схеме, и тогда вы будете использовать SET search_path TO schema1, public например, таким образом вам не придется динамически генерировать имена таблиц в запросах. Я планирую попробовать эту структуру на большой базе данных, которая хранит журналы и другую информацию отслеживания.

вы также можете изменить свой tablespace Если ваша ОС имеет ограничение или страдает от большого размера каталог.