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 :
CREATE TABLESPACE pgsql_ssd LOCATION '/ssd_data/pg_data';
Où "/ssd_data" monte le disque SSD.
Puis créer une base de donnée sur ce tablespace de la sorte :
CREATE DATABASE bidule TABLESPACE pgsql_ssd
Et une fois les traitements, index, cluster et tout le merdier effectué qui demande beaucoup d'échange avec le disque, exécuter un :
ALTER DATABASE bidule SET TABLESPACE 'my_default_namespace'
C'est jouable ou pas ? Est-ce que ça va tout copier ou il faudra reconstruire les index, analyze etc. ?
Merci pour vos réponses 
A bientôt
Partager