Référence des procédures Babelfish for Aurora PostgreSQL - Amazon Aurora

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 des procédures Babelfish for Aurora PostgreSQL

Présentation

Vous pouvez utiliser la procédure suivante pour les instances de base de données Amazon RDS exécutant Babelfish for Aurora PostgreSQL afin d'améliorer les performances des requêtes :

sp_babelfish_volatility

La volatilité des fonctions PostgreSQL aide l'optimiseur à mieux exécuter les requêtes, ce qui, lorsqu'il est utilisé dans des parties de certaines clauses, a un impact significatif sur les performances des requêtes.

Syntaxe

sp_babelfish_volatility ‘function_name’, ‘volatility’

Arguments

function_name (facultatif)

Vous pouvez spécifier la valeur de cet argument avec un nom en deux parties comme schema_name.function_name ou uniquement function_name. Si vous spécifiez uniquement function_name, le nom du schéma est le schéma par défaut pour l'utilisateur actuel.

volatility (facultatif)

Les valeurs PostgreSQL valides de volatilité sont stablevolatile ou immutable. Pour plus d'informations, consultez https://www.postgresql.org/docs/current/xfunc-volatility.html

Note

Quand sp_babelfish_volatility est appelée avec function_name qui possède plusieurs définitions, elle génère une erreur.

Jeu de résultats

Si les paramètres ne sont pas mentionnés, le jeu de résultats s'affiche sous les colonnes suivantes :schemanamefunctionnamevolatility.

Notes d'utilisation

La volatilité des fonctions PostgreSQL aide l'optimiseur à mieux exécuter les requêtes, ce qui, lorsqu'il est utilisé dans des parties de certaines clauses, a un impact significatif sur les performances des requêtes.

Exemples

Les exemples suivants montrent comment créer des fonctions simples et expliquent ensuite comment utiliser sp_babelfish_volatility sur ces fonctions à l'aide de différentes méthodes.

1> create function f1() returns int as begin return 0 end 2> go
1> create schema test_schema 2> go
1> create function test_schema.f1() returns int as begin return 0 end 2> go

L'exemple suivant montre la volatilité des fonctions :

1> exec sp_babelfish_volatility 2> go schemaname functionname volatility ----------- ------------ ---------- dbo f1 volatile test_schema f1 volatile

L'exemple suivant montre comment modifier la volatilité des fonctions :

1> exec sp_babelfish_volatility 'f1','stable' 2> go 1> exec sp_babelfish_volatility 'test_schema.f1','immutable' 2> go

Lorsque vous spécifiez uniquement function_name, cela affiche le nom du schéma, le nom de la fonction et la volatilité de cette fonction. L'exemple suivant affiche la volatilité des fonctions après la modification des valeurs :

1> exec sp_babelfish_volatility 'test_schema.f1' 2> go schemaname functionname volatility ----------- ------------ ---------- test_schema f1 immutable
1> exec sp_babelfish_volatility 'f1' 2> go schemaname functionname volatility ----------- ------------ ---------- dbo f1 stable

Lorsque vous ne spécifiez aucun argument, cela affiche la liste des fonctions (nom du schéma, nom de la fonction, volatilité des fonctions) présentes dans la base de données actuelle :

1> exec sp_babelfish_volatility 2> go schemaname functionname volatility ----------- ------------ ---------- dbo f1 stable test_schema f1 immutable

sp_execute_postgresql

Vous pouvez exécuter des instructions PostgreSQL du point de terminaison T-SQL. Cela simplifie vos applications, car vous n'avez pas besoin de quitter le port T-SQL pour exécuter ces instructions.

Syntaxe

sp_execute_postgresql [ @stmt = ] statement

Arguments

instruction [@stmt]

L'argument est de type varchar. Cet argument accepte les instructions en langage PG.

Note

Vous ne pouvez passer qu'une seule instruction en langage PG comme argument, sinon l'erreur suivante se produira.

1>exec sp_execute_postgresql 'create extension pg_stat_statements; drop extension pg_stat_statements' 2>go
Msg 33557097, Level 16, State 1, Server BABELFISH, Line 1 expected 1 statement but got 2 statements after parsing

Notes d'utilisation

CREATE EXTENSION

Crée et charge une nouvelle extension dans la base de données actuelle.

1>EXEC sp_execute_postgresql 'create extension [ IF NOT EXISTS ] <extension name> [ WITH ] [SCHEMA schema_name] [VERSION version]'; 2>go

L'exemple suivant montre comment créer une extension :

1>EXEC sp_execute_postgresql 'create extension pg_stat_statements with schema sys version "1.10"'; 2>go

Utilisez la commande suivante pour accéder aux objets de l'extension :

1>select * from pg_stat_statements; 2>go
Note

Si le nom du schéma n'est pas fourni explicitement lors de la création de l'extension, les extensions sont installées par défaut dans le schéma public. Vous devez fournir le qualificateur de schéma pour accéder aux objets de l'extension, comme mentionné ci-dessous :

1>select * from [public].pg_stat_statements; 2>go
Extensions prises en charge

Les extensions suivantes disponibles avec Aurora PostgreSQL sont compatibles avec Babelfish.

  • pg_stat_statements

  • tds_fdw

  • fuzzystrmatch

Limites
  • Les utilisateurs doivent posséder le rôle sysadmin sur T-SQL et rds_superuser sur postgres pour installer les extensions.

  • Les extensions ne peuvent pas être installées dans des schémas créés par l'utilisateur, ni dans des schémas dbo et guest pour les bases de données master, tempdb et msdb.

  • L'option CASCADE n'est pas prise en charge.

ALTER EXTENSION

Vous pouvez effectuer une mise à niveau vers une nouvelle version de l'extension à l'aide de l'instruction ALTER.

1>EXEC sp_execute_postgresql 'alter extension <extension name> UPDATE TO <new_version>'; 2>go
Limites
  • Vous pouvez mettre à niveau la version de votre extension uniquement à l'aide de l'instruction ALTER Extension. Les autres opérations ne sont pas prises en charge.

DROP EXTENSION

Supprime l'extension spécifiée. Vous pouvez également utiliser les options if exists ou restrict pour supprimer l'extension.

1>EXEC sp_execute_postgresql 'drop extension <extension name>'; 2>go
Limites
  • L'option CASCADE n'est pas prise en charge.