Spec-Zone.ru › Django 1.10

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

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

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

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

Указание табличных пространств для таблиц

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

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

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

Вы можете передать опцию db_tablespace конструктору Field для указания альтернативного табличного пространства для индекса столбца 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)
    edges = models.ManyToManyField(to="self", db_tablespace="indexes")

    class Meta:
        db_tablespace = "tables"

В этом примере таблицы, сгенерированные моделью TablespaceExample, (т.е. таблица модели и таблица "многие ко многим") будут храниться в табличном пространстве tables. Индекс для поля name и индексы в таблице "многие ко многим" будут храниться в табличном пространстве indexes. Поле data также сгенерирует индекс, но для него не указано табличное пространство, поэтому оно будет храниться в табличном пространстве модели tables по умолчанию.

Поддержка баз данных

PostgreSQL и Oracle поддерживают табличные пространства. SQLite и MySQL — нет.

При использовании бэкенда, не поддерживающего табличные пространства, Django игнорирует все связанные с табличными пространствами параметры.

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

Spec-Zone.ru

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