Табличные пространства
Распространённый подход к оптимизации производительности в системах баз данных — использование табличных пространств для организации расположения данных на диске.
Предупреждение
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.11/topics/db/tablespaces/