Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Référence fonctionnelle pour la gestion du plan de SQL requêtes Aurora Postgre
L'extension apg_plan_mgmt
fournit les fonctions suivantes.
Fonctions
apg_plan_mgmt.copy_outline
Copiez un hachage et un schéma de SQL plan donnés dans un hachage et un SQL plan de plan cibles, en remplaçant ainsi le hachage et le plan de la cible. Cette fonction est disponible dans apg_plan_mgmt
versions 2.3 et supérieures.
Syntaxe
apg_plan_mgmt.copy_outline(
source_sql_hash,
source_plan_hash,
target_sql_hash,
target_plan_hash,
force_update_target_plan_hash
)
Valeur renvoyée
Renvoie 0 lorsque la copie est réussie. Déclenche des exceptions pour les entrées non valides.
Paramètres
Paramètre | Description |
---|---|
source_sql_hash
|
L'ID sql_hash associé à la valeur plan_hash à copier vers la requête cible. |
source_plan_hash |
L'ID plan_hash à copier vers la requête cible. |
target_sql_hash |
L'ID sql_hash de la requête à mettre à jour avec le hachage et le plan source. |
target_plan_hash |
L'ID plan_hash de la requête à mettre à jour avec le hachage et le plan source. |
force_update_target_plan_hash |
(Facultatif) L'target_plan_hash ID de la requête est mis à jour même si le plan source n'est pas reproductible pour. target_sql_hash Lorsqu'elle est définie sur true, la fonction peut être utilisée pour copier des plans dans des schémas où les noms des relations et les colonnes sont cohérents. |
Notes d’utilisation
Cette fonction vous permet de copier un hachage de plan et un contour de plan qui utilise des astuces dans d'autres instructions similaires, ce qui vous évite d'avoir à utiliser des instructions d'astuces en ligne à chaque occurrence dans les instructions cibles. Si la requête cible mise à jour résulte en un plan invalide, cette fonction soulève une erreur et annule la tentative de mise à jour.
apg_plan_mgmt.delete_plan
Supprimez un plan géré.
Syntaxe
apg_plan_mgmt.delete_plan(
sql_hash,
plan_hash
)
Valeur renvoyée
Renvoie 0 si la suppression a réussi ou -1 si elle a échoué.
Paramètres
Paramètre | Description |
---|---|
sql_hash
|
L'sql_hash ID du SQL relevé géré du plan. |
plan_hash |
ID plan_hash du plan géré. |
apg_plan_mgmt.evolve_plan_baselines
Vérifie si un plan déjà approuvé est plus rapide ou si un plan identifié par l'optimiseur de requêtes en tant que plan à coût minimal est plus rapide.
Syntaxe
apg_plan_mgmt.evolve_plan_baselines(
sql_hash,
plan_hash,
min_speedup_factor,
action
)
Valeur renvoyée
Nombre de plans qui n'étaient pas plus rapides que le meilleur plan approuvé.
Paramètres
Paramètre | Description |
---|---|
sql_hash |
L'sql_hash ID du SQL relevé géré du plan. |
plan_hash |
ID plan_hash du plan géré. Utilisé NULL pour désigner tous les plans ayant la même valeur sql_hash d'identifiant. |
min_speedup_factor |
Le facteur de montée en charge minimum est le nombre de fois qu'un plan doit être plus rapide que le meilleur des plans déjà approuvés pour être approuvé. Sinon, ce facteur peut être le nombre de fois qu'un plan doit être plus lent pour être rejeté ou désactivé. Il s'agit d'une valeur flottante positive. |
action |
Action que la fonction doit exécuter. Les valeurs valides sont notamment les suivantes. La casse n'a pas d'importance.
|
Notes d'utilisation
Définissez les plans spécifiés sur approuvé, rejeté ou désactivé selon que la durée de planification et d'exécution est plus rapide que celle du meilleur plan approuvé selon un facteur que vous pouvez définir. Le paramètre d'action peut être défini sur 'approve'
ou 'reject'
pour approuver ou rejeter automatiquement un plan qui respecte les critères de performance. Vous pouvez également le définir sur '' (chaîne vide) pour tester les performances et produire un rapport, mais sans effectuer d'action.
Vous pouvez inutilement éviter d'exécuter à nouveau la fonction apg_plan_mgmt.evolve_plan_baselines
pour un plan sur lequel elle a été exécutée récemment. À cette fin, limitez les plans aux plans non approuvés créés récemment. Vous pouvez également éviter d'exécuter la fonction apg_plan_mgmt.evolve_plan_baselines
sur un plan approuvé qui a reçu un horodatage last_verified
récent.
Effectuez un test des performances pour comparer la durée de planification et d'exécution de chaque plan par rapport à d'autres plans de la référence. Dans certains cas, il n'existe qu'un seul plan pour une instruction et ce plan est approuvé. Dans ce cas, comparez la durée de planification et la durée d'exécution du plan à ce que seraient ces durées si aucun plan n'était utilisé.
L'avantage (ou le désavantage) incrémentiel de chaque plan est enregistré dans la vue apg_plan_mgmt.dba_plans
de la colonne total_time_benefit_ms
. Lorsque cette valeur est positive, il y a un avantage mesurable en termes de performances à inclure ce plan dans la référence.
En plus de consigner la durée de planification et d'exécution de chaque plan candidat, la colonne last_verified
de la vue apg_plan_mgmt.dba_plans
est mise à jour avec current_timestamp
. L'horodatage last_verified
peut être utilisé pour éviter d'exécuter à nouveau cette fonction sur un plan dont les performances ont récemment été vérifiées.
apg_plan_mgmt.get_explain_plan
Génère le texte d'une EXPLAIN
instruction pour l'SQLinstruction spécifiée.
Syntaxe
apg_plan_mgmt.get_explain_plan(
sql_hash,
plan_hash,
[explainOptionList]
)
Valeur renvoyée
Renvoie les statistiques d'exécution pour les SQL instructions spécifiées. Utiliser sans explainOptionList
pour renvoyer un plan EXPLAIN
simple.
Paramètres
Paramètre | Description |
---|---|
sql_hash
|
L'sql_hash ID du SQL relevé géré du plan. |
plan_hash |
ID plan_hash du plan géré. |
explainOptionList |
Liste séparée par des virgules d'options d'explication. Les valeurs valides incluent |
Notes d'utilisation
Pour le explainOptionList
, vous pouvez utiliser l'une des mêmes options que vous utiliseriez avec une instruction EXPLAIN
. L'SQLoptimiseur Aurora Postgre concatène la liste des options que vous fournissez à l'instruction. EXPLAIN
apg_plan_mgmt.plan_last_used
Renvoie la date last_used
du plan spécifié depuis la mémoire partagée.
Note
La valeur de la mémoire partagée est toujours à jour sur l'instance de base de données principale du cluster de bases de données. La valeur est uniquement vidée vers périodiquement dans la colonne last_used
de la vue apg_plan_mgmt.dba_plans
.
Syntaxe
apg_plan_mgmt.plan_last_used(
sql_hash,
plan_hash
)
Valeur renvoyée
Renvoie la date last_used
.
Paramètres
Paramètre | Description |
---|---|
sql_hash
|
L'sql_hash ID du SQL relevé géré du plan. |
plan_hash |
ID plan_hash du plan géré. |
apg_plan_mgmt.reload
Recharge les plans dans la mémoire partagée depuis la vue apg_plan_mgmt.dba_plans
.
Syntaxe
apg_plan_mgmt.reload()
Valeur renvoyée
Aucun.
Paramètres
Aucune.
Notes d'utilisation
Appelez reload
dans les cas suivants :
-
Utilisez-le pour rafraîchir immédiatement la mémoire partagée d'un réplica en lecture seule, plutôt que d'attendre que les nouveaux plans se propagent au réplica.
-
Utilisez-le après l'importation de plans gérés.
apg_plan_mgmt.set_plan_enabled
Activez ou désactivez un plan géré.
Syntaxe
apg_plan_mgmt.set_plan_enabled(
sql_hash,
plan_hash,
[true | false]
)
Valeur renvoyée
Renvoie 0 si le paramétrage a réussi ou -1 s'il a échoué.
Paramètres
Paramètre | Description |
---|---|
sql_hash |
L'sql_hash ID du SQL relevé géré du plan. |
plan_hash |
ID plan_hash du plan géré. |
enabled |
Valeur booléenne true ou false :
|
apg_plan_mgmt.set_plan_status
Définissez le statut d'un plan géré sur Approved
, Unapproved
, Rejected
ou Preferred
.
Syntaxe
apg_plan_mgmt.set_plan_status(
sql_hash,
plan_hash,
status
)
Valeur renvoyée
Renvoie 0 si le paramétrage a réussi ou -1 s'il a échoué.
Paramètres
Paramètre | Description |
---|---|
sql_hash |
L'sql_hash ID du SQL relevé géré du plan. |
plan_hash |
ID plan_hash du plan géré. |
status |
Chaîne dotée de l'une des valeurs suivantes :
La casse que vous utilisez n'a pas d'importance, mais la valeur du statut est définie avec des capitales initiales dans la vue |
apg_plan_mgmt.update_plans_last_used
Met immédiatement à jour le tableau des plans avec la date last_used
stockée dans la mémoire partagée.
Syntaxe
apg_plan_mgmt.update_plans_last_used()
Valeur renvoyée
Aucun.
Paramètres
Aucune.
Notes d'utilisation
Appelez update_plans_last_used
pour veiller à ce que les requêtes de la colonne dba_plans.last_used
utilise les informations les plus récentes. Si la date last_used
n'est pas immédiatement mise à jour, un processus en arrière-plan met à jour la table des plans avec la date last_used
une fois par heure (par défaut).
Par exemple, si une instruction avec un certain sql_hash
commence à s'exécuter lentement, vous pouvez déterminer quels plans de cette instruction ont été exécutés depuis le début de la régression des performances. Pour ce faire, commencez par vider les données de la mémoire partagée sur le disque afin que les dates last_used
soient à jour, puis interrogez tous les plans du sql_hash
de l'instruction présentant la régression des performances. Dans la requête, assurez-vous que le date last_used
est supérieure ou égale à la date à laquelle la régression des performances a commencé. La requête identifie le plan ou l'ensemble de plans susceptibles d'être responsables de la régression des performances. Vous pouvez utiliser apg_plan_mgmt.get_explain_plan
avec explainOptionList
défini sur verbose, hashes
. Vous pouvez également utiliser apg_plan_mgmt.evolve_plan_baselines
pour analyser le plan et tous les autres plans susceptibles de s'avérer plus performants.
La fonction update_plans_last_used
affecte uniquement l'instance de base de données principale du cluster de bases de données.
apg_plan_mgmt.validate_plans
Validez le fait que l'optimiseur peut toujours recréer des plans. L'optimiseur valide les plans Approved
, Unapproved
et Preferred
, que les plans soient activés ou désactivés. Les plans Rejected
ne sont pas validés. Vous pouvez également utiliser la fonction apg_plan_mgmt.validate_plans
pour supprimer ou désactiver des plans non valides.
Syntaxe
apg_plan_mgmt.validate_plans(
sql_hash,
plan_hash,
action)
apg_plan_mgmt.validate_plans(
action)
Valeur renvoyée
Nombre de plans non valides.
Paramètres
Paramètre | Description |
---|---|
sql_hash |
L'sql_hash ID du SQL relevé géré du plan. |
plan_hash |
ID plan_hash du plan géré. Utilisez NULL pour désigner tous les plans ayant la même valeur sql_hash d'identifiant. |
action |
Action que la fonction doit exécuter pour les plans non valides. Les valeurs de chaînes valides sont notamment les suivantes. La casse n'a pas d'importance.
Toute autre valeur est traitée comme une chaîne vide. |
Notes d'utilisation
Utilisez le formulaire validate_plans(action)
pour valider tous les plans gérés pour toutes les instructions gérées dans la vue apg_plan_mgmt.dba_plans
complète.
Utilisez le formulaire validate_plans(sql_hash, plan_hash, action)
pour valider un plan géré spécifié avec plan_hash
pour une instruction gérée spécifiée avec sql_hash
.
Utilisez le formulaire validate_plans(sql_hash, NULL, action)
pour valider tous les plans gérés pour l'instruction gérée spécifiée avec sql_hash
.