Qu’est-ce que le partitioning?

C’est une technique utilisĂ©e pour amĂ©liorer les performances d’une base de donnĂ©es.

On va dĂ©couper nos tables en plusieurs petites tables. Cela va permettre d’amĂ©liorer le temps de rĂ©ponse des requĂȘtes SQL car notre ensemble de donnĂ©es sera plus petit et nous n’aurons plus besoin de parcourir des millions de donnĂ©es.

Technique utilisée - Partitionnement par liste

Afin de partitionner une table, nous commençons par ajouter une nouvelle colonne contenant la clé de partitionnement. Cette colonne sera utilisée pour savoir dans quelle partition nos données se trouvent.

Ensuite nous nous assurons que chaque contrainte suivante inclut la clé de partitionnement:

  • La clĂ© primaire
  • Toutes les clĂ©s Ă©trangĂšres rĂ©fĂ©rencent la table qui va ĂȘtre partitionnĂ©e
  • Les contraintes d’unicitĂ©

Désactiver un index

Nous dĂ©sactivons dans un premier temps notre index avant de le supprimer afin de s’assurer de ne pas introduire de dĂ©gradation de performance.

-- Disable index: index_name_unique
UPDATE pg_index SET indisvalid = true
WHERE indexrelid = (
  SELECT oid FROM pg_class WHERE relname = 'index_name_unique'
);

Avantages

  • Maintenance des index car ils sont plus petits et plus rapides
  • Autovacuum tourne en parallĂšle avec un process pour chaque partition

Liens