Spec-Zone.ru › Django 6.0

Табличные пространства

Распространённый способ оптимизации производительности систем баз данных — использование табличных пространств для организации размещения данных на диске.

Предупреждение

Django не создаёт табличные пространства за вас. Подробнее о создании табличных пространств и управлении ими см. в документации используемой СУБД.

Объявление табличных пространств для таблиц

Табличное пространство для таблицы, создаваемой моделью, можно указать, задав параметр db_tablespace внутри class Meta модели. Этот параметр также влияет на таблицы, автоматически создаваемые для полей ManyToManyField в модели.

Для задания значения по умолчанию для db_tablespace можно использовать параметр DEFAULT_TABLESPACE. Это полезно, если нужно задать табличное пространство для встроенных приложений Django и других приложений, код которых вы не можете изменить.

Объявление табличных пространств для индексов

Чтобы указать имя табличного пространства для индекса, передайте параметр db_tablespace конструктору Index. Для индексов по отдельным полям можно передать параметр db_tablespace конструктору Field, чтобы указать альтернативное табличное пространство для индекса столбца этого поля. Если у столбца нет индекса, параметр игнорируется.

Для задания значения по умолчанию для db_tablespace можно использовать параметр DEFAULT_INDEX_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 игнорирует все параметры, связанные с табличными пространствами.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/topics/db/tablespaces/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API