Memilih c) dari pertanyaan Anda:
Seperti @Craig sudah menjelaskan
, kolom yang "mampu TOAST" dan lebih besar dari ambang batas tertentu disimpan di luar baris dalam tabel TOAST khusus per tabel ("garpu relasi" terpisah, file terpisah pada disk). Jadi, 5 MB bytea
kolom akan tetap tidak tersentuh dalam pembaruan jika kolom itu sendiri tidak diubah. Manual:
Penekanan tebal milik saya.
Baris di garpu relasi utama masih disalin dan baris mati tetap berada di belakang saat diperbarui (apakah ada nilai yang benar-benar berubah atau tidak). Untuk ukuran baris besar, solusi berikut mungkin membayar:
Buat tabel 1:1 kecil yang terpisah untuk bendera yang sering diganti. Hanya kunci utama (=kunci asing pada saat yang sama) dan flag yang sering diubah. Ini akan membuat pembaruan jauh lebih cepat dan menghemat ruang disk - untuk overhead tambahan awal dan beberapa biaya untuk kueri yang perlu menggabungkan kedua tabel (kueri lain sebenarnya menjadi lebih cepat). Selengkapnya tentang kebutuhan ruang pada disk untuk baris tabel: