J'essaie de comprendre les performances d'une requête que j'ai écrite dans Oracle. A ce moment, je n'ai accès qu'à SQLDeveloper et à son timer d'exécution. Je peux exécuter SHOW PLAN mais je ne peux pas utiliser la fonction de trace automatique.Performance Oracle via SQLDeveloper vs application
La requête que j'ai écrite s'exécute en environ 1,8 secondes lorsque j'appuie sur «exécuter la requête» (F9) dans SQLDeveloper. Je sais que cela ne récupère que les cinquante premières lignes par défaut, mais puis-je au moins être certain que les 1,8 secondes englobent le temps d'exécution total plus le temps de livrer les 50 premières lignes à mon client? Lorsque j'emballe cette requête dans une procédure stockée (renvoyer les résultats via un OUT REF CURSOR) et que j'essaie de l'utiliser à partir d'une application externe (SQL Server Reporting Services), la requête prend plus d'une minute à s'exécuter. J'obtiens des performances similaires lorsque j'appuie sur "Exécuter le script" (F5) dans SQLDeveloper. Il semble que la différence ici est que dans ces deux scénarios, Oracle doit retransmettre toutes les lignes plutôt que les 50 premières. Cela m'amène à penser qu'il existe des problèmes de connectivité réseau entre le PC client et l'instance Oracle. Ma requête renvoie seulement environ 8000 lignes donc cette performance est surprenante. Pour essayer de prouver ma théorie au-dessus de la latence, je courais un peu de code comme ceci dans sqldeveloper:
declare
tmp sys_refcursor;
begin
my_proc(null, null, null, tmp);
end;
... Et cela va dans environ deux secondes. Encore une fois, l'horloge d'exécution de SQLDeveloper indique-t-elle avec précision l'heure d'exécution de la requête? Ou est-ce que je manque quelque chose et est-ce possible que c'est en fait ma requête qui a besoin de réglage?
Quelqu'un peut-il m'expliquer s'il vous plaît tout cela basé sur les outils limités dont je dispose? Ou devrais-je essayer d'impliquer le DBA pour faire une analyse plus approfondie?
Il serait utile que vous puissiez publier la requête, une description des tables, des index, etc., et le plan d'exécution. –