# Dokumentasi Django 5.2.8

# Tablespaces

Contoh umum untuk mengoptimalkan penampilan dalam sistem basisdata adalah menggunakan tablespaces untuk mengorganisir tata letak cakram.

Peringatan

Django tidak membuat tablespace untuk anda. Silahkan mengacu ke dokumentasi mesis basisdata anda untuk rincian di membuat dan mengelola tablespace.

## Mengumumkan tablespace untuk table

Sebuah tablespace dapat ditentukan untuk tabel dibangkitkan oleh model dengan menyokong pilihan `db_tablespace` didalam `class Meta` model. Pilihan ini juga mempengaruhi tabel-tabel otomatis dibuat untuk `ManyToManyField` dalam model.

Anda dapat menggunakan pengaturan `DEFAULT_TABLESPACE` untuk menentukan nilai untuk `db_tablespace`. Ini berguna untuk mengatur tablespace untuk aplikasi Django siap-pakai dan aplikasi lain yang kodenya tidak dapat dikendalikan.

## Mengumumkan tablespace untuk indeks

Anda dapat melewatkan pilihan `db_tablespace` ke sebuah pembangun `Index` untuk menentukan nama dari tablespace untuk digunakan untuk indeks. Untuk pengindeksan bidang tunggal, anda dapat melewatkan pilihan `db_tablespace` ke sebuah pembangun `Field` untuk menentukan sebuah tablespace lain untuk indeks kolom bidang. Jika kolom tidak memiliki sebuah indeks, pilihan diabaikan.

Anda dapat menggunakan pengaturan `DEFAULT_INDEX_TABLESPACE` untuk menentukan nilai awalan untuk `db_tablespace`.

Jika `db_tablespace` tidak ditentukan dan anda tidak menyetel `DEFAULT_INDEX_TABLESPACE`, indeks dibuat dalam tablespace sama seperti tabel-tabel.

## Sebuah contoh

    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")]

Dalam contoh ini, tabel-tabel dibangkitkan oleh model `TablespaceExample` (yaitu tabel model dan tabel many-to-many) akan disimpan dalam tablespace `tables`. Indeks untuk bidang nama dan indeks-indeks pada tabel many-to-many akan disimpan dalam tablespace `indexes`. Bidang `data` akan juga dibangkitkan dalam tablespace model `tables` secara awalan. Indeks untuk bidang `shortcut` akan disimpan dalam tablespace `other_indexes`.

## Dukungan basisdata

PostgreSQL dan Oracle mendukung tablespaces. SQLite, MariaDB dan MySQL tidak.

Ketika anda menggunakan backend yang kekurangan dukungan untuk tablespace, Django mengabaikan semua pilihan terkait-tablespace.