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

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

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

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

Copyright ©2020 All rights reserved