适用于 Aurora PostgreSQL 的 Babelfish 过程参考 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 Aurora PostgreSQL 的 Babelfish 过程参考

概述

您可以对运行适用于 Aurora PostgreSQL 的 Babelfish 的 Amazon RDS 数据库实例使用以下过程,以提高查询性能:

sp_babelfish_volatility

PostgreSQL 函数不稳定性有助于优化器更好地执行查询,当在某些子句的某些部分中使用时,会对查询性能产生重大影响。

语法

sp_babelfish_volatility ‘function_name’, ‘volatility’

Arguments

function_name(可选)

您可以将此参数的值指定为由两部分组成的名称 schema_name.function_name,也可以仅指定 function_name。如果您仅指定 function_name,则架构名称是当前用户的原定设置架构。

volatility(可选)

有效的 PostgreSQL 不稳定性值为 stablevolatileimmutable。有关更多信息,请参阅https://www.postgresql.org/docs/current/xfunc-volatility.html

注意

当使用具有多个定义的 function_name 调用 sp_babelfish_volatility 时,将引发错误。

结果集

如果未提及参数,则结果集将显示在以下各列之下:schemanamefunctionnamevolatility

使用说明

PostgreSQL 函数不稳定性有助于优化器更好地执行查询,当在某些子句的某些部分中使用时,会对查询性能产生重大影响。

示例

以下示例显示了如何创建简单的函数,稍后将说明如何使用不同的方法在这些函数上使用 sp_babelfish_volatility

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

以下示例显示了函数的不稳定性:

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

以下示例显示了如何更改函数的不稳定性:

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

当您仅指定 function_name 时,它会显示该函数的架构名称、函数名称和不稳定性。以下示例显示了更改值后函数的不稳定性:

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

当您不指定任何参数时,它会显示当前数据库中存在的函数列表(架构名称、函数名称、函数的不稳定性):

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

sp_execute_postgresql

您可以从 T-SQL 终端节点执行 PostgreSQL 语句。这简化了您的应用程序,因为您无需退出 T-SQL 端口即可执行这些语句。

语法

sp_execute_postgresql [ @stmt = ] statement

Arguments

[ @stmt ] statement

参数的数据类型为 varchar。此参数接受 PG 方言语句。

注意

您只能传递一个 PG 方言语句作为参数,否则会引发以下错误。

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

使用说明

CREATE EXTENSION

创建新的扩展并将其加载到当前数据库中。

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

以下示例说明了如何创建扩展:

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

使用以下命令访问扩展对象:

1>select * from pg_stat_statements; 2>go
注意

如果在创建扩展期间未明确提供模式名称,则默认情况下,扩展将安装在公共模式中。您必须提供模式限定符才能访问扩展对象,如下所述:

1>select * from [public].pg_stat_statements; 2>go
支持的扩展

Aurora PostgreSQL 提供的以下扩展适用于 Babelfish。

  • pg_stat_statements

  • tds_fdw

  • fuzzystrmatch

限制
  • 用户需要在 T-SQL 上具有 sysadmin 角色,在 postgres 上具有 rds_superuser 角色才能安装扩展。

  • 扩展不能安装在用户创建的模式中,也不能安装在主数据库、tempdb 和 msdb 数据库的 dbo 和访客模式中。

  • 不支持 CASCADE 选项。

ALTER EXTENSION

您可以使用 ALTER 扩展升级到新的扩展版本。

1>EXEC sp_execute_postgresql 'alter extension <extension name> UPDATE TO <new_version>'; 2>go
限制
  • 您只能使用 ALTER Extension 语句升级扩展的版本。不支持其它操作。

DROP EXTENSION

删除指定的扩展。您也可以使用 if existsrestrict 选项删除扩展。

1>EXEC sp_execute_postgresql 'drop extension <extension name>'; 2>go
限制
  • 不支持 CASCADE 选项。