|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 17 ![]() |
Bonjour,
je commence un projet sur Postgresql : le but est de copier des transactions d'un serveur vers un autre, il y a 300000 lignes à copier. Dans l'existant, on utilise le langage C (libpq) pour se connecter au Serveur distant et copier les transactions ligne par ligne. Ma question est de savoir si le c++ est meilleur que le C pour ce genre de replication. Puis comment faire pour copier les lignes par bloc. Merci de votre aide |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 17 ![]() |
Il faut noter que les tables ne sont pas sur le même serveur et n'ont pas les mêmes structures.
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 17 ![]() |
Merci les gars, ne vous bousculez pas, y a de la place pour tout le monde
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Quand tu dis "meilleur" on va supposer que ton critère est la vitesse d'exécution (par opposition à d'autres critères comme la concision du programme, la facilité de maintenance, les dépendances avec des librairies etc...).
Voilà une opinion: par rapport aux éléments que tu donnes, passer du C au C++ ne va rien apporter du tout à en vitesse ton traitement. Zéro intérêt. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 17 ![]() |
Exactement !
C'est la vitesse d'execution qui m'interesse. Je veux savoir comment copier les lignes d'une table à une autre. Sachant que les tables ne sont pas sur le meme serveur et n'ont pas la meme structure. Pis, je veux savoir comment copier ces lignes le plus rapidement possible. |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Développeur J2EE Inscription : octobre 2007 Messages : 10 ![]() |
Il me semble que vous faites les transactions lignes par lignes ?
Désactivez l'autocommit et utiliser une prepared statement devrait améliorer la performance, quitte à valider les transactions toutes les 100 ou 1000 enregistrements. En effet ce qui est lent dans votre cas :
Si cela ne suffit pas, il est également possible de :
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 17 ![]() |
On utilise des prepared statement et on fait un commit final.
Sur le premier serveur, on a une table A qui est alimentée par des lignes Sur la table A y a un trigger qui copie toutes les nouvelles lignes de A vers une table B. En suite mon bach C va copier les lignes de la table B vers un autre serveur (table C) et supprime les lignes de B. Ce que cherche s'est amélioré le Bach C, en faisant un COPY ou en copiant les lignes par bloc. Pour chacune de ces solutions, j'ai un problème : De nouvelles lignes peuvent etre ajouté à ma table B juste après le COPY, et je vais certainement les supprimer par mon bach C. Pour le transfere des lignes par bloc, techniquement je ne vois pas comment faire. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com