Maison > base de données > tutoriel mysql > Quelle quantité d'espace disque les valeurs NULL consomment-elles réellement dans PostgreSQL ?

Quelle quantité d'espace disque les valeurs NULL consomment-elles réellement dans PostgreSQL ?

Patricia Arquette
Libérer: 2024-12-25 22:18:17
original
592 Les gens l'ont consulté

How Much Disk Space Do NULL Values Actually Consume in PostgreSQL?

Espace disque requis pour stocker des valeurs NULL dans PostgreSQL

Lors de la définition d'une colonne comme smallint nullable, l'hypothèse est que le stockage de valeurs telles que 0 ou 1 nécessiterait 2 octets . Cependant, la question se pose : combien d'espace est occupé lorsque la colonne est définie sur NULL ?

Optimisation du stockage

Dans PostgreSQL, les valeurs NULL ne nécessitent aucun espace de stockage dédié. Au lieu de cela, un bitmap est utilisé pour indiquer quelles colonnes d'une ligne contiennent des valeurs NULL. Pour toute ligne contenant un ou plusieurs valeurs nulles, un bitmap de la taille appropriée (arrondi à l'octet le plus proche) est ajouté à l'en-tête de la ligne.

Considérations sur l'alignement des données

L'alignement des données joue un rôle crucial rôle dans la gestion de la mémoire. Dans PostgreSQL, le HeapTupleHeader (en-tête de ligne) occupe 23 octets et les données de colonne sont toujours alignées sur des multiples de MAXALIGN (généralement 8 octets). Par conséquent, il existe un octet de remplissage dans l'en-tête de ligne qui peut être utilisé par le bitmap nul.

Stockage gratuit pour les petites tables

En raison de l'alignement des données susmentionné, les tables avec jusqu'à à 8 colonnes peuvent stocker des valeurs NULL absolument gratuitement. Au-delà de cette limite, des octets MAXALIGN supplémentaires sont alloués pour les 64 colonnes suivantes, et ainsi de suite. Cependant, cet espace supplémentaire n'est occupé que s'il y a de réelles valeurs nulles dans la ligne.

Colonnes supprimées et bitmaps nuls

Même lorsque des colonnes sont supprimées d'une table, elles continuent d'occuper un peu dans le bitmap nul s'ils restent répertoriés dans le catalogue système pg_attribute. Par conséquent, les colonnes supprimées peuvent contribuer à l'espace nécessaire pour le bitmap nul, qui peut persister même après des opérations VACUUM FULL.

Conclusion

Les valeurs NULL dans PostgreSQL sont stockées efficacement à l'aide d'un mécanisme bitmap. . Cependant, l'alignement des données et le nombre de colonnes dans une table peuvent influencer la quantité d'espace disque requise pour stocker ces valeurs. Comprendre ces techniques d'optimisation peut aider à optimiser les performances de la base de données et à minimiser les besoins de stockage.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal