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 07/01/2019 12:24:07

pitpoule
Membre

Gestion des locks et des tables héritées

Bonjour,

Comment sont gérés les locks pour une table mère et ses filles (PG 9.6) ?
J'ai une table A (mère) et deux tables filles A1 et A2. j'ai constate que si je lance la création d'un index sur la table A1, il attend un verrou de la table A2.

Merci

Hors ligne

#2 07/01/2019 12:35:37

gleu
Administrateur

Re : Gestion des locks et des tables héritées

Avoir la définition des tables pourrait aider à donner une réponse.


Guillaume.

Hors ligne

#3 07/01/2019 12:54:09

pitpoule
Membre

Re : Gestion des locks et des tables héritées

Je comprends bien mais je ne souhaite pas vraiment mettre des informations détaillées de schéma sur un forum public...ce que je peux vous donner comme infos qui me paraissent intéressantes

La table mère
CREATE TABLE A (
    id bigint,
    struct_id int,
   ....
   ....
);

Les tables filles
CREATE TABLE A_%s
CHECK (struct_id = %s),
CONSTRAINT my_pkey PRIMARY KEY (struct_id, id)
) INHERITS (A);


La table mère possède un trigger qui permet de créer les tables filles
Les tables files ont un ensemble d'index et leurs propres triggers.

On ne travaille quasiment jamais sur la table mère, tous les traitement sont lancés directement sur les tables filles.

Hors ligne

#4 07/01/2019 15:12:45

gleu
Administrateur

Re : Gestion des locks et des tables héritées

Je comprends que vous ne puissiez pas fournir votre schéma original. Dans ce cas, créez un schéma de tests. La question est bien trop vague actuellement pour pouvoir vous répondre simplement.

Avec un simple jeu de tests comme celui-ci :

create table a (id integer);
create table a1 () inherits (a);
create table a2 () inherits (a);
begin;
create index on a1 (id);

Je ne constate aucun verrou sur a2.

La création d'un index nécessite un verrou en écriture sur la table indexée (donc ici a1, en mode ShareLock). Je ne vois aucune raison pour laquelle la commande aurait besoin de verrouiller aussi a2 (ou toute autre table fille).


Guillaume.

Hors ligne

#5 07/01/2019 16:14:22

pitpoule
Membre

Re : Gestion des locks et des tables héritées

Je vais essayer de reproduire le phénomène sur un schéma de test... et je reviendrai avec plus de détails.

Merci pour le retour en tout cas !

Hors ligne

Pied de page des forums