首页 > 解决方案 > 用于创建索引的 Aurora PostgreSQL 临时存储问题

问题描述

我们已将部分数据从 MS-SQL Server 迁移到 PostgreSQL。并且正在使用 R6G.Large aurora PostgreSQL RDS 实例。我们使用 DMS 将数据传输到 PostgreSQL 实例,表大小约为 183 GB,大约有 15 亿条记录。现在我们正在尝试在 Id 列上创建主键,但它失败并出现以下错误......

错误:无法写入文件“base/pgsql_tmp/pgsql_tmp18536.30”:设备上没有剩余空间上下文:SQL 语句“ALTER TABLE public.tbl_actions ADD CONSTRAINT tbl_actions_pkey PRIMARY KEY (action_id)”PL/pgSQL 函数 inline_code_block 第 10 行 SQL语句 SQL 状态:53100

查看文档时,我们发现索引创建将使用实例的临时存储,而 r6g.large 有 32 GiB。对于这个巨大的表,存储空间不足,因此索引创建失败并出现上述错误。

是否有任何解决方法可以在无需升级实例类型的情况下解决此问题,可能是通过更改参数组或选项组中的某些值。

标签: postgresqlamazon-aurora

解决方案


对我来说,这看起来像是存储空间已经用完,而不是 RAM。您可以使用 AWS 控制台中 RDS 实例上“可用存储空间”标题下的“监控”选项卡进行检查。

尝试这个:

增加数据库实例的存储空间

  1. 登录 AWS 管理控制台并在https://console.aws.amazon.com/rds/打开 Amazon RDS 控制台。
  2. 在导航窗格中,选择数据库。
  3. 选择要修改的数据库实例。
  4. 选择修改。
  5. 为分配的存储输入一个新值。它必须大于当前值。

更多细节在这里:

  1. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.Storage
  2. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Troubleshooting.html#CHAP_Troubleshooting.Storage

推荐阅读