Базы данных
Распространённым подходом для оптимизации производительности в системах баз данных является использование баз данных для организации расположения на диске.
Предупреждение
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, MariaDB и MySQL нет.
При использовании бэкенда, который не поддерживает базы данных, Django игнорирует все параметры, связанные с базами данных.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.1/topics/db/tablespaces/