PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Колко дисково пространство е необходимо за съхраняване на стойност NULL с помощта на postgresql DB?

Ларами е прав за растерното изображение и прави връзки към правилното място в ръководството. И все пак, това е почти, но не съвсем правилно:

Така че за всеки даден ред с една или повече нули, размерът, добавен към него, ще бъде този на растерната карта (N бита за таблица с N колони, закръглено нагоре).

Човек трябва да вземе предвид подравняването на данните. HeapTupleHeader (на ред) е с дължина 23 байта, действителните данни в колоната винаги започват с кратно на MAXALIGN (обикновено 8 байта). Това оставя един байт запълване, което може да се използва от нулевото растерно изображение. Всъщност съхранението NULL е абсолютно безплатно за таблици до 8 колони .

След това друг MAXALIGN (обикновено 8) байта се разпределят за следващия MAXALIGN * 8 (обикновено 64) колони. И т.н. Винаги за общия брой потребителски колони (всичко или нищо ). Но само ако има поне една действителна стойност NULL в реда.

Проведох обширни тестове, за да потвърдя всичко това. Повече подробности:

  • Не използва ли NULL в PostgreSQL все още ли използва NULL растерна карта в заглавката?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL Обратно LIKE

  2. Добавяне на нова стойност към съществуващ тип ENUM

  3. SELECT или PERFORM във функция PL/pgSQL

  4. Извършване на промени в топологията на репликация за PostgreSQL

  5. Как да използвате EXECUTE FORMAT ... ИЗПОЛЗВАНЕ във функцията postgres