【发布时间】:2018-12-21 05:52:00
【问题描述】:
在我们的生产 Aurora RDS Postgres 数据库中,我需要使用来自 20 亿行源表的数据创建一个新表。
我需要使用 pgplsql 函数来为新表创建数据。
由于每个函数都是一个事务,我假设只用一个函数调用来做这件事是行不通的。
我正在考虑做的是:
- 创建一个函数来创建和插入一小批数据。
- 使用 java 服务或 lambda 重复调用该函数,直到所有
数据已创建。
- 不幸的是,使用 pg_cron 不是一个选项,因为 Aurora Postgres 不支持它
我希望避免创建 java 服务或 lambda(或其他任何调用函数)。
对于我们的 MS SQL 数据库,我们只需从 SSMS 运行一个脚本,该脚本将在循环中小批量创建和提交数据。 Postgres 中似乎没有类似的选项。
您还有其他建议吗?
感谢您的想法!
【问题讨论】:
-
将“批量大小”作为函数的参数。使用参数调用它并在调用后提交。但通常在一个大事务中做某事比许多小事务要快。
-
@a_horse_with_no_name 感谢您的评论。我想在一项大交易中执行此操作,但数据库将承受其他服务的负载。我假设转换 20 亿行将占用所有可用资源。
标签: postgresql performance function dml amazon-aurora