Rumah >pangkalan data >tutorial mysql >Berapa Banyak Ruang Cakera Yang Nilai NULL Sebenarnya Digunakan dalam PostgreSQL?

Berapa Banyak Ruang Cakera Yang Nilai NULL Sebenarnya Digunakan dalam PostgreSQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-26 10:53:14418semak imbas

How Much Disk Space Do NULL Values Actually Use in 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:

    • Tiada ruang cakera tambahan
  • Untuk jadual dengan 9 hingga 64 lajur:

    • 1 bait untuk peta bit nol
  • Untuk jadual dengan lebih daripada 64 lajur:

    • Berbilang bait untuk tambahan MAXALIGNs

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn