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

0

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

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

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

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

profile picture
EXPERTE
gefragt vor 8 Monaten11 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen