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 tablespace. SQLite dan MySQL tidak.
Ketika anda menggunakan backend yang kekurangan dukungan untuk tablespace, Django mengabaikan semua pilihan terkait-tablespace.