Bonjour à tous,
J'ai une procédure qui importe des données dans une base postgresql, effectue des calculs sur ces données et les réorganise pour les besoins que nous avons, les optimise pour différents traitements, pose des index, les cluster et termine par un VACCUM ANALYZE.
Une fois le traitement effectué, ces données seront exploitées par des services les consultant.
La préparation des données demande beaucoup beaucoup beaucoup de lecture / écriture de données sur le disque, il faut importer une large quantité, les réorganiser, les trier, virer le superflux, poser les index, cluster, vacuum etc. pour enfin aboutir au résultat.
Je me suis dis que pour cette phase, il serait bon de stocker la base de donnée en question sur un disque SSD que j'ai justement en ma possession, le temps des traitements, et ensuite une fois le tout "compilé" la réimporter sur le disque principale (un truc classique, 7.200 tr/min).
Comment effectuer cette opération ?
J'ai pensé à créer un tablespace :
Où "/ssd_data" monte le disque SSD.
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLESPACE pgsql_ssd LOCATION '/ssd_data/pg_data';
Puis créer une base de donnée sur ce tablespace de la sorte :
Et une fois les traitements, index, cluster et tout le merdier effectué qui demande beaucoup d'échange avec le disque, exécuter un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE DATABASE bidule TABLESPACE pgsql_ssd
C'est jouable ou pas ? Est-ce que ça va tout copier ou il faudra reconstruire les index, analyze etc. ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER DATABASE bidule SET TABLESPACE 'my_default_namespace'
Merci pour vos réponses
A bientôt
Partager