Табличные пространства ¶
Распространенной парадигмой оптимизации производительности систем баз данных является использование табличных пространств для организации структуры на диске.
Предупреждение
Django не создает для вас табличное пространство. Обратитесь к документации ядра СУБД для получения дополнительных сведений о создании табличных пространств и управлении ими.
Объявление табличных пространств для таблиц ¶
Табличное пространство можно указать для таблицы, созданной моделью, заполнив параметр db_tablespace
в модели. Этот параметр также влияет на автоматически создаваемые таблицы для полей модели.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
. Индекс поля name
и индексы таблицы «многие ко многим» будут храниться в табличном пространстве indexes
. Поле data
также генерирует индекс, но табличное пространство не указано, поэтому по умолчанию оно будет сохранено в табличном пространстве tables
. Индекс поля shortcut
будет сохранен в табличном пространстве other_indexes
.
Поддержка базы данных ¶
PostgreSQL и Oracle поддерживают табличные пространства, в отличие от SQLite, MariaDB и MySQL.
При использовании движка, не поддерживающего табличные пространства, Django игнорирует все параметры, связанные с табличными пространствами.