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

Langage SQL Discussion :

Procédures stockées à l'intérieur d'une transaction


Sujet :

Langage SQL

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut Procédures stockées à l'intérieur d'une transaction
    Bonjour,

    Un doute me taraude et j'aimerai confirmation . Quelque soit le SGBD

    Dans le cadre d'opération de masse ,
    Soit un programme qui démarre une transaction
    appelle dans une boucle
    : des procédures stockées et autres instructions SQL
    puis valide cette transaction

    Est-ce cohérent ? Quel serait le meilleur niveau d'isolation ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 769
    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 769
    Points : 52 722
    Points
    52 722
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Dans le cadre d'opération de masse ,
    Soit un programme qui démarre une transaction
    appelle dans une boucle
    : des procédures stockées et autres instructions SQL
    puis valide cette transaction

    Est-ce cohérent ? Quel serait le meilleur niveau d'isolation ?
    1) démarrer une transaction côté client et la finaliser côté serveur n'est pas très cohérent. Le mieux est de démarrer et de finaliser côté serveur. Cela minimise la durée des verrous, donc augmenter la fluidité transactionnelle et par conséquent diminue la contention (meilleurs concurrence d'accès).

    2) le meilleur niveau d’isolation dépend exclusivement du traitement à opérer. Lisez l'article que j'ai écrit à ce sujet, et faites les exemples. Vous allez comprendre.... http://sqlpro.developpez.com/isolation-transaction/

    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/ * * * * *

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour
    Citation Envoyé par SQLpro Voir le message
    1) démarrer une transaction côté client et la finaliser côté serveur n'est pas très cohérent. Le mieux est de démarrer et de finaliser côté serveur. Cela minimise la durée des verrous, donc augmenter la fluidité transactionnelle et par conséquent diminue la contention (meilleurs concurrence d'accès).
    j'ai du mal m'exprimer , la transaction est aussi finalisée côté client (c'est sûr le tout serait bien plus à sa place coté serveur).
    mais :
    1. le programme client sera sur le serveur
    2. ce n'est qu'une opération (même de masse), ponctuelle (j'espérais même la faire hors ligne)




    2) le meilleur niveau d’isolation dépend exclusivement du traitement à opérer. Lisez l'article que j'ai écrit à ce sujet, et faites les exemples. Vous allez comprendre.... http://sqlpro.developpez.com/isolation-transaction/
    Celui là , j'étais passé à coté
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  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 769
    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 769
    Points : 52 722
    Points
    52 722
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour

    j'ai du mal m'exprimer , la transaction est aussi finalisée côté client (c'est sûr le tout serait bien plus à sa place coté serveur).
    mais :
    1. le programme client sera sur le serveur
    2. ce n'est qu'une opération (même de masse), ponctuelle (j'espérais même la faire hors ligne)
    1) faire une transaction démarrée et finalisé côté client est encore pire ! Placez là dans une proc stock.

    2) mettre le programme client sur le serveur est une aberration. SQL Server doit être installé sur un serveur dédié et aucune autre application ne doit y être installée à côté, pas même un antivirus.

    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par SQLpro Voir le message
    1) faire une transaction démarrée et finalisé côté client est encore pire ! Placez là dans une proc stock.
    la procédure stockée existe déjà et fait le plus gros du travail ! mais ce pour 1 enregistrement
    c'est le coté exceptionnel des autres instructions nécessaires uniquement lors de ce traitement de masse (200 ou 300 enregistrements) qui m'apporte ce doute .
    je sais, je pourrais mettre un paramètre à la procédure stockée genre TRAITEMENT_DE_MASSE oui/non et inclure ces instructions dans un if

    2) mettre le programme client sur le serveur est une aberration. SQL Server doit être installé sur un serveur dédié et aucune autre application ne doit y être installée à côté, pas même un antivirus.
    Mais je n'ai jamais parlé de SQLServer en fait je parlais d'une manière plus générale, mais si l'on doit parler du particulier : il s'agit de Firebird

    Après plusieurs tests (même si c'est loin d'être optimal) , j'ai l'impression que cela reste cohérent malgré tout même si cela reste iconoclaste
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/04/2014, 17h26
  2. Réponses: 2
    Dernier message: 16/02/2007, 18h49
  3. Appeler une procédure stockée a partir d'une autre
    Par wodel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/11/2006, 14h07
  4. [Procédure stockée] Comment travailler sur une liste de ...
    Par WwiloO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 11h22
  5. Réponses: 2
    Dernier message: 10/12/2004, 15h43

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