用于优化数据库系统性能的常见范例是使用表空间来组织磁盘布局。
警告
Django不会为您创建表空间。有关创建和管理表空间的详细信息,请参阅数据库引擎的文档。
通过在模型的类 Meta内提供db_tablespace选项,可以为模型生成的表指定表空间。 。此选项还会影响为模型中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字段的索引和many-to-many表上的索引将存储在indexes表空间中。data字段也将生成索引,但没有指定它的表空间,因此默认情况下它将存储在模型表空间tables中。
2015年5月13日