Où et comment sont stockées mes données avec PostGreSQL ?
Comme tous les SGBD relationnel, PostGreSQL stocke les données des tables et des index dans des fichiers organisés sous forme de pages. Que les données soient dans le cache (donc en mémoire vive), ou bien sur le disque, ces pages sont structurées d’une manière bien particulière afin d’exploiter au mieux les lectures et écritures physiques et logiques ainsi que la gestion des versions de ligne. L’ensemble des pages figurent dans des fichiers. Cet article a pour but de vous présenter comment et où PostGreSQL
stocke les données et compare sa façon de faire aux autres SGBDR que sont Oracle et MS SQL Server. Mais contrairement à ses grands frères, PostGreSQL ne dispose pas d’une gestion des espaces de stockage… Voyons ce que cela induit notamment sur le plan des performances et de la volumétrie.
1 – Quelques notions fort utiles
Rappelons tout d’abord quelques notions.
Une table est un ensemble de lignes et comme tout ensemble, les lignes d’une table n’ont aucun
ordre particulier. On parle alors de « tas » ou heap en anglais.
Un index est une copie de certaines colonnes (au moins une) d’une table organisée dans une
structure particulière permettant d’accélérer certaines recherches. Dans ce cas, les données d’un
index sont ordonnées suivant l’algorithme de recherche spécifique au type d’index (arbre équilibré,
hachage, matrice de bit…).
Toutes les données, que ce soit d’un index ou d’une table, sont stockées dans un ensemble de pages
dont la structure est identique. La taille des pages de données de PostGreSQL est de 8 Ko, comme
pour MS SQL Server, alors que pour Oracle, cette taille est variable, mais uniforme pour une même
Où et comment sont stockées mes données avec PostGreSQL ? Frédéric Brouard
Sté SQL Spot – http:\\sqlpro.developpez.com 2 2013-03-05
base et peut être spécifiée à la création de la base afin d’optimiser le stockage en fonction des OS et
du sous-système disque.
Ces pages figurent dans les fichiers et dans postGreSQL, chaque table est représentée par au moins
un fichier, voire plusieurs s’il y a des index.
Les fichiers des tables sont rangés dans un ou plusieurs espaces de stockage qui est un pointeur
logique vers un répertoire du sous-système disque. Les espaces de stockage sont appelés tablespace,
tout comme dans Oracle, bien que cette dénomination soit impropre puisque dans ces espaces de
stockage figurent aussi bien des tables que des index. Notons que SQL Server, tout comme Sybase
ASE parle de filegroup, c’est à dire groupe de fichier pour désigner un espace de stockage.
PostGreSQL appelle « relation » (abrégé « rel ») tout objet de type, table, vue, index, type composé…
Ce qui à nouveau est impropre, car une relation au sens mathématique du terme (algèbre
relationnelle) est l’objet conteneur de données doté d’une clef et dont tous les n-uplets sont valués
(contrairement à une table qui accepte les NULLs).