PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah Postgres menulis ulang seluruh baris pada pembaruan?

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memigrasi Tabel Postgres yang ada ke tabel yang dipartisi setransparan mungkin?

  2. Kembalikan set catatan (tabel virtual) dari fungsi

  3. MASUKKAN baris ke dalam beberapa tabel dalam satu kueri, pilih dari tabel yang terlibat

  4. Bagaimana cara mengubah db di postgreSQL ke utf8?

  5. Panggil ke fungsi yang tidak ditentukan pg_connect() - Wamp