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

Ukuran meja dengan tata letak halaman

Perhitungan Anda salah di beberapa titik.

  • Ukuran penyimpanan varchar , text (dan character !) adalah, mengutip manual ):

Penekanan tebal saya untuk menjawab pertanyaan dalam komentar.

  • HeapTupleHeader menempati 23 byte . Tetapi setiap tuple ("item" - baris atau entri indeks) memiliki pengidentifikasi item di awal halaman data ke sana, dengan total 27 byte yang disebutkan. Perbedaannya relevan karena data pengguna yang sebenarnya dimulai pada kelipatan MAXALIGN dari awal setiap item, dan pengenal item tidak diperhitungkan terhadap offset ini - serta "ukuran tupel" yang sebenarnya.

  • 1 byte padding karena penyelarasan data (kelipatan 8), yang digunakan untuk bitmap NULL dalam kasus ini.

  • Tidak ada padding untuk tipe varchar (tetapi byte tambahan yang disebutkan di atas)

Jadi, perhitungan sebenarnya (dengan semua kolom terisi maksimal) adalah:

    23    -- heaptupleheader
 +   1    -- NULL bitmap (or padding if row has NO null values)
 +   9    -- columns ...
 + 101 
 +   2 
 + 101 
 +   4 
 +  11
-------------
   252 bytes

 +   4    -- item identifier at page start

Terkait:

Anda akan menemukan lebih banyak lagi di daftar tautan di sebelah kanan jawaban ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengekstrak jam dari kueri di postgres

  2. Pengujian Otomatis Cadangan PostgreSQL

  3. postgresql:nilai kunci duplikat kesalahan melanggar batasan unik

  4. Postgres mengembalikan nilai default ketika kolom tidak ada

  5. Hibernate optimis mengunci perilaku yang berbeda antara Postgres dan MariaDb