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

Firebird Discussion :

Même base, même requête : 2 plans différents, TRES différents


Sujet :

Firebird

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 128
    Points : 1 401
    Points
    1 401
    Par défaut Même base, même requête : 2 plans différents, TRES différents
    Bonjour à tous

    Depuis quelques temps une de mes requête est plus longue que d'habitude. Donc j'ai voulu m'atteler au problème.

    Pour ce cas, j'ai recopié la même version de ma base sur 2 répertoires différents. Le plan d'exécution est totalement différents entre les 2 (c'est évidemment la même requête ).
    Dans un cas, le temps d'exécution est de quelques milisecondes, et pour l'autre il est de 40 secondes....

    Cela est-il déjà arrivé à l'un d'entre-vous ?



    Pour les 2 bases, j'ai recalculé tous les index.
    Je suis sous Firebird 3.0.10
    Je suis partie d'une base restaurée avant d'en copier une sous un autre répertoire
    J'utilise IbExpert.

    A+
    olivier

    NB : Evidemment en production, je fais appliquer le plan d'exécution le plus rapide pour ne plus avoir de problème
    Merci d'ajouter un sur les tags qui vous ont aidé

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 885
    Points : 37 678
    Points
    37 678
    Billets dans le blog
    58
    Par défaut
    Bonjour,

    par recopié, s'agit-il de bases restaurées après backup ou une simple copie de fichier ?
    Il pourrait s'agir d'un simple problème de transactions mal fermées pour l'une d'entre elle, difficile de se faire une idée
    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

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 128
    Points : 1 401
    Points
    1 401
    Par défaut
    Bonjour et merci pour la réponse

    La base source a été restaurée, et la base "supplémentaire" est une recopie du fichier de cette base restaurée (sans qu'aucune opération n'est été effectuée avant sur la base restaurée).

    Comme info supplémentaire, le mauvais plan se produit sur la base "source" restaurée et non sur la base supplémentaire recopiée...

    a+
    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 624
    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 : 8 624
    Points : 31 661
    Points
    31 661
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Le choix des chemins d'accès se base beaucoup sur les statistiques, peut-être ne sont elles pas à jour sur la base où les perfs sont mauvaises.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 128
    Points : 1 401
    Points
    1 401
    Par défaut
    Bonjour, et merci

    Ils n'auraient pas "mis à blanc" avec la restauration ?
    Et sur la base recopiée de cette base restaurée, la requête donne un "bon" plan, alors qu'elle devrait avoir les mêmes chemins, non ?

    En tout état de cause, ce n'est pas de toute évidence, quelque chose qui se passe couramment
    Merci d'ajouter un sur les tags qui vous ont aidé

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 885
    Points : 37 678
    Points
    37 678
    Billets dans le blog
    58
    Par défaut
    Il serait intéressant de faire le même test avec Flamerobin pour écarter un problème de GUI
    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

  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 189
    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 : 21 189
    Points : 50 435
    Points
    50 435
    Billets dans le blog
    1
    Par défaut
    Si ma mémoire est bonne, la sauvegarde dans Firebird n'est pas une sauvegarde binaire, mais une sauvegarde logique à base de CREATE / INSERT.
    Donc, lorsque vous restaurez vous avez une base de données nettoyées de toutes scories et compactée au possible avec des statistiques "up to date".
    Même si le contenu est identique du point de vue sémantique, ce n'est pas physiquement le même stockage ni les mêmes statistiques... Donc, pas les mêmes plans de requêtes et c'est logique !!!

    par analogie...

    Vous voulez vous rendre de paris à Versailles et il y a de nombreux chantiers sur la route... En temps normal sans ces chantiers vous mettez trois fois moins de temps. Pourtant vous faites toujours le même nombre de kilomètre et passez par les mêmes chemins....

    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 expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 128
    Points : 1 401
    Points
    1 401
    Par défaut
    Bonjour à tous et merci encore

    J'adore les analogies et les pratique beaucoup, surtout en stat...

    J'ai quelques nouvelles. Tout d'abord de nouvelles requêtes ont été touchées par de forts ralentissements (il concentre les travaux pendant l'été, )


    J'avais installé sur ma nouvelle machine (çà je ne crois pas l'avoir dit), les dernières versions de Firebird; la 32bits pour travailler sous IbExpert et la 64bits pour mon application.
    Or, sur mon ancienne, tout fonctionnait parfaitement.

    J'ai ainsi copié les 2 dll (fbclient) 32 et 64 de l'ancienne machine (version 3.0.6 ) vers la nouvelle. Et maintenant toutes les requêtes semblent tourner rapidement, comme avant.

    Ce serait un bug dans la dernière version de Firebird ? Si oui, je ne sais même pas comment l'expliquer et quoi fournir pour que la correction puisse être effectuée ?

    A+
    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 885
    Points : 37 678
    Points
    37 678
    Billets dans le blog
    58
    Par défaut
    Citation Envoyé par dehorter olivier Voir le message
    la 32bits pour travailler sous IbExpert
    Ah, IBexpert est 32 bits !?

    Ce serait un bug dans la dernière version de Firebird ?
    Ou d'IBexpert, c'est pour cela que je suggérais un test avec FlameRobin (léger et facile à installer/désinstaller)
    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

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 128
    Points : 1 401
    Points
    1 401
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Ah, IBexpert est 32 bits !?
    et oui


    Ou d'IBexpert, c'est pour cela que je suggérais un test avec FlameRobin (léger et facile à installer/désinstaller)
    non parce que le problème survient avec l'appli (en 64bits); c'est même "grâce à elle que le problème à été détecté.

    A+
    Merci d'ajouter un sur les tags qui vous ont aidé

  11. #11
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 885
    Points : 37 678
    Points
    37 678
    Billets dans le blog
    58
    Par défaut
    Citation Envoyé par dehorter olivier Voir le message
    J'ai ainsi copié les 2 dll (fbclient) 32 et 64 de l'ancienne machine (version 3.0.6 ) vers la nouvelle.
    Donc, une différence entre version, étrange, elles ont été copiées ou ces dlls ? Il faudrait peut-être remonter l'information https://firebirdsql.org/file/documen...eral-bugreport
    Je croyais, qu'à l'instar de Flamerobin (une nouvelle version, disponible depuis peu, permet de changer la dll cliente), une version des dlls était copiée dans le répertoire du GUI.
    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é
    Profil pro
    Inscrit en
    avril 2010
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 227
    Points : 489
    Points
    489
    Par défaut
    Bonjour,

    Ça me rappelle le problème des index inactifs lors de leur création signalé ici. RDB$INDEX_INACTIVE était nul au lieu de 0 et RDB$STATISTICS était à 0, ce qui peut être à l'origine d'un plan erroné.
    Effectuez la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select RDB$INDEX_NAME
    ,RDB$RELATION_NAME
    ,RDB$INDEX_INACTIVE
    ,RDB$STATISTICS
    from RDB$INDICES
    where RDB$SYSTEM_FLAG=0
    and RDB$STATISTICS=0
    pour voir si ce n'est pas le cas.

    André

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 128
    Points : 1 401
    Points
    1 401
    Par défaut
    Bonjour à tous,

    et désolé pour le retard, j'étais sur un autre projet.

    alanglet, j'ai testé ta requête et effectivement j'ai effectivement des "RDB$INDEX_INACTIVE à [NULL] ". Aussi j'ai recalculé les index et plus de NULL.

    Ensuite, j'ai remplacé la dll (fbclient.dll) de la version 3.0.6 par la 3.0.10, et cela fonctionne.

    J'aurais du le faire AVANT de recalculer les index afin de conserver des NULL pour tester le plan avec cette v10, dommage. Mais je garde la requête d'alanglet, histoire de tester de temps en temps la présence de NULL (on ne sait jamais).

    Je vais noter la discussion "résolue", même si rien n'est sûr.

    Encore merci à TOUS
    Merci d'ajouter un sur les tags qui vous ont aidé

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

    Informations forums :
    Inscription : avril 2010
    Messages : 227
    Points : 489
    Points
    489
    Par défaut
    Bonjour,

    Citation Envoyé par dehorter olivier Voir le message
    alanglet, j'ai testé ta requête et effectivement j'ai effectivement des "RDB$INDEX_INACTIVE à [NULL] ". Aussi j'ai recalculé les index et plus de NULL.
    Çà démontre qu'il y a bien une corrélation entre RDB$INDEX_INACTIVE null au lieu de 0 et des statistiques non calculées. Un backup/restore remet aussi tout en place.
    Ce sont les statistiques qui permettent de déterminer le plan le plus efficace, alors sans elles...
    Mais celà ne dit pas quelle opération a provoqué cette anomalie chez vous.

    André

  15. #15
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 128
    Points : 1 401
    Points
    1 401
    Par défaut
    Re

    Oui, et d'autant plus que j'avais réalisé ce backup/restaure avant ???

    Merci encore
    Merci d'ajouter un sur les tags qui vous ont aidé

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

Discussions similaires

  1. Réponses: 4
    Dernier message: Hier, 10h13
  2. Réponses: 11
    Dernier message: 08/08/2017, 22h08
  3. SQL 2005 - Même requête - différent plan d'exécution
    Par Philippe Robert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/06/2008, 14h50
  4. Réponses: 5
    Dernier message: 13/04/2007, 14h14
  5. [SQL2K]Une même requête des résultats différents
    Par jeeerome dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/07/2006, 14h20

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