优化数据库系统性能的一个常见范例是使用 tablespaces 组织磁盘布局。
警告
Django不会为您创建表空间。有关创建和管理表空间的详细信息,请参阅数据库引擎的文档。
可以为模型生成的表指定表空间,方法是提供 db_tablespace
模型中的选项 class Meta
. 此选项还影响为自动创建的表 ManyToManyField
在模型中。
你可以使用 DEFAULT_TABLESPACE
为指定默认值的设置 db_tablespace
. 这对于为内置的django应用程序和其他无法控制代码的应用程序设置表空间很有用。
你可以通过 db_tablespace
选项为 Index
构造函数指定用于索引的表空间的名称。对于单字段索引,可以通过 db_tablespace
选项A 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和SQL不支持。
当使用不支持表空间的后端时,Django会忽略所有与表空间相关的选项。
7月 22, 2024