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

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

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

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

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

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

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

Copyright ©2021 All rights reserved