60K次对RDS Postgres的更新 - 性能挑战

0

【以下的问题经过翻译处理】 一位客户想要在他们的RDS Postgres实例中处理大约60,000个表更新,但在测试中遇到性能问题,这意味着更新需要花费超过30个小时才能完成。这些更新是为了从单个表格中读取用户名(电子邮件地址),将它们从混合大小写更改为小写,并将它们写回数据库。

更新的过程是在容器中运行的bash脚本,并且每个更新需要几分钟才能处理。RDS实例是PostrGres(不是Aurora),并运行db.m5.large实例。

在我与客户进行调查(让他们查看RDS实例的指标等)期间,我正在寻找可能的瓶颈的想法。一个明显的想法是在更新期间增加实例大小,然后在完成后降低实例大小。

还有其他关于PostGres调优的想法可以帮助吗?

profile picture
专家
已提问 8 个月前8 查看次数
1 回答
0

【以下的回答经过翻译处理】 由于客户正在更新JSON文档中的值,因此只需使用内置的PostgreSQL JSON函数。

postgres=> CREATE TABLE test_json (a int, b jsonb); CREATE TABLE postgres=> INSERT INTO test_json postgres-> VALUES (1, '{"key1": "abc"}'), (2, '{"key1": "xyz"}'); INSERT 0 2 postgres=> UPDATE test_json postgres-> SET b = jsonb_set(b, '{key1}', (upper((b->'key1')::text))::jsonb); UPDATE 2 postgres=> SELECT * FROM test_json; a | b
---+----------------- 1 | {"key1": "ABC"} 2 | {"key1": "XYZ"} (2 rows)

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则