Django 1.8.2.dev20150513143415文档

表空间

用于优化数据库系统性能的常见范例是使用表空间来组织磁盘布局。

警告

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中。

数据库支持

PostgreSQL和Oracle支持表空间。SQLite和MySQL没有。

当您使用不支持表空间的后端时,Django会忽略所有与表空间相关的选项。