Табличные пространства ¶
Распространенной парадигмой оптимизации производительности в системах баз данных является использование табличных пространств для организации структуры диска.
Предупреждение
Django не создает за вас табличные пространства. Пожалуйста, обратитесь к документации по вашей СУБД для получения подробной информации о создании табличных пространств и управлении ими.
Объявление табличных пространств для таблиц ¶
Табличное пространство может быть указано для таблицы, созданной моделью, путем предоставления db_tablespace
опции внутри модели
. Этот параметр также влияет на таблицы, автоматически созданные для
s в модели.class Meta
ManyToManyField
Вы можете использовать этот DEFAULT_TABLESPACE
параметр, чтобы указать значение по умолчанию для db_tablespace
. Это полезно для установки табличного пространства для встроенных приложений Django и других приложений, код которых вы не можете контролировать.
Объявление табличных пространств для индексов ¶
Вы можете передать db_tablespace
параметр
Index
конструктору, чтобы указать имя табличного пространства, которое будет использоваться для индекса. Для отдельных индексов полеев, вы можете передать
db_tablespace
параметр в Field
конструктор , чтобы указать альтернативное табличное пространство для индекса столбца месторождения. Если столбец не имеет индекса, параметр игнорируется.
Вы можете использовать этот DEFAULT_INDEX_TABLESPACE
параметр, чтобы указать значение по умолчанию для db_tablespace
.
Если db_tablespace
не указано и вы не установили DEFAULT_INDEX_TABLESPACE
, индекс создается в том же табличном пространстве, что и таблицы.
Пример ¶
class TablespaceExample(models.Model):
name = models.CharField(max_length=30, db_index=True, db_tablespace="indexes")
data = models.CharField(max_length=255, db_index=True)
shortcut = models.CharField(max_length=7)
edges = models.ManyToManyField(to="self", db_tablespace="indexes")
class Meta:
db_tablespace = "tables"
indexes = [models.Index(fields=['shortcut'], db_tablespace='other_indexes')]
В этом примере таблицы, созданные TablespaceExample
моделью (т. Е. Таблица модели и таблица «многие ко многим»), будут храниться в tables
табличном пространстве. Индекс для поля имени и индексы в таблице «многие ко многим» будут храниться в indexes
табличном пространстве. data
Поле также будет генерировать индекс, но не табличная для этого не указано, так что она будет храниться в модели табличного tables
по умолчанию. Индекс
shortcut
поля будет храниться в other_indexes
табличном пространстве.
Поддержка базы данных ¶
PostgreSQL и Oracle поддерживают табличные пространства. SQLite, MariaDB и MySQL - нет.
Когда вы используете бэкэнд, в котором отсутствует поддержка табличных пространств, Django игнорирует все параметры, связанные с табличными пространствами.