Collection Contents Précédent Suivant PDF

ASA - Guide de l'utilisateur SQL

Contrôle et amélioration des performances

Utilisation de tables de travail dans le traitement des requêtes


Les tables de travail sont des jeux de résultats matérialisés, qui sont créées lors de l'exécution d'une requête. Lorsqu'Adaptive Server Anywhere détermine que le coût de l'une de ces tables est inférieur aux stratégies décrites précédemment, il les utilise. Avec une table de travail, la lecture des premières lignes prend généralement plus de temps mais, dans certaines circonstances, ce type de table contribue à réduire considérablement le coût d'extraction de toutes les lignes. C'est pourquoi, Adaptive Server Anywhere choisit des stratégies différentes en fonction de la valeur de l'option OPTIMIZATION_GOAL. La valeur par défaut est first-row. Lorsque cette valeur est définie, Adaptive Server Anywhere évite d'utiliser des tables de travail. Lorsque la valeur Toutes les lignes est définie, Adaptive Server Anywhere utilise des tables de travail si elles réduisent le coût d'exécution total d'une requête.

Les tables de travail s'utilisent dans les cas suivants :

Cas d'utilisation des tables de travail 

Dans tous ces cas, les enregistrements affectés par l'opération sont insérés dans la table de travail. Dans certaines situations, par exemple avec des curseurs orientés clavier, un index temporaire est créé sur la table de travail. L'opération d'extraction des enregistrements concernés dans une table de travail peut prendre beaucoup de temps avant l'apparition des résultats de la requête. La création d'index qui peuvent être utilisés pour effectuer le tri dans le premier cas réduit le temps d'extraction des premières lignes. Toutefois, la durée totale de la lecture de toutes les lignes peut être réduite si des tables de travail sont utilisées, car elles autorisent des algorithmes de requête fondés sur le hachage et le tri par fusion. Ces algorithmes emploient des E/S séquentielles plus rapides que les E/S aléatoires utilisées dans le balayage d'index.

L'optimiseur de requête du serveur de base de données analyse chaque requête pour déterminer si une table de travail procurera les meilleures performances. Les enrichissements apportés à l'optimiseur dans les nouvelles versions d'Adaptive Server Anywhere peuvent améliorer les plans d'accès aux données pour les requêtes. Aucune intervention de l'utilisateur n'est requise.

Remarques 

Les autres cas (INSERT, UPDATE et DELETE) de l'exemple ci-dessus ne posent généralement pas de problème de performances, les opérations correspondantes étant exécutées en une seule fois. Toutefois, en cas de problème, vous pouvez reformuler la commande pour éviter tout conflit et la création d'une table de travail. Mais cela n'est pas toujours possible.


Collection Contents Précédent Suivant PDF