Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de 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 21/03/2007, 11h47   #1
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 181
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 181
Points : 267
Points : 267
Par défaut [ase 12.5][tsql] Sarg

Qui peut parler du SARG appliqué aux optimisation de requettes sous Sybase en particulier, ou peut indiquer un lien qui en parle clairement ?

D'avance merci.
Jean.Cri1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 12h14   #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
Un premier lien - un document ecrit par Eric Miner (ingénieur Sybase en charge de l'optimiseur pendant de nombreuses années) en 1997:

http://www.sybase.com/detail?id=2602

Je pense que ce document explique aussi d'où viennent les "magic numbers"...

Le manuel P&T actuel a pas mal d'explication sur les SARGs, et comment l'optimiseur se comporte. Par example:

http://manuals.sybase.com/onlinebook...58945;pt=58855

Voila pour un début...

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 21/03/2007, 16h33   #3
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
je suis Michael sur le P&T de Sybase : c'est sans doute le bouquin le plus complet sur la matière.

Pour les SARGs, bien que le nom diffère, l'utilisation des diverses conditions et jointures par l'optimiseur répondent à certaines règles similaires, quelle que soit la base. On peut déplorer chez Sybase par exemple le fait que les indexes sur fonction n'existent pas, mais on peut se réjouir par contre que l'optimiseur, dans son calcul de poids pour le choix optimum du bon SARG, est en mesure de différencier les pages en caches des pages en disque et de leur attribuer un poid différent, contrairement à l'optimiseur d'Oracle par exemple.

Pour essayer de faire simple:
  • afin de rechercher l'accès le plus rapide aux pages utiles à répondre à la requête, l'optimiseur relève toutes les assertions utiles dans les jointures (clause FROM avec jointures ANSI), dans les conditions (Clauses WHERE) et dans certains autres cas (aggrégat), dans le HAVING, le GROUP BY et des fonctions d'aggrégat.
  • il traite ensuite chacune des assertions en détectant si elle est sujette à utiliser un (ou des indexes). Si elle remplit les conditions d'une SARG, c'est qu'elle l'est. par exemple, une condition du type "WHERE Col1+3 = Col2-1" ne'st pas une SARG puisque Col1+3 ne peut pas se référer à un index. Par contre, la même assertion logique "Col1 = Col2+2" en est une puisque l'optimiseur pourra dans cas utiliser un éventuel index sur Col1.
  • Ayant fait ce premier tri, l'optimiseur va calculer chaque chemin d'accès (= quel poind donner à chaque SARG pour chaque index) afin de choisir le chemin optimal.
  • Dans des cas de bord, il peut s'avérer plus rapide de traverser une table par full scan que d'utiliser un index, si par exemple toutes les pages de la table sont en cache, et que l'index lui est en disque...

Le magic number est un poids arbitraire (et souvent mauvais) que l'optimiseur donne pour une condition donnée lorsqu'une valeur meilleure n'est pas disponible via la table des statistiques ou qu'il n'est pas en mesure de déterminer la colonne au moment de la compilation (d'où éviter les derivative tables, les sql dynamiques, ...) pour la sélectivité d'un index. Il n'y a pas que 30%... il y a plusieurs poids selon le type de condition. En teme de statistique toujours, Sybase est à mon avis bien meilleur qu'Oracle, car ses statistiques sont généralement mises à jour au fil de l'eau.
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace 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 05h19.


 
 
 
 
Partenaires

Hébergement Web