IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

UPDATE exécutés en parallèle


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut UPDATE exécutés en parallèle
    Bonjour,
    Je me pose une question que voici:

    Ma table est un listing de personnes avec leurs propriétés.

    Exemple de schema pour la table personne:
    personne_id (PK), pr_1_id (FK), pr_2_id (FK)

    Est-il possible de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE personne SET pr_1_id =10 WHERE personne_id =1
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE personne SET pr_2_id =50 WHERE personne_id =1
    simultanément?

    J'imagine qu'il y a une table lock lors de l'exécution du premier update et que de ce fait le second UPDATE ira en ERROR ,est-ce bien le cas?
    Si oui, existe-il un moyen de contourner, sans risque?
    Mon objectif est d'augmenter les perfs d'intégration de données en exécutant des jobs écrivant (update) dans la même table, en // .

    Merci d'avance pour l'aide .

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    La virgule est votre amie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE personne
       SET pr_1_id     = 10
         , pr_2_id     = 50
     WHERE personne_id = 1;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut
    Citation Envoyé par Waldar Voir le message
    La virgule est votre amie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE personne
       SET pr_1_id     = 10
         , pr_2_id     = 50
     WHERE personne_id = 1;
    Si seulement je pouvais faire ça...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par vinch999 Voir le message
    Si seulement je pouvais faire ça...
    Qu'est ce qui vous en empêche ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Je n'y avais pas réfléchi, mais je suppose qu'il s'agit de deux transactions distinctes par deux personnes distinctes dans une application ou deux jobs différents.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut
    Pour clarifier, j'effectue ces updates via des jobs TALEND. je ne peux pas merger les updates...
    Je veux améliorer les perfs d'exécution des jobs en les parallélisant.
    Et j'arrive donc potentiellement à cette problématique.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par vinch999 Voir le message

    Est-il possible de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE personne SET pr_1_id =10 WHERE personne_id =1
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE personne SET pr_2_id =50 WHERE personne_id =1
    simultanément?
    Oui

    J'imagine qu'il y a une table lock lors de l'exécution du premier update et que de ce fait le second UPDATE ira en ERROR ,est-ce bien le cas?
    Vous imaginez mal... Il y a effectivement un verrou posé par chacune des sessions. Donc l'un attendra que l'autre finisse et les commandes s’exécuteront en séquence.

    Si oui, existe-il un moyen de contourner, sans risque?
    heureusement non !!!

    Mon objectif est d'augmenter les perfs d'intégration de données en exécutant des jobs écrivant (update) dans la même table, en // .
    Faites des tests !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Vous imaginez mal... Il y a effectivement un verrou posé par chacune des sessions. Donc l'un attendra que l'autre finisse et les commandes s’exécuteront en séquence.
    Ok merci pour l'info c'est ce point qui m'inquiétait.

Discussions similaires

  1. Exécution VIs parallèles
    Par zibzab dans le forum LabVIEW
    Réponses: 5
    Dernier message: 14/05/2013, 15h46
  2. Exécution en parallèle de plusieurs procédures
    Par sofiane2011 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 25/02/2011, 15h56
  3. Exécution en parallèle avec & ?
    Par MSM_007 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 21/06/2009, 01h00
  4. Threads s'exécutant en parallèle
    Par Emyleet dans le forum MFC
    Réponses: 3
    Dernier message: 09/06/2008, 10h53
  5. [Débutant] Requête Insert ou Update exécutée par l’objet ADO
    Par lazerdev dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/05/2007, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo