Maison >base de données >tutoriel mysql >Quelle quantité d'espace disque les valeurs NULL utilisent-elles réellement dans PostgreSQL ?
Espace disque requis pour les valeurs NULL dans PostgreSQL
Lors de la création d'une table de base de données, il est important de prendre en compte les exigences de stockage de ses colonnes, en particulier lorsqu'il s'agit de valeurs nullables. Comprendre comment les valeurs NULL sont stockées peut optimiser l'utilisation de l'espace disque.
Stockage des valeurs NULL
Dans PostgreSQL, les valeurs NULL sont représentées à l'aide d'un masque de bits, appelé bitmap nul. . Chaque bit du bitmap correspond à une colonne du tableau. Si un bit est mis à 1, cela indique que la colonne correspondante est NULL.
Espace disque occupé par les bitmaps NULL
La taille du bitmap nul dépend de la nombre de colonnes dans le tableau. Pour les tableaux comportant 8 colonnes ou moins, le bitmap occupe 1 octet. Pour les tableaux de 9 à 64 colonnes, il occupe 2 octets, et ainsi de suite. Cependant, en raison de l'alignement des données, l'exigence de stockage minimale pour une ligne contenant au moins une valeur NULL est de 1 octet, quel que soit le nombre de colonnes.
Surcharge pour les colonnes NULL
Outre le bitmap nul, aucun octet supplémentaire n'est requis pour la gestion des colonnes NULL. Cependant, les colonnes supprimées marquées comme « supprimées » dans le catalogue système pg_attribute occupent toujours un bit dans le bitmap nul. Cette surcharge peut persister jusqu'à ce qu'un cycle de vidage/restauration soit effectué.
Exemple et résultats de test
Considérons un tableau avec la définition de colonne suivante :
"MyColumn" smallint NULL
Stocker une valeur de 0 ou 1 dans cette colonne nécessiterait 2 octets. Pour les valeurs NULL, les exigences de stockage suivantes s'appliquent :
Pour les tables comportant 8 colonnes ou moins :
Pour les tables de 9 à 64 personnes colonnes :
Pour les tableaux de plus de 64 colonnes :
Des tests approfondis montrent que ces exigences de stockage sont cohérentes pour toutes les tables. L'optimisation de l'utilisation de l'espace disque en stockant les valeurs NULL dans de petites tables (moins de 9 colonnes) est bénéfique, alors que cela devient moins important dans les tables plus grandes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!