Aurora DSQL 中不支持的 PostgreSQL 功能 - Amazon Aurora DSQL

Aurora DSQL 中不支持的 PostgreSQL 功能

Aurora DSQL 与 PostgreSQL 兼容。这意味着 Aurora DSQL 支持核心关系功能,例如 ACID 事务、二级索引、联接、插入和更新。有关支持的 SQL 功能的概述,请参阅支持的 SQL 表达式

以下各节重点介绍 Aurora DSQL 中目前不支持哪些 PostgreSQL 功能。

不支持的对象

Aurora DSQL 不支持的对象包括:

  • 单个 Aurora DSQL 集群上的多个数据库

  • 临时表

  • 触发

  • 类型(部分支持)

  • 表空间

  • 用 SQL 以外的语言编写的函数

  • 序列

  • 分区

不支持的约束

  • 外键

  • 排他性约束

不受支持的命令

  • ALTER SYSTEM

  • TRUNCATE

  • SAVEPOINT

  • VACUUM

    注意

    Aurora DSQL 不需要 vacuum 操作。系统无需手动 vacuum 命令,即可自动维护统计数据并管理存储优化。

不支持的扩展

Aurora DSQL 不支持 PostgreSQL 扩展。下表显示了不受支持的扩展:

  • PL/pgSQL

  • PostGIS

  • PGVector

  • PGAudit

  • Postgres_FDW

  • PGCron

  • pg_stat_statements

不支持的 SQL 表达式

下表描述了 Aurora DSQL 中不支持的子句。

类别 主要子句 不支持的子句

CREATE

INDEX ASYNC

ASC | DESC

CREATE

INDEX 1

TRUNCATE

ALTER

SYSTEM

所有 ALTER SYSTEM 命令都被阻止。

CREATE

TABLE

COLLATE, AS SELECT, INHERITS, PARTITION

CREATE

FUNCTION

LANGUAGE non-sql-lang,其中 non-sql-lang 是除 SQL 之外的任何语言

CREATE

TEMPORARY

TABLES

CREATE

EXTENSION

CREATE

SEQUENCE

CREATE

MATERIALIZED

VIEW

CREATE

TABLESPACE

CREATE

TRIGGER

CREATE

TYPE

CREATE

DATABASE

您无法创建其它数据库。

1 请参阅 Aurora DSQL 中的异步索引,以便在指定表的列上创建索引。

Aurora DSQL 有关 PostgreSQL 兼容性的注意事项

使用 Aurora DSQL 时,请考虑以下兼容性限制。有关一般注意事项,请参阅使用 Amazon Aurora DSQL 的注意事项。有关配额和限制,请参阅 Amazon Aurora DSQL 中的集群配额和数据库限制

  • Aurora DSQL 使用单个名为 postgres 的内置数据库。您无法创建其它数据库,也无法重命名或删除 postgres 数据库。

  • postgres 数据库使用 UTF-8 字符编码。您不能更改编码。

  • 数据库仅使用 C 排序规则。

  • Aurora DSQL 使用 UTC 作为系统时区。您无法使用参数或 SQL 语句(如 SET TIMEZONE)修改时区。

  • PostgreSQL Repeatable Read 的事务隔离级别是固定的。

  • 事务具有以下约束:

    • 事务不能混合 DDL 和 DML 操作

    • 一个事务只能包含 1 条 DDL 语句

    • 一个事务最多可以修改 3000 行,而无论二级索引的数量如何

    • 3000 行的限制适用于所有 DML 语句(INSERTUPDATEDELETE

  • 数据库连接在 1 小时后超时。

  • Aurora DSQL 目前不让您运行 GRANT [permission] ON DATABASE。如果您尝试运行该语句,Aurora DSQL 会返回错误消息 ERROR: unsupported object type in GRANT

  • Aurora DSQL 不让非管理员用户角色运行 CREATE SCHEMA 命令。您无法运行 GRANT [permission] on DATABASE 命令并授予对数据库的 CREATE 权限。如果非管理员用户角色尝试创建架构,Aurora DSQL 会返回错误消息 ERROR: permission denied for database postgres

  • 非管理员用户无法在公有架构中创建对象。只有管理员用户才能在公有架构中创建对象。管理员用户角色有权向非管理员用户授予对这些对象的读取、写入和修改权限,但不能授予对公有架构本身的 CREATE 权限。非管理员用户必须使用不同的、用户创建的架构来创建对象。

  • Aurora DSQL 不支持命令 ALTER ROLE [] CONNECTION LIMIT。如果您需要提高连接限制,请联系 AWS 支持人员。

  • Aurora DSQL 不支持 asyncpg,这是一款适用于 Python 的异步 PostgreSQL 数据库驱动程序。