Apabila mentakrifkan lajur sebagai nullable smallint, andaian menyimpan nilai seperti 0 atau 1 memerlukan 2 bait . Walau bagaimanapun, persoalan timbul: berapa banyak ruang yang diduduki apabila lajur ditetapkan kepada NULL?
Dalam PostgreSQL, nilai NULL tidak memerlukan sebarang ruang storan khusus. Sebaliknya, peta bit digunakan untuk menunjukkan lajur dalam satu baris yang mengandungi nilai NULL. Untuk mana-mana baris dengan satu atau lebih null, peta bit dengan saiz yang sesuai (dibundarkan kepada bait terdekat) ditambahkan pada pengepala baris.
Penjajaran data memainkan peranan yang penting peranan dalam pengurusan ingatan. Dalam PostgreSQL, HeapTupleHeader (pengepala baris) menduduki 23 bait dan data lajur sentiasa diselaraskan dengan gandaan MAXALIGN (biasanya 8 bait). Akibatnya, satu bait padding wujud dalam pengepala baris yang boleh digunakan oleh peta bit nol.
Disebabkan penjajaran data yang disebutkan di atas, jadual dengan ke atas hingga 8 lajur boleh menyimpan nilai NULL secara percuma. Melebihi had ini, bait MAXALIGN tambahan diperuntukkan untuk 64 lajur seterusnya dan seterusnya. Walau bagaimanapun, ruang tambahan ini hanya diduduki jika terdapat nilai nol sebenar dalam baris.
Walaupun apabila lajur digugurkan daripada jadual, lajur itu terus menduduki sedikit dalam peta bit nol jika ia kekal disenaraikan dalam katalog sistem pg_attribute. Akibatnya, lajur yang digugurkan boleh menyumbang kepada ruang yang diperlukan untuk peta bit nol, yang boleh berterusan walaupun selepas operasi PENUH VACUUM.
Nilai NULL dalam PostgreSQL disimpan dengan cekap menggunakan mekanisme bitmap . Walau bagaimanapun, penjajaran data dan bilangan lajur dalam jadual boleh mempengaruhi jumlah ruang cakera yang diperlukan untuk menyimpan nilai ini. Memahami teknik pengoptimuman ini boleh membantu mengoptimumkan prestasi pangkalan data dan meminimumkan keperluan storan.
Atas ialah kandungan terperinci Berapa Banyak Ruang Cakera Yang Nilai NULL Sebenarnya Digunakan dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!