Qu’est ce que le partitioning?

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

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

Technique utilisé - Partitionnement par liste

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

Ensuite nous nous assurons que chaque contrainte suivantes inclus la clé de partionnement:

  • La clĂ© primaire
  • Toutes les clĂ©s Ă©trangĂšres rĂ©fĂ©rencent la table qui va ĂȘtre partitionnĂ©
  • 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

  • Index maintenance car les indexes sont plus petits et plus rapides
  • Autovaccum run en parallel avec un process pour chaque partition

Liens