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 Field untuk menentukan tablespace lain untuk indeks kolom Field. Jika tidak ada indeks akan dibuat untuk kolom, 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)
    edges = models.ManyToManyField(to="self", db_tablespace="indexes")

    class Meta:
        db_tablespace = "tables"

Dalam contoh ini, tabel-tabel dibangkitkan oleh model TablespaceExample (yaitu tabel model dan tabel many-to-many) akan disimpan dalam tablespace table. Indeks untuk bidang nama dan indeks-indeks pada tabel many-to-many akan disimpan dalam tablespace indexes. Bidang data akan juga membangkitkan sebuah indeks, tetapi tidak ada tablespace untuk itu ditentukan, jadi itu akan disimpan dalam tablespace model tables secara awalan.

Dukungan basisdata

PostgreSQL dan Oracle mendukung tablespace. SQLite dan MySQL tidak.

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