valeur - sum sql




Combien d'espace disque est nécessaire pour stocker une valeur NULL à l'aide de la base de données postgresql? (2)

Disons que j'ai une colonne sur ma table définie les éléments suivants:

"MyColumn" smallint NULL

Stocker une valeur comme 0, 1 ou quelque chose d'autre devrait nécessiter 2 octets (1). Mais combien d'espace faut-il si je mets "MyColumn" à NULL? Aura-t-il besoin de 0 octet?

Existe-t-il des octets supplémentaires nécessaires à des fins d'administration ou de telles choses pour chaque colonne / ligne?

(1) http://www.postgresql.org/docs/9.0/interactive/datatype-numeric.html


Il faut 1 octet (0x00), mais c'est la structure de la table qui constitue la plus grande partie de l'espace, l'ajout de cette valeur peut changer quelque chose (comme l'ajout d'une ligne) qui nécessite plus d'espace que la somme des données.

Edit: Laramie semble en savoir plus sur null que moi :)


Les colonnes Null ne sont pas stockées. La ligne a un bitmap au début et un bit par colonne qui indique ceux qui sont nuls ou non nuls. Le bitmap peut être omis si toutes les colonnes ne sont pas nulles dans une ligne. Donc, pour toute ligne donnée avec un ou plusieurs NULL, la taille ajoutée serait celle du bitmap (N bits pour un tableau N-colonnes, arrondi).

Discussion plus approfondie des documents here







nullable