Spec-Zone.ru › Django 2.2

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

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

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

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 и MySQL нет.

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

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

Spec-Zone.ru

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