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

Apakah mungkin untuk menyimpan nomor 1 byte di Postgres?

Mengingat bahwa overhead untuk setiap baris di PostgreSQL adalah 23 byte (HeapTupleHeaderData), jika Anda sangat peduli dengan jumlah ruang yang kecil sebanyak ini, Anda mungkin telah memilih cara yang salah untuk menyimpan data Anda.

Terlepas dari itu, karena semua tipe yang lebih rumit memiliki overhead sendiri (bytea menambahkan empat byte overhead misalnya, bit string 5 hingga 8), satu-satunya cara untuk mencapai apa yang Anda cari adalah dengan menggunakan bigint (8 byte), secara numerik menggeser setiap nilai dan OR-ing bersama hasilnya. Anda dapat melakukannya menggunakan operasi bit string untuk membuat kode lebih mudah--hitung sebagai string bit, lalu masukkan ke bigint sebelum menyimpan--atau cukup kalikan/tambahkan secara manual jika Anda ingin kecepatan menjadi lebih baik. Misalnya, inilah cara Anda menyimpan dua byte bersama-sama ke dalam struktur dua byte dan kemudian mendapatkannya kembali:

int2 = 256 * byte1 + byte2
byte1 = int2 / 256
byte2 = int2 % 256

Anda dapat memperluas ide yang sama untuk menyimpan 7 di antaranya dengan cara itu. Overhead pengambilan masih akan mengerikan, tetapi Anda sebenarnya telah menghemat beberapa ruang dalam prosesnya. Tetapi tidak terlalu banyak dibandingkan hanya dengan tajuk baris.



  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 meningkatkan throughput koneksi untuk pgbouncer?

  2. Hitung Maks Jumlah dari bidang beranotasi di atas yang dikelompokkan menurut kueri di Django ORM?

  3. Membuat Pengguna PostgreSQL &Menambahkannya ke database

  4. Pemicu kebakaran pada pembaruan kolomA atau KolomB atau KolomC

  5. Mencari struktur EAV yang tepat berdasarkan jsonb