Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2007, 16h26   #1
Nouveau Membre du Club
 
Jean-Philippe SARASY
Inscription : mars 2007
Messages : 131
Détails du profil
Informations personnelles :
Nom : Jean-Philippe SARASY

Informations forums :
Inscription : mars 2007
Messages : 131
Points : 38
Points : 38
Par défaut ASE 12.5.3 : Pb de cache ?

Bonjour

J'ai un "probleme de perf" sur une vue
En effet, je fais un 'select * from ma_vue' directement, cela prend 30 s
Par un ps avec le meme code, elle prend environ 10 secondes
Cela vient certainement du plan d'excution deja calculé dans le cache pour la ps mais je croyais que le plan etait en cache pour une vue aussi

Si qq'un a une explication plus rationnelle


Pour info, voici le resultat du 'statistics io,time on' :
Parse and Compile Time 325.
SQL Server cpu time: 32500 ms.

Execution Time 50.
SQL Server cpu time: 5000 ms. SQL Server elapsed time: 10750 ms.

(3107 rows affected)



NB : la vue fais une jointure sur une 20aine de tables


Merci d'avance de vos remarques / aide

jeeps64
jeeps64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 17h26   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Idéalement il faudrait voir le SHOWPLAN des deux exécutions pour voir quelle est la différence.

Est-ce que les jointures dans la vue sont strictement identique à celles dans la proc stockée ?

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h53   #3
Nouveau Membre du Club
 
Jean-Philippe SARASY
Inscription : mars 2007
Messages : 131
Détails du profil
Informations personnelles :
Nom : Jean-Philippe SARASY

Informations forums :
Inscription : mars 2007
Messages : 131
Points : 38
Points : 38
Bonjour

Les 2 plans sont identiques, la requete dans la ps etant le 'select * from ma_vue'
J'avoue que je seche la
La seule difference vient du temps passer à parser et à compiler

le select :
Parse and Compile Time 328.
SQL Server cpu time: 32800 ms.
The sort for Worktable1 is done in Serial

la ps :
Parse and Compile Time 1.
SQL Server cpu time: 100 ms.
The sort for Worktable1 is done in Serial


Si vous avez un piste, n'hesitez pas

Merci

jeeps64
jeeps64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 12h06   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Le plan de la vue n'est pas pré-compilé, d'où les 3 secondes à faire la compilation et l'optimisation du plan d'accès à chaque exécution.

Tu pourrais invéstiguer l'utilisation d'un plan abstrait pour stocker le plan d'accès et ainsi éviter la longue optimisation à chaque exécution.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 12h48   #5
Nouveau Membre du Club
 
Jean-Philippe SARASY
Inscription : mars 2007
Messages : 131
Détails du profil
Informations personnelles :
Nom : Jean-Philippe SARASY

Informations forums :
Inscription : mars 2007
Messages : 131
Points : 38
Points : 38
Je croyais que le plan d'une vue était pré-compilé comme une ps
Je vais travailler sur un abstract plan alors

Merci des reponses Michael

@+
jeeps64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 17h24   #6
Nouveau Membre du Club
 
Jean-Philippe SARASY
Inscription : mars 2007
Messages : 131
Détails du profil
Informations personnelles :
Nom : Jean-Philippe SARASY

Informations forums :
Inscription : mars 2007
Messages : 131
Points : 38
Points : 38
Juste un petit conseil pour finir sur ce sujet

J'ai créé une proxy_table 'ma_vue_proxy' pointant vers la procedure stockée et la evidemment ca fonctionne et c'est aussi rapise que le lancement de la ps seule.

Y a t il une contre indication a faire ce genre de chose ? ou des effets pervers ?


Merci d'avance


jeeps64
jeeps64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 07h55   #7
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Je n'avais pas pensé à utiliser une table proxy pour ceci, mais cela devrait effectivement marcher assez bien. Il y aura plus d'IO réseau, mais comme c'est sur le "loopback" cela ne devrait pas poser de problème. Et comme je suppose que cette vue n'est pas utilisée en jointure avec d'autres tables/vues il ne doit pas y avoir de problème de perfs particulières.

Ceci étant, si tu as le temps il vaut peut-être la peine d'investiguer les "abstract query plans". Si mes souvenirs sont bons on peut sauver le plan d'une requête en l'exécutant, puis forcer ce plan à être exécuté.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 08h42   #8
Nouveau Membre du Club
 
Jean-Philippe SARASY
Inscription : mars 2007
Messages : 131
Détails du profil
Informations personnelles :
Nom : Jean-Philippe SARASY

Informations forums :
Inscription : mars 2007
Messages : 131
Points : 38
Points : 38
Salut

Pour l'instant, je vais rester sur cette idée je pense (faute de temps)
Pour les abstract plan, j'arrive à enregistrer le plan du 'select * from ma_vue' dans un groupe de plan.
Par contre, pour obliger la requete 'select * from ma_vue' a prendre l'abstract plan ainsi enregistré, je n'ai trouver que cette syntaxe :

set plan load mon_grp_plans on
go
select * from ma_vue
go
set plan load off
go


J'aurai voulu pour forcer le plan directement a l'appel du select. Mais je ne pense pas que ce soit possible.
Sauf en l'ecrivant a la main. Mais sur une jointure entre une vingtaine de tables...bonjour le plan !!!


Merci en tout cas de toutes ces reponses


jeeps64
jeeps64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h44.


 
 
 
 
Partenaires

Hébergement Web