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 中不支持的子句。
类别 | 主要子句 | 不支持的子句 |
---|---|---|
|
|
|
|
|
|
|
||
|
|
所有 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
您无法创建其它数据库。 |
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 语句(
INSERT
、UPDATE
、DELETE
)
-
-
数据库连接在 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 数据库驱动程序。