資料表空間

在資料庫系統中,優化效能的常見範例是使用資料表空間來組織磁碟佈局。

警告

Django 不會為您建立資料表空間。請參閱您的資料庫引擎文件,以了解建立和管理資料表空間的詳細資訊。

為資料表宣告資料表空間

可以透過在模型的 class Meta 中提供 db_tablespace 選項,為模型產生的資料表指定資料表空間。此選項也會影響模型中為 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 資料表空間中。名稱欄位的索引和多對多資料表上的索引會儲存在 indexes 資料表空間中。data 欄位也會產生索引,但未指定其資料表空間,因此依預設會儲存在模型資料表空間 tables 中。shortcut 欄位的索引會儲存在 other_indexes 資料表空間中。

資料庫支援

PostgreSQL 和 Oracle 支援資料表空間。SQLite、MariaDB 和 MySQL 不支援。

當您使用不支援資料表空間的後端時,Django 會忽略所有與資料表空間相關的選項。

返回頂部