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

Di tempat pembaruan dengan PostgreSQL

Hanya bidang yang disimpan in-line yang perlu disalin. Untuk field yang disimpan out-of-line dalam tabel TOAST, hanya referensi ke entri TOAST yang disalin.

Apakah suatu bidang disimpan di luar baris bergantung pada ukuran nilai dalam bidang tersebut dan pada tipe data bidang tersebut.

Jika tupel besar tetapi hanya memiliki beberapa bidang - seperti

some_id integer,
frequently_updated integer,
charblob text

maka tidak ada gunanya mengubah apa pun karena pembaruan frequently_updated umumnya tidak akan menulis ulang data dalam charblob , setidaknya jika cukup besar sehingga layak untuk dirawat.

OTOH, jika Anda memiliki tabel dengan banyak bidang, Anda akan menulis ulang lebih banyak dengan setiap pembaruan.

HOT hanya akan membantu Anda sampai batas tertentu karena pembaruan HOT hanya dapat terjadi bila tidak ada kolom yang diperbarui yang merupakan bagian dari indeks dan ada cukup ruang kosong pada halaman database yang sama. Untuk baris lebar, Anda tidak akan memuat banyak salinan pada satu halaman bahkan dengan TOAST, jadi HOT akan bermanfaat terbatas.

Memisahkan bidang-bidang tersebut ke dalam tabel-tabel terpisah akan bermanfaat jika benar-benar sering diperbarui tetapi tabel lainnya memiliki baris lebar yang tidak banyak berubah.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. urlencode hanya dengan fungsi bawaan

  2. Layanan basis data PostgreSQL

  3. Bagaimana cara membandingkan data antara dua database di PostgreSQL?

  4. Bagaimana saya bisa membuat jenis kolom khusus dengan Typesafe Slick di Scala?

  5. Optimalkan kueri GROUP BY untuk mengambil baris terbaru per pengguna