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.