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 27/05/2011 09:34:07

mich30
Membre

blocage pg_dump et pg_dump_all

Quand je  lances des pg_dump, et surtout pg_dump_all, ça bloque toutes modifications des tables tant que l'opération n'est pas terminée.
merci de confirmer est ce normal ?

Hors ligne

#2 27/05/2011 09:40:05

Marc Cousin
Membre

Re : blocage pg_dump et pg_dump_all

Ce n'est ni vrai, ni normal.


Marc.

Hors ligne

#3 30/05/2011 09:45:48

mich30
Membre

Re : blocage pg_dump et pg_dump_all

ca bloque sur les create table
genre create table ma table as select ...
Si ce n'est pas normal existe t'il un parametre de
configuration
merci!

Hors ligne

#4 30/05/2011 11:37:53

Marc Cousin
Membre

Re : blocage pg_dump et pg_dump_all

Ah, ok.
Oui, effectivement, pg_dump bloque les modifications de structure des tables pendant son exécution. Comme n'importe quel SELECT d'ailleurs. Ce n'est pas désactivable.


Marc.

Hors ligne

#5 30/05/2011 11:55:29

mich30
Membre

Re : blocage pg_dump et pg_dump_all

comment puis je contourner ???
existe t'il une commande qui annule toutes les transactions
(requete en cours des utilisateurs )
de tous le utilisateurs afin que le pg_dump puisse se lancer automatiquement ?

Comment font les autres utilisateurs qui sauvegarde a 3 heures du matin mais
un utilisateur a lancer une  une grosse requete qui est en train de tourner ?
merci

Dernière modification par mich30 (30/05/2011 11:56:43)

Hors ligne

#6 30/05/2011 15:01:37

Marc Cousin
Membre

Re : blocage pg_dump et pg_dump_all

Si la grosse requête ne fait que lire des données ou en écrire, ils n'ont pas de problème.

Si ils lancent des scripts de réorganisation de base en même temps que le dump, ils sont coincés. Ce n'est pas le dump le problème, c'est les modifications de schéma (alter table, vacuum full, reindex…)


Marc.

Hors ligne

#7 30/05/2011 15:57:21

mich30
Membre

Re : blocage pg_dump et pg_dump_all

1)

donc il vaut mieux faire

create table t1

puis faire des inserts de la grosse table vers t1

plutot
que
create table matablet1 as select * from grossetable


2)
j'ai le autovacum a on ce n'est pas genant ?

merci

Hors ligne

#8 30/05/2011 16:05:58

Marc Cousin
Membre

Re : blocage pg_dump et pg_dump_all

1) si c'est en deux transactions séparées oui, vous tiendrez des verrous moins longtemps (seulement pendant la durée du create table)
2) Non, l'autovacuum libère ses verrous et arrête ses traitements si il se rend compte qu'il gêne.


Marc.

Hors ligne

#9 30/05/2011 16:08:12

mich30
Membre

Re : blocage pg_dump et pg_dump_all

ok merci

Hors ligne

#10 31/05/2011 15:30:22

SQLpro
Membre

Re : blocage pg_dump et pg_dump_all

mich30 a écrit :

Comment font les autres utilisateurs qui sauvegarde a 3 heures du matin mais
un utilisateur a lancer une  une grosse requete qui est en train de tourner ?

La sauvegarde à chaud est quelque chose de complexe. Par exemple elle n'est toujours pas implémentée sous MySQL.
Pour vous donner un exemple de ce que fais SQL Server qui possède un des algo les plus avancés sur le sujet, il procède de cette manière :
1) avant de démarrer la sauvegarde il met une marque dans le journal de transaction.
2) il sauvegarde les pages de données de manière binaire, sans aucun verrouillage en commençant par les pages les moins modifiées depuis les fichiers et en finissant par les pages les plus modifiées depuis la mémoire (pour calculer cela il conserve des statistiques en mémoire pendant toute la durée de vie du serveur, stats qui sont remise à zéro à chaque sauvegarde)
Les pages vides ou supprimées sont ignorées.
3) il sauvegarde le journal des transactions, depuis la marque qu'il a fait et jusqu'à la fin du journal.

Ainsi, aucun verrouillage ne ralentis la production. Seule les ressources utilisées par le processus de sauvegarde ralentissent globalement le serveur, et notamment les écritures disques des fichiers de sauvegardes.
Comme dans SQL Serveer les CREATE TABLE, ALTER et DROP sont journalisés, aucune transaction n'est perturbée !

Lors de la restaurations, le processus est le suivant :
1) recréation des fichiers originaux vide.
2) lecture des pages et replacement des pages dans les fichiers
3) lecture du journal de transaction et application des transactions validées.

Hélas, PG a encore du boulot pour arriver à ce niveau... Mais comparer à MySQL, y'a pas photo....

A +

Dernière modification par SQLpro (31/05/2011 15:38:40)


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

#11 31/05/2011 16:03:26

gilles
Membre

Re : blocage pg_dump et pg_dump_all

Wouah ! SQL serveur est vraiment impressionnant, c'est vrai que PostgreSQL c'est un peu limite des fois, hein. Moi je sais pas ce que t'en pense SQLPro mais le mieux se serait d'aller sur un forum dédié à SQL Serveur, parce que là y a plus rien a dire, moi je suis convaincu. En plus ici ils comprennent rien.

Aller à bientôt sur http://forum.sqlserver.fr !

Sérieux ca commence à être gonflant.

Dernière modification par gilles (31/05/2011 16:05:16)

Hors ligne

#12 31/05/2011 17:07:28

SQLpro
Membre

Re : blocage pg_dump et pg_dump_all

Je ne voit pas ce qu'il y a de gonflant à comparer des techniques mise en œuvre. Chacune à ses limites, ses avantages et inconvénients.
Il s'agit juste de replacer l'outil à son usage et comprendre ce que font les autres permet de choisir ce qu'il y a de mieux.
Par exemple si la base de données doit en permanence subir des ordres DDL la sauvegarde PG sera un point bloquant.
Il faut donc, soit déporter ses commandes DDL à un moment hors sauvegarde, soit changer de SGBDR.
La plupart des SGBDR, y compris PG et SQL Server s'inspirent de réalisation déjà existantes pour s'améliorer...
Il n'y a donc aucune honte à montrer cela. Ce n'est pas du dénigrement, comme certains intégristes voudrait le faire croire.

PG a fait de grand progrès depuis que je le connais (c'est à dire depuis 1997 - à l'époque PostGres95)...
Et aujourd'hui, depuis la V9, c'est un SGBDR que je recommande pour un grande partie des applications de gestion non critique (c'est à dire la majeure partie)...

Par exemple dans ce post, j'ai commis le crime de défendre PG...  http://www.developpez.net/forums/d10844 … se-donnee/

A +


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

#13 31/05/2011 17:34:49

orgrim
Membre

Re : blocage pg_dump et pg_dump_all

Salut,

Je pense que l'objet initial du thread n'est pas de comparer PostgreSQL avec d'autres sur la sauvegarde, mais plutot d'aider mich30 à faire réussir sa sauvegarde. Ce qui me fait dire que vos réponses sont un peu hors sujet, comme souvent, et je comprends la fatigue de gilles.

Si vous tenez vraiment à convertir des utilisateurs à SQL Server, bon courage, la plupart des membres actives ici sont de fervent(e)s défenseur(e)s du Logiciel Libre et de l'Open Source. Dans ce cas, ouvrez des threads séparés plutôt que de perturber les fils existants.

Merci d'avance.

PS: tiens, la sauvegarde que vous décrivez ressemble beaucoup à la sauvegarde PITR de PostgreSQL (http://docs.postgresql.fr/9.0/continuous-archiving.html), si vous voulez continuer sur ce sujet, lancez un fil à côté smile

Hors ligne

#14 31/05/2011 18:01:03

gilles
Membre

Re : blocage pg_dump et pg_dump_all

Petite précision historique; en 1997 il s'agissait déjà de PostgreSQL 6.0, enfin ca n'a pas été trop dur vu qu'on est passé directement de la version 1.x a la version 6.x :-) C'est vrai qu'à l'époque on était pas nombreux.

Hors ligne

#15 01/06/2011 19:32:13

SQLpro
Membre

Re : blocage pg_dump et pg_dump_all

orgrim a écrit :

PS: tiens, la sauvegarde que vous décrivez ressemble beaucoup à la sauvegarde PITR de PostgreSQL (http://docs.postgresql.fr/9.0/continuous-archiving.html), si vous voulez continuer sur ce sujet, lancez un fil à côté smile

C'est normal, les mécanismes des journalisation des transactions des SGBDR sont tous basés sur le même algo de base : ARIES (sauf MySQL), suite aux travaux de Gray et Bernstein sur le sujet, vers la fin des années 70...
A lire :
http://portal.acm.org/citation.cfm?id=128770
http://www.cs.uwaterloo.ca/~david/cs448/aries-mohan.pdf

A +


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

#16 03/06/2011 09:53:18

orgrim
Membre

Re : blocage pg_dump et pg_dump_all

*BLONG* Raté... Un autre fil, c'est pourtant pas dur ! De mon coté je m'arrete là sur ce fil, vu votre mauvaise volonté et votre attitude.

Hors ligne

Pied de page des forums