---
title: "テーブル空間（tablespace）"
version: 6.0
locale: ja
source: https://docs.djangoproject.com/ja/6.0/topics/db/tablespaces/
canonical: https://djangodocs.dev/ja/6.0/topics/db/tablespaces/
---
# テーブル空間（tablespace）

データベースシステムのパフォーマンスを最適化するための一般的なパラダイムは、ディスクレイアウトを整理するためにテーブル空間 [tablespaces](https://en.wikipedia.org/wiki/Tablespace) を使用することです。

> **Warning**
>
> Django はテーブル空間を作成しません。テーブル空間の作成と管理の詳細は、データベースエンジンのドキュメントを参照してください。

## テーブルにテーブル空間を宣言する

モデルによって生成されるテーブルにテーブル空間を指定するには、モデルの `class Meta` 内で [`db_tablespace`](/ja/6.0/ref/models/options/#django.db.models.Options.db_tablespace) オプションを指定します。このオプションはモデルの [`ManyToManyField`](/ja/6.0/ref/models/fields/#django.db.models.ManyToManyField) に対して自動的に生成されるテーブルにも影響します。

[`DEFAULT_TABLESPACE`](/ja/6.0/ref/settings/#std-setting-DEFAULT_TABLESPACE) 設定を使うと、 [`db_tablespace`](/ja/6.0/ref/models/options/#django.db.models.Options.db_tablespace) のデフォルト値を指定できます。これは、組み込みの Django アプリケーションや、自分でコードを制御できないアプリケーションのテーブル空間を設定するのに便利です。

## インデックスにテーブル空間を宣言する

[`db_tablespace`](/ja/6.0/ref/models/indexes/#django.db.models.Index.db_tablespace) オプションを `Index` コンストラクタに渡すことで、インデックスに使用するテーブル空間の名前を指定できます。単一フィールドインデックスの場合、 [`db_tablespace`](/ja/6.0/ref/models/fields/#django.db.models.Field.db_tablespace) オプションを `Field` コンストラクタに渡すことで、フィールドのカラムインデックスに使用するテーブル空間を指定できます。カラムにインデックスがない場合、このオプションは無視されます。

[`DEFAULT_INDEX_TABLESPACE`](/ja/6.0/ref/settings/#std-setting-DEFAULT_INDEX_TABLESPACE) 設定を使って [`db_tablespace`](/ja/6.0/ref/models/fields/#django.db.models.Field.db_tablespace) のデフォルト値を指定できます。

[`db_tablespace`](/ja/6.0/ref/models/fields/#django.db.models.Field.db_tablespace) が指定されておらず、 [`DEFAULT_INDEX_TABLESPACE`](/ja/6.0/ref/settings/#std-setting-DEFAULT_INDEX_TABLESPACE) も設定されていない場合、インデックスはテーブルと同じテーブル空間に作成されます。

## 例

```python
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` テーブル空間に格納されます。name フィールドのインデックスと多対多テーブルのインデックスは `indexes` テーブル空間に格納されます。 `data` フィールドもインデックスを生成しますが、テーブル空間が指定されていないため、デフォルトではモデルのテーブル空間 `tables` に格納されます。 `shortcut` フィールドのインデックスは `other_indexes` テーブル空間に格納されます。

## データベースのサポート

PostgreSQLとOracleはテーブル空間をサポートしています。SQLite、MariaDB、MySQLはサポートしていません。

テーブル空間をサポートしていないバックエンドを使う場合、 Django はテーブル空間関連のオプションを全て無視します。
