Referência de procedimentos do Babelfish para Aurora PostgreSQL - Amazon Aurora

Referência de procedimentos do Babelfish para Aurora PostgreSQL

Visão geral

Você pode usar o procedimento a seguir para instâncias de banco de dados do Amazon RDS que executam o Babelfish para Aurora PostgreSQL a fim de melhorar a performance de consultas:

sp_babelfish_volatility

A volatilidade da função do PostgreSQL ajuda o otimizador a melhorar a execução de consultas. Quando usada em partes de determinadas cláusulas, tem um impacto significativo na performance de consultas.

Sintaxe

sp_babelfish_volatility ‘function_name’, ‘volatility’

Argumentos

function_name (opcional)

Você pode especificar o valor desse argumento como schema_name.function_name, com um nome de duas partes, ou somente function_name. Se você especificar somente function_name, o nome do esquema será o esquema padrão para o usuário atual.

volatility (opcional)

Os valores válidos de volatilidade do PostgreSQL são stable, volatile ou immutable. Para obter mais informações, consulte https://www.postgresql.org/docs/current/xfunc-volatility.html.

nota

Quando sp_babelfish_volatility é chamado com function_name, que tem várias definições, será gerado um erro.

Conjunto de resultados

Se os parâmetros não forem mencionados, o conjunto de resultados será exibido nas seguintes colunas: schemanamefunctionnamevolatility.

Observações de uso

A volatilidade da função do PostgreSQL ajuda o otimizador a melhorar a execução de consultas. Quando usada em partes de determinadas cláusulas, tem um impacto significativo na performance de consultas.

Exemplos

Os exemplos a seguir mostram como criar funções simples e, posteriormente, explicam como usar sp_babelfish_volatility nessas funções utilizando métodos diferentes.

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

O exemplo a seguir mostra a volatilidade das funções:

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

O exemplo a seguir mostra como alterar a volatilidade das funções:

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

Quando você especifica somente function_name, são exibidos o nome do esquema, o nome da função e a volatilidade da função. O exemplo a seguir mostra a volatilidade das funções depois de alterar os valores:

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

Quando você não especifica nenhum argumento, é exibida uma lista de funções (nome do esquema, nome da função, volatilidade das funções) presentes no banco de dados atual:

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

sp_execute_postgresql

É possível executar instruções PostgreSQL do endpoint T-SQL. Isso simplifica suas aplicações, pois você não precisa sair da porta T-SQL para executar essas instruções.

Sintaxe

sp_execute_postgresql [ @stmt = ] statement

Argumentos

declaração [ @stmt ]

O argumento é um datatype varchar. Esse argumento aceita declarações do dialeto PG.

nota

Você só pode passar uma declaração do dialeto PG como argumento; caso contrário, ela gerará o seguinte erro.

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

Observações de uso

CRIAR EXTENSÃO

Cria e carrega uma nova extensão no banco de dados atual.

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

O exemplo a seguir mostra como criar uma extensão:

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

Use o comando a seguir para acessar objetos de extensão:

1>select * from pg_stat_statements; 2>go
nota

Se o nome do esquema não for fornecido explicitamente durante a criação da extensão, por padrão, as extensões serão instaladas no esquema público. Você deve fornecer o qualificador de esquema para acessar os objetos de extensão, conforme mencionado abaixo:

1>select * from [public].pg_stat_statements; 2>go
Extensões compatíveis

As seguintes extensões disponíveis com o Aurora PostgreSQL funcionam com o Babelfish.

  • pg_stat_statements

  • tds_fdw

  • fuzzystrmatch

Limitações
  • Os usuários precisam ter a função sysadmin no T-SQL e rds_superuser no postgres para instalar as extensões.

  • As extensões não podem ser instaladas em esquemas criados pelo usuário e também em esquemas dbo e guest para bancos de dados master, tempdb e msdb.

  • Não há compatibilidade para a opção CASCADE.

ALTERAR EXTENSÃO

Você pode fazer a atualização para uma nova versão de extensão usando a extensão ALTER.

1>EXEC sp_execute_postgresql 'alter extension <extension name> UPDATE TO <new_version>'; 2>go
Limitações
  • Só é possível fazer a atualização da versão da extensão usando a instrução ALTER Extension. Não há compatibilidade para outras operações.

EXTENSÃO DROP

Elimina a extensão especificada. Você também pode usar as opções if exists ou restrict para remover a extensão.

1>EXEC sp_execute_postgresql 'drop extension <extension name>'; 2>go
Limitações
  • Não há compatibilidade para a opção CASCADE.