Rumah >pangkalan data >tutorial mysql >Berapa Banyak Ruang Cakera Yang Nilai NULL Sebenarnya Digunakan dalam PostgreSQL?
Keperluan Ruang Cakera untuk Nilai NULL dalam PostgreSQL
Apabila mencipta jadual pangkalan data, adalah penting untuk mempertimbangkan keperluan penyimpanan lajurnya, terutamanya apabila berurusan dengan nilai nullable. Memahami cara nilai NULL disimpan boleh mengoptimumkan penggunaan ruang cakera.
Penyimpanan Nilai NULL
Dalam PostgreSQL, nilai NULL diwakili menggunakan bitmask, dikenali sebagai peta bit null . Setiap bit dalam peta bit sepadan dengan lajur dalam jadual. Jika bit ditetapkan kepada 1, ia menunjukkan bahawa lajur yang sepadan ialah NULL.
Ruang Cakera Diduduki oleh NULL Bitmaps
Saiz peta bit nol bergantung pada bilangan lajur dalam jadual. Untuk jadual dengan 8 atau kurang lajur, bitmap menduduki 1 bait. Untuk jadual dengan 9 hingga 64 lajur, ia menduduki 2 bait, dan seterusnya. Walau bagaimanapun, disebabkan penjajaran data, keperluan storan minimum untuk baris yang mengandungi sekurang-kurangnya satu nilai NULL ialah 1 bait, tanpa mengira bilangan lajur.
Overhed untuk NULL Lajur
Selain peta bit nol, tiada bait tambahan diperlukan untuk mengurus lajur NULL. Walau bagaimanapun, lajur yang digugurkan ditandakan sebagai "digugurkan" dalam katalog sistem pg_attribute masih menduduki satu bit dalam peta bit nol. Overhed ini boleh berterusan sehingga kitaran pembuangan/pemulihan dilakukan.
Contoh dan Keputusan Ujian
Pertimbangkan jadual dengan takrifan lajur berikut:
"MyColumn" smallint NULL
Menyimpan nilai 0 atau 1 dalam lajur ini memerlukan 2 bait. Untuk nilai NULL, keperluan storan berikut digunakan:
Untuk jadual dengan 8 lajur atau kurang:
Untuk jadual dengan 9 hingga 64 lajur:
Untuk jadual dengan lebih daripada 64 lajur:
Ujian yang meluas menunjukkan bahawa keperluan storan ini konsisten untuk semua jadual. Mengoptimumkan penggunaan ruang cakera dengan menyimpan nilai NULL dalam jadual kecil (kurang daripada 9 lajur) adalah berfaedah, manakala ia menjadi kurang ketara dalam jadual yang lebih besar.
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!