Django4.0 模型和數據庫-表空間(Tablespaces)

2022-03-16 18:02 更新

為表格申明表空間

表空間可被指定給特定模型生成的數據表,通過在該模型的 ?class Meta? 中提供 ?db_tablespace選項。該選項也影響此模型中為 ManyToManyField 自動創(chuàng)建的數據表。
你可以用 ?DEFAULT_TABLESPACE ?配置為 ?db_tablespace ?指定一個默認值。這在配置內置的 Django 應用或其它你無法修改代碼的應用的表空間時非常有用。

為索引申明表空間

你可以為 ?Index ?構造器傳入 ?db_tablespace ?選項指定索引使用的表空間名。對于單個字段的索引,你可以向 ?Field ?構造器傳入 ?db_tablespace ?選項,為字段列索引指定可選的表空間。若此列沒有索引,會忽略該選項。
你可以用 ?DEFAULT_INDEX_TABLESPACE ?配置項為 ?db_tablespace ?指定一個默認值。
若未指定 ?db_tablespace ?和 ?DEFAULT_INDEX_TABLESPACE?,索引會在與數據表相同的表空間中創(chuàng)建。

一個例子

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 ?模型(即模型表和多對多表)創(chuàng)建的表會被存在 ?tables ?表空間。名稱字段和多對多表的索引會被存在該 ?indexes ?表空間中。 ?data ?字段也會生成一個索引,但因為并未為其指定表空間,所以它會被默認存入模型的表空間 ?tables ?中。 ?shortcut ?字段的索引會被存入 ?other_indexes ?表空間。

數據庫支持

PostgreSQL 和 Oracle 支持表空間。而 SQLite, MariaDB 和 MySQL 不支持。

若你使用的后端不支持表空間,Django 會忽略所有與表空間相關的選項。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號