資料表空間¶
在資料庫系統中,優化效能的常見範例是使用資料表空間來組織磁碟佈局。
警告
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 會忽略所有與資料表空間相關的選項。