Spec-Zone.ru › Django 5.0

Пространства имен таблиц

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

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

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. Индекс для поля имени и индексы в таблице многие-ко-многим будут храниться в пространстве имён таблиц 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/5.0/topics/db/tablespaces/

Spec-Zone.ru

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