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

SQL Firebird Discussion :

execute statement ON EXTERNAL DATA SOURCE et performance


Sujet :

SQL Firebird

  1. #1
    Membre confirmé Avatar de Issam
    Inscrit en
    mars 2002
    Messages
    575
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : mars 2002
    Messages : 575
    Points : 585
    Points
    585
    Par défaut execute statement ON EXTERNAL DATA SOURCE et performance
    Bonjour tout le monde ,

    j'écris une procédure stockée qui récupère des données de quelques tables depuis une base de Production

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR execute statement VSQL ON EXTERNAL DATA SOURCE  ...
    il y'a 5 ou six différentes requetés dans cette procédure qui correspondent aux différentes tables .

    en test local cette opération prends dans les 30 - 40 secondes.


    ma question est :

    y'a t'il un risque pour les autres utilisateurs connectés a la base (5 ou 6) d'être ralentis voire bloqués ?!



    Merci

  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
    20 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : mai 2002
    Messages : 20 952
    Points : 49 777
    Points
    49 777
    Billets dans le blog
    1
    Par défaut
    Cela dépend du SGBDR externe et de sa méthode de verrouillage (optimiste ou pessimiste)...

    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
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    7 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 7 844
    Points : 27 435
    Points
    27 435
    Billets dans le blog
    2
    Par défaut
    et de la largeur des verrous

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 243
    Points : 35 969
    Points
    35 969
    Billets dans le blog
    54
    Par défaut
    S'il s'agit d'une base externe Firebird, (donc une procédure qui interroge une autre BDD Firebird)

    d'expérience, car j'ai ce cas de figure, mes utilisateurs (plus que 5 ou 6 ) n'ont rien ressenti depuis des mois (voire mes pour certaines procédures 1 ou deux ans)
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre confirmé Avatar de Issam
    Inscrit en
    mars 2002
    Messages
    575
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : mars 2002
    Messages : 575
    Points : 585
    Points
    585
    Par défaut
    effectivement , il s'agit de deux bases firebird,

    sur une il y'a la procédure stockée qui interroge la base de production "externe" et remplis ces tables .

    donc la table de production où est connectés tous les utilisateurs est toujours en lecture seule avec l'appel de la procédure stockée .

    le truc c'est que cette opération doit se faire plusieurs fois par heure, genre 2/3 voire 4

    en test localhost ça prends environ 30 a 40 secondes

    j'imagine que sur le réseau local ça prends légèrement un peu plus


    d'où ma question .

  6. #6
    Membre confirmé Avatar de Issam
    Inscrit en
    mars 2002
    Messages
    575
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : mars 2002
    Messages : 575
    Points : 585
    Points
    585
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Cela dépend du SGBDR externe et de sa méthode de verrouillage (optimiste ou pessimiste)...

    A +
    a votre avis est ce que la méthode de verrouillage peut influencer sur les performance , vu que je ne fais qu'interroger la base de production avec des requêtes select .

    et en aucun cas je fais des insert, update .... etc

    ps: pour le SGBD c'est firebird pour les deux installées sur le même réseau local

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 243
    Points : 35 969
    Points
    35 969
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par Issam Voir le message
    effectivement , il s'agit de deux bases firebird,
    Je m'en doutais un peu

    sur une il y'a la procédure stockée qui interroge la base de production "externe" et remplis ces tables .
    C'est bien le cas de figure que je voyais

    donc la table de production où est connectés tous les utilisateurs est toujours en lecture seule avec l'appel de la procédure stockée .
    Je ne comprends pas cette déduction

    j'imagine que sur le réseau local ça prends légèrement un peu plus
    pourquoi ? Cela se passe sur le serveur, à moins qu'il y ait plusieurs serveurs Firebird , c'est à dire deux bases sur des postes différents
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  8. #8
    Membre confirmé Avatar de Issam
    Inscrit en
    mars 2002
    Messages
    575
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : mars 2002
    Messages : 575
    Points : 585
    Points
    585
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    onc la table de production où est connectés tous les utilisateurs est toujours en lecture seule avec l'appel de la procédure stockée .
    Je ne comprends pas cette déduction


    pourquoi ? Cela se passe sur le serveur, à moins qu'il y ait plusieurs serveurs Firebird , c'est à dire deux bases sur des postes différents
    je m'explique :

    quand je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VSQL = 'select CHNUM, CHCODE, libelle from chapitre ';
    
    FOR execute statement VSQL ON EXTERNAL DATA SOURCE Cheminbaseproduction AS USER 'sysdba' PASSWORD 'masterkey' INTO :CHNUM, :CHCODE, :libelle DO 
    update or insert into chapitre (CHNUM, CHCODE, libelle) values (:CHNUM, :CHCODE, :libelle);
    je fais juste un select sur la base de production , donc récupère juste les données je ne les modifie pas

    Citation Envoyé par SergioMaster Voir le message
    pourquoi ? Cela se passe sur le serveur, à moins qu'il y ait plusieurs serveurs Firebird , c'est à dire deux bases sur des postes différents
    oui il y'a deux postes différents chacun son propre serveur

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    avril 2010
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 213
    Points : 463
    Points
    463
    Par défaut
    Bonjour,

    Je ne connais pas la taille de cette table "chapitre", mais ce qui me choque, c'est que vous demandiez la mise à jour de la totalité de la table à chaque interrogation. C'est peut-être ça qui prend du temps et risque de ralentir les autres utilisateurs.

    André

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    20 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : mai 2002
    Messages : 20 952
    Points : 49 777
    Points
    49 777
    Billets dans le blog
    1
    Par défaut
    Lorsque vous imbriquez des lectures de table pour faire des mises à jour, FireBird travaillant exclusivement en verrouillage pessimiste, des verrous de lecture sont posés sur la table lue pour empêcher d'autres utilisateur de tenter de la mettre à jour...

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

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 243
    Points : 35 969
    Points
    35 969
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par Issam Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VSQL = 'select CHNUM, CHCODE, libelle from chapitre ';
    
    FOR execute statement VSQL ON EXTERNAL DATA SOURCE Cheminbaseproduction AS USER 'sysdba' PASSWORD 'masterkey' INTO :CHNUM, :CHCODE, :libelle DO 
    update or insert into chapitre (CHNUM, CHCODE, libelle) values (:CHNUM, :CHCODE, :libelle);
    par précaution j'aurai ajouté un MATCHING(CHNUM,CHCODE) pour le update or insert, cela réduira peut-être les temps
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  12. #12
    Membre confirmé Avatar de Issam
    Inscrit en
    mars 2002
    Messages
    575
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : mars 2002
    Messages : 575
    Points : 585
    Points
    585
    Par défaut
    Merci pour tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/12/2008, 18h36
  2. Réponses: 3
    Dernier message: 26/09/2005, 11h41
  3. Execute Statement
    Par BiM dans le forum SQL
    Réponses: 2
    Dernier message: 16/08/2005, 11h13
  4. [Lazarus] Exécution de commande externe
    Par SaintShakaJin dans le forum Lazarus
    Réponses: 3
    Dernier message: 26/04/2005, 14h13
  5. [WSAD5][DATA SOURCE][MYSQL]
    Par scape dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 02/02/2005, 11h50

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