Referencia de procedimientos de Babelfish para Aurora PostgreSQL - Amazon Aurora

Referencia de procedimientos de Babelfish para Aurora PostgreSQL

Información general

Puede utilizar el siguiente procedimiento para las instancias de base de datos de Amazon RDS que ejecuten Babelfish para Aurora PostgreSQL para obtener un mejor rendimiento de las consultas:

sp_babelfish_volatility

La volatilidad de las funciones de PostgreSQL ayuda al optimizador a ejecutar mejor las consultas, lo que, cuando se usa en partes de determinadas cláusulas, tiene un impacto significativo en el rendimiento de las consultas.

Sintaxis

sp_babelfish_volatility ‘function_name’, ‘volatility’

Argumentos

function_name (opcional)

Puede especificar el valor de este argumento con un nombre de dos partes como schema_name.function_name o solo el function_name. Si especifica solo el function_name, el nombre del esquema será el esquema predeterminado para el usuario actual.

volatility (optional)

Los valores de volatilidad válidos de PostgreSQL son stable, volatile o immutable. Para obtener más información, consultar https://www.postgresql.org/docs/current/xfunc-volatility.html

nota

Cuando sp_babelfish_volatility se llama con un function_name con múltiples definiciones, arrojará un error.

Conjuntos de resultados

Si no se mencionan los parámetros, el conjunto de resultados se muestra en las siguientes columnas: schemaname, functionname, volatility.

Notas de uso

La volatilidad de las funciones de PostgreSQL ayuda al optimizador a ejecutar mejor las consultas, lo que, cuando se usa en partes de determinadas cláusulas, tiene un impacto significativo en el rendimiento de las consultas.

Ejemplos

En los siguientes ejemplos se muestra cómo crear funciones simples y, posteriormente, se explica cómo utilizar sp_babelfish_volatility en estas funciones mediante diferentes métodos.

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

El siguiente ejemplo muestra la volatilidad de las funciones:

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

El siguiente ejemplo muestra cómo cambiar la volatilidad de las funciones:

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

Al especificar solo el function_name, se muestran el nombre del esquema, el nombre de la función y la volatilidad de esa función. El siguiente ejemplo muestra la volatilidad de las funciones después de cambiar los 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

Si no especifica ningún argumento, se muestra una lista de funciones (nombre del esquema, nombre de la función, volatilidad de las funciones) presentes en la base de datos actual:

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

sp_execute_postgresql

Puede ejecutar instrucciones PostgreSQL desde el punto de conexión de T-SQL. Así se simplifican las aplicaciones, ya que no es necesario salir del puerto T-SQL para ejecutar las instrucciones.

Sintaxis

sp_execute_postgresql [ @stmt = ] statement

Argumentos

Instrucción [@stmt]

El argumento es de tipo varchar. Este argumento acepta instrucciones del dialecto PG.

nota

Como argumento solo puede especificarse una instrucción del dialecto PG; de lo contrario, se generará el error siguiente:

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

Notas de uso

CREATE EXTENSION

Crea y carga una nueva extensión en la base de datos actual.

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

En el ejemplo siguiente se muestra cómo crear una extensión:

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

Utilice el comando siguiente para obtener acceso a objetos de extensión:

1>select * from pg_stat_statements; 2>go
nota

Si el nombre del esquema no se proporciona de forma explícita cuando se crea la extensión, las extensiones se instalan de forma predeterminada en el esquema público. Debe proporcionar el calificador de esquema para tener acceso a los objetos de la extensión, como se indica a continuación:

1>select * from [public].pg_stat_statements; 2>go
Extensiones compatibles

Las siguientes extensiones disponibles con Aurora PostgreSQL funcionan con Babelfish.

  • pg_stat_statements

  • tds_fdw

  • fuzzystrmatch

Limitaciones
  • Los usuarios deben tener el rol sysadmin en T-SQL y rds_superuser en postgres para instalar las extensiones.

  • Las extensiones no se pueden instalar en los esquemas creados por el usuario ni tampoco en los esquemas dbo y guest de las bases de datos master, tempdb y msdb.

  • La opción CASCADE no es compatible.

ALTER EXTENSION

Puede actualizar a una nueva versión de la extensión utilizando ALTER EXTENSION.

1>EXEC sp_execute_postgresql 'alter extension <extension name> UPDATE TO <new_version>'; 2>go
Limitaciones
  • La versión de la extensión solamente se puede actualizar con la instrucción ALTER EXTENSION. No se admiten otras operaciones.

DROP EXTENSION

Elimina la extensión especificada. También puede usar las opciones if exists o restrict para eliminar la extensión.

1>EXEC sp_execute_postgresql 'drop extension <extension name>'; 2>go
Limitaciones
  • La opción CASCADE no es compatible.