Rumah >pangkalan data >tutorial mysql >Berapa Banyak Ruang Cakera Adakah Nilai NULL dalam PostgreSQL Benar-benar Digunakan?
Dalam PostgreSQL, keperluan storan untuk lajur yang membenarkan nilai NULL berbeza daripada yang menguatkuasakan nilai. Pertimbangkan takrifan lajur jadual berikut:
"MyColumn" smallint NULL
Menyimpan integer seperti 0, 1 atau sebarang nilai lain memerlukan 2 bait. Walau bagaimanapun, persoalan timbul: berapa banyak ruang cakera yang digunakan apabila "MyColumn" ditetapkan kepada NULL? Adakah ia menduduki 0 bait?
Bitmap lwn. NULL Storage
Bertentangan dengan andaian awal penggunaan 0 bait, nilai NULL tidak mengambil ruang. Sebaliknya, PostgreSQL menggunakan bitmap untuk menjejak status NULL bagi setiap lajur dalam jadual. Setiap bit dalam peta bit mewakili status NULL/BUKAN NULL untuk baris tertentu.
Walau bagaimanapun, peta bit tidak diperuntukkan untuk setiap baris. Sebaliknya, penjajaran data adalah faktor yang perlu dipertimbangkan. HeapTupleHeader, yang merangkumi maklumat tentang setiap baris, menduduki 23 bait. Data diselaraskan untuk bermula pada gandaan MAXALIGN (biasanya 8 bait), meninggalkan satu bait padding untuk peta bit nol.
Keperluan Ruang Cakera
Akibat daripada faktor-faktor ini, simpanan nol adalah percuma untuk jadual dengan sehingga 8 lajur. Walau bagaimanapun, untuk jadual dengan lebih banyak lajur, ruang cakera tambahan diperlukan seperti berikut:
Ujian Dunia Sebenar
Ujian yang meluas telah mengesahkan pemerhatian ini. Untuk butiran lanjut, rujuk perbincangan di:
Atas ialah kandungan terperinci Berapa Banyak Ruang Cakera Adakah Nilai NULL dalam PostgreSQL Benar-benar Digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!