revision-up-to: | 17812 (1.4) |
---|
データベースシステムのパフォーマンスを最適化する一般的な方法は、 テーブルスペース を使ってディスクレイアウトを整理することです。
Warning
Django はテーブルスペースの作成は行いません。テーブルスペース作成、管理の 詳細については使っているデータベースエンジンのドキュメントを参照してくださ い。
db_tablespace
オプションをモデルの class
Meta
に渡すことによって、モデルが生成した特定のテーブルに対してテーブルス
ペースを指定することができます。
このオプションはモデルの 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 フィールドのインデックスと多対多テーブルのインデックスは indexes
テー
ブルスペースに保存されます。 data
フィールドもインデックスを生成しますが、
テーブルスペースが指定されていないので、デフォルトのモデルテーブルスペースであ
る tables
に保存されることになります。
PostgreSQL と Oracle はテーブルスペースをサポートしています。 SQLite と MySQL はサポートしていません。
テーブルスペースをサポートしていないバックエンドを使う場合は、 Djang はテーブ ルスペース関連の全てのオプションを無視します。
Oct 26, 2017