-
Disques & traitements
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 :
Code:
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 :
Code:
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 :
Code:
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
-
Salut
En général, le SGBD n'utilise le disque...
- (pour l'écriture) que si la RAM (ou la partie allouée) est pleine, si un utilisateur lui force la main ou certaines commandes modifiant la structure de la BD.
- (pour la lecture) que si les pages de données ne sont pas dans la RAM
Mais si ce comportement ne vous satisfait pas, vous pouvez utiliser un lien symbolique, dans le répertoire DATA de PostgreSQL, pointant sur un répertoire du SSD.
@+
-
Changer le tablespace par défaut d'une base existante n'agit que sur les créations d'objets dans le futur. C'est purement déclaratif.