PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 05/07/2011 14:44:33

Gold.Strike
Membre

Performances et optimisations de BDD PostgreSQL

Bonjour,

J'aurais besoin de vos avis et conseils concernant les éventuelles optimisations à apporter aux BDD que nous utilisons sur notre serveur.

- BDD "Prestataire" :
Nous avons une première base de données, qui représente une "copie" des données récupérées chez un prestataire.
Elle est stockée sur notre serveur.
Cette base est mise à jour quotidiennement, et contient plus de 1.5 Go, qui sont réparties dans une dizaine de tables.

- BDD "Mère" :
C'est notre base de données "principale".
Elle contient des données que nous avons saisies et des données que nous récupérons via un processus de synchronisation depuis la base "prestataire".
Elle est stockée sur notre serveur.
Comme nous y stockons des blobs (principalement pour stocker des images), elle est plus conséquente que la base "prestataire" et devrait contenir 2 Go, pour environ 150 tables.

- BDD "Client" :
C'est la base de données du client. Il y en a donc autant qu'il y a de clients.
Elle est stockée sur le poste d'un client, sur le serveur d'un client, ou sur notre serveur.
Cette base est actuellement mise à jour "manuellement", car le processus de synchronisation BDD "Mère" vers "Client" n'est pas finalisé.
Elle contient les mêmes informations que la base "mère" et les données saisies par les clients : 2.5 Go pour environ 150 tables.

J'aurais donc plusieurs questions concernant cette configuration :

- Y a t'il des optimisations particulières à apporter à une base mise à jour une à fois par jour via des webservices?

- Le premier "remplissage" de la base "prestataire" prends environ 2 jours. La synchronisation entre la base "prestaire" et la base "mère" se charge de mettre de données à notre format. Après 10 jours d'exécution, cette étape n'est toujours pas terminée. Il y a certainement des optimisations à apporter dans le code, mais y aurait il également des optimisations à apporter au niveau du serveur Postgre?

- Nous hébergons les bases de certains clients qui n'ont pas de serveur et qui ont besoin de pouvoir partager les données. Du coup, nous avons actuellement une dizaine de bases sur notre serveur. Cela peut il impacter sur les performances de Postgre? (sachant que toutes les bases ne sont pas "utilisées" en même temps)

Je précise que je n'y connais pas grand chose en maintenance de base de données, et que si le travail à faire est important nous pourrions envisager une collaboration de quelques jours pour formation + optimisation...

Merci d'avances pour vos remarques et suggestions.

Hors ligne

#2 05/07/2011 16:22:51

gleu
Administrateur

Re : Performances et optimisations de BDD PostgreSQL

Y a t'il des optimisations particulières à apporter à une base mise à jour une à fois par jour via des webservices?

Bien penser à faire un VACUUM ANALYZE après l'alimentation. En dehors de ça, non, pas particulièrement.

Il y a certainement des optimisations à apporter dans le code, mais y aurait il également des optimisations à apporter au niveau du serveur Postgre?

Peut-être, mais c'est impossible à dire sans avoir plus d'infos.

Cela peut il impacter sur les performances de Postgre?

Oui et non. Désolé de faire ce type de réponse mais c'est vraiment dû à vos questions. C'est beaucoup trop global pour pouvoir dire plus.

À mon avis, vous avez intérêt rapidement en début de processus à faire une formation sur PostgreSQL, ça sera beaucoup plus rapide et intéressant que quelques questions posées sur un forum.


Guillaume.

Hors ligne

#3 05/07/2011 18:05:50

Gold.Strike
Membre

Re : Performances et optimisations de BDD PostgreSQL

gleu a écrit :

Y a t'il des optimisations particulières à apporter à une base mise à jour une à fois par jour via des webservices?

Bien penser à faire un VACUUM ANALYZE après l'alimentation. En dehors de ça, non, pas particulièrement.

Mais dans le cas ou l'alimentation dure plusieurs jours? Il faut exécuter un script qui lance réguliérement ces opérations?

gleu a écrit :

Il y a certainement des optimisations à apporter dans le code, mais y aurait il également des optimisations à apporter au niveau du serveur Postgre?

Peut-être, mais c'est impossible à dire sans avoir plus d'infos.

Cela peut il impacter sur les performances de Postgre?

Oui et non. Désolé de faire ce type de réponse mais c'est vraiment dû à vos questions. C'est beaucoup trop global pour pouvoir dire plus.

À mon avis, vous avez intérêt rapidement en début de processus à faire une formation sur PostgreSQL, ça sera beaucoup plus rapide et intéressant que quelques questions posées sur un forum.

Je suis assez d'accord avec vous.
Le problème est que le projet existe depuis 1 an 1/2, et lorsque je suis arrivé les choix techniques avaient déja été faits : langage, framework, bdd, ...
Depuis je me forme donc au fure et à mesure, mais sans maitriser certaines choses importantes je pense.

L'idée d'une formation est donc intéressante, si elle peut couvrir l'ensemble de mes besoins.

- Du coup vaut il mieux suivre une formation "générique" ou faire intervenir un prestataire pour me former et optimiser les bases utilisées?
- Assurez vous vous mêmes des formations ou pourriez vous m'orienter vers une structure adaptée?

Merci,

Dernière modification par Gold.Strike (05/07/2011 18:06:59)

Hors ligne

#4 05/07/2011 21:14:30

gleu
Administrateur

Re : Performances et optimisations de BDD PostgreSQL

Mais dans le cas ou l'alimentation dure plusieurs jours? Il faut exécuter un script qui lance réguliérement ces opérations?

Une alimentation qui prend deux jours pour une base de 2 Go, j'ai un peu de mal à comprendre comment c'est possible pour être franc. Mais bon, en tout état de cause, après une alimentation, qu'elle qu'en soit la durée, un VACUUM ANALYZE ne peut pas faire de mal.

Du coup vaut il mieux suivre une formation "générique" ou faire intervenir un prestataire pour me former et optimiser les bases utilisées?

J'aurais tendance à dire les deux. La formation générique couvrira certainement plus de choses qu'un transfert de compétences réalisé par un prestataire. Ce "plus de choses" est un atout car, même si vous avez un problème spécifique aujourd'hui, une fois ce problème réglé, d'autres arriveront. Et seule une formation complète vous permettra de vous aider à être plus généraliste (tout en sachant évidemment qu'une formation ne fait pas devenir expert en trois ou quatre jours, ça demande du travail ensuite). Faire intervenir un prestataire est une bonne chose ensuite car vous pourrez comprendre ce que ce dernier fait. Vous aurez suffisamment de connaissances pour ne pas vous en laisser raconter.

Assurez vous vous mêmes des formations ou pourriez vous m'orienter vers une structure adaptée?

Je ne sais pas trop ce que vous entendez par "vous" smile Si c'est la communauté, non. Si c'est l'association française, non plus. Si c'est personnellement, oui, au sein de la société pour laquelle je travaille. Mais qu'on soit bien clair, ce n'est pas la seule société qui propose des formations intéressantes sur PostgreSQL. Le seul conseil que je vous donnerais, c'est de bien faire attention à la société que vous choisirez. Il est très simple de trouver plein de sociétés sur Internet qui proposent des formations PostgreSQL avec un contenu très alléchant, il est aussi très simple de tomber sur des gens qui n'y connaissent rien. Demander le nom du formateur et vérifier s'il fait bien partie de la communauté PostgreSQL. J'ai cent fois plus confiance en une personne qui fait partie de la communauté qu'en quelqu'un d'autre. Je le dis d'autant plus librement que la formation que j'ai subi il y a plus d'une dizaine d'années était donné par quelqu'un de très sympathique qui avait gentimment copié le manuel de PostgreSQL pour ses slides et qui lisait gentimment ses slides sans infos supplémentaires. Bref, gare aux gens pas sérieux smile


Guillaume.

Hors ligne

#5 06/07/2011 10:09:00

Gold.Strike
Membre

Re : Performances et optimisations de BDD PostgreSQL

gleu a écrit :

Mais dans le cas ou l'alimentation dure plusieurs jours? Il faut exécuter un script qui lance réguliérement ces opérations?

Une alimentation qui prend deux jours pour une base de 2 Go, j'ai un peu de mal à comprendre comment c'est possible pour être franc. Mais bon, en tout état de cause, après une alimentation, qu'elle qu'en soit la durée, un VACUUM ANALYZE ne peut pas faire de mal.

En fait cette étape corresponds à la première phrase de récupération des données au près d'un prestataire. Nous récupérons des données via des webservices, et la taille de la base après import est de 1.5 Go. La durée est elle effectivement de 2 jours. Par la suite, une la phase de mise à jour des données sera beaucoup plus rapide et exécutée une à 2 fois par jour...

Au cours du processus de synchronisation entre la base "prestataire" et la base "mère", des données sont écrites sur les 2 bases :
- les données insérées réellement sur la base "mère"
- une table de "synchronisation", qui contient les relations entre les identifiants des 2 bases, sur la base "prestataire"
Comme cette étape est relativement longue, il faudrait également exécuter périodiquement des VACUUM/ANALYZE non?
Est il mieux d'automatiser cette tâche après la mise à jour de chaque table ou l'insertion de n lignes?

gleu a écrit :

Du coup vaut il mieux suivre une formation "générique" ou faire intervenir un prestataire pour me former et optimiser les bases utilisées?

J'aurais tendance à dire les deux. La formation générique couvrira certainement plus de choses qu'un transfert de compétences réalisé par un prestataire. Ce "plus de choses" est un atout car, même si vous avez un problème spécifique aujourd'hui, une fois ce problème réglé, d'autres arriveront. Et seule une formation complète vous permettra de vous aider à être plus généraliste (tout en sachant évidemment qu'une formation ne fait pas devenir expert en trois ou quatre jours, ça demande du travail ensuite). Faire intervenir un prestataire est une bonne chose ensuite car vous pourrez comprendre ce que ce dernier fait. Vous aurez suffisamment de connaissances pour ne pas vous en laisser raconter.

Idéalement, c'est vrai qu'il faudrait mieux commencer par une formation générique avant de faire appel à un prestataire...
Mais en raison du contexte économique (petite structure = peu de moyens) et de la nécessité d'avancer le plus rapidement possible, je pense qu'il serait quand même plus judicieux de faire d'abord appel à un prestataire.
Cela devrait permettre d'apporter des réponses aux questions qui sont les notres, et de m'orienter si besoin vers une formation adaptée.

Pour ce qui est du choix du prestataire, je pense de tout façon privilégier la communauté dans la mesure ou j'ai toujours pu obtenir des réponses aux questions posées. Je suppose donc que différents membres sont susceptibles de m'apporter ce service.

Dernière modification par Gold.Strike (06/07/2011 10:09:32)

Hors ligne

#6 06/07/2011 12:12:17

cedric
Membre

Re : Performances et optimisations de BDD PostgreSQL

Gold.Strike a écrit :

- Y a t'il des optimisations particulières à apporter à une base mise à jour une à fois par jour via des webservices?

Pas particulièrement non, en fonction de la version du serveur PostgreSQL, il est possible d'améliorer la configuration pour la maintenance automatique. Parfois utile de procéder à un VACUUM FREEZE, mais tout dépend de la charge prévue sur le serveur, du système de disques, ...

Gold.Strike a écrit :

- Le premier "remplissage" de la base "prestataire" prends environ 2 jours. La synchronisation entre la base "prestaire" et la base "mère" se charge de mettre de données à notre format. Après 10 jours d'exécution, cette étape n'est toujours pas terminée. Il y a certainement des optimisations à apporter dans le code, mais y aurait il également des optimisations à apporter au niveau du serveur Postgre?

Probablement, mais sur de telles durées le code/process doit y être pour beaucoup.

Gold.Strike a écrit :

- Nous hébergons les bases de certains clients qui n'ont pas de serveur et qui ont besoin de pouvoir partager les données. Du coup, nous avons actuellement une dizaine de bases sur notre serveur. Cela peut il impacter sur les performances de Postgre? (sachant que toutes les bases ne sont pas "utilisées" en même temps)

A partir d'un certain nombre de BDD sur un serveur il peut y avoir un impact sur les performances, *même* lorsque celle-ci ne sont pas utilisées. Jusqu'ici le soucis apparaît bien au-delà de 10bdd, mais c'est à prendre en compte et il s'agit juste d'améliorer le paramétrage du serveur en conséquence.

Gold.Strike a écrit :

L'idée d'une formation est donc intéressante, si elle peut couvrir l'ensemble de mes besoins.
- Du coup vaut il mieux suivre une formation "générique" ou faire intervenir un prestataire pour me former et optimiser les bases utilisées?
- Assurez vous vous mêmes des formations ou pourriez vous m'orienter vers une structure adaptée?

2ndQuadrant propose des formations en français (également en intra-entreprise), je vous suggère de commencer par l'achat des 2 livres écrit par les consultants de 2ndQuadrant: http://www.2ndquadrant.com/books/

* PostgreSQL 9 Administration Cookbook (Greg Smith), très pratique, il contient des 'recettes' et autre trucs et astuces pour PostgreSQL. Tous niveaux.
* PostgreSQL 9.0 High Performance (Simon Riggs & Hannu Krosing), très bonne référence pour l'optimisation, proche du matériel et du système d'exploitation. Niveau avancé. A noter que le livre a été traduit en français (merci Guillaume et Thomas): http://www.pearson.fr/livre/?GCOI=27440100863920


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

#7 29/07/2011 17:44:52

Gold.Strike
Membre

Re : Performances et optimisations de BDD PostgreSQL

Bonjour, je me permets de relancer ce topic pour avoir votre avis.

Nous avons en effet fait développé la "synchronisation" entre la la base "Prestataire" et la base "Mère" par une société de services. La base "Prestataire" se compose d'une quinzaine de tables et fait environ 2 Go. La synchronistaion adapte les données du prestataire à notre format de base de données et alimente ensuite notre base "Mère".

Le problème est qu'après 15 jours d'exécution, la synchro n'est toujours pas terminée. La société de services se justifie en distant que le nombre de données à synchroniser est "trop important" et que nous devrions prendre moins de données chez le prestataire pour optimiser les performances.

- Que pensez vous de cette justification?
- Avez vous déja développée une interface de synchronisation ressemblant à cela, et combien de temps vous a t'il fallu pour synchroniser 2 Go?

Merci,

Hors ligne

#8 29/07/2011 22:11:51

cedric
Membre

Re : Performances et optimisations de BDD PostgreSQL

Gold.Strike a écrit :

Bonjour, je me permets de relancer ce topic pour avoir votre avis.

Nous avons en effet fait développé la "synchronisation" entre la la base "Prestataire" et la base "Mère" par une société de services. La base "Prestataire" se compose d'une quinzaine de tables et fait environ 2 Go. La synchronistaion adapte les données du prestataire à notre format de base de données et alimente ensuite notre base "Mère".

Le problème est qu'après 15 jours d'exécution, la synchro n'est toujours pas terminée. La société de services se justifie en distant que le nombre de données à synchroniser est "trop important" et que nous devrions prendre moins de données chez le prestataire pour optimiser les performances.

- Que pensez vous de cette justification?
- Avez vous déja développée une interface de synchronisation ressemblant à cela, et combien de temps vous a t'il fallu pour synchroniser 2 Go?

Merci,

Je n'ai pas repris l'historique du fil, mais synchroniser 2 GO n'est pas censé prendre des jours, en fonction du process de transformation des données cela impacte mais bon, 2Giga c'est pas la mort. cela devrait prendre quelques heures. (encore une fois cela dépend du contexte et il est possible que la durée soit justifiée, dur a dire)

15 jours pour la synchro de 2GB, il y a tres probablement un soucis.


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

Pied de page des forums