【发布时间】:2013-05-02 11:07:11
【问题描述】:
我们正在尝试将我们的数据库 (mysql) 移动到 amazon redshift(数据仓库),并且在更新仓库数据库时遇到了问题。我们已经在我们的数据库上启用了常规日志记录,然后我们正在从 redshift 的常规日志中重播所有这些查询。所有更新查询大约需要 6-7 秒。我正在寻找某种方式以更快的速度执行这些更新? Amazon redshift 在内部使用 postgre 数据库,如果任何为 redshift/postgre 本身解决了这个问题的人都可以提出解决方案,那就太好了。尽管使更新更快的通用方法也会有所帮助。 我尝试过的一个解决方案是将所有更新合并到一组删除和插入中。因此,单个表上的所有更新都将转换为单个删除查询,其中包含组合 where 子句和单个批量插入查询。 任何人都可以提供替代解决方案或评论我尝试过的解决方案吗?
【问题讨论】:
-
目前我们的db托管在mysql上,查询是对单个表的基本更新查询。
-
我正在从 mysql db 上的常规日志中捕获查询,并在 postgre db 上重放它们。
-
每次更新过程的行数通常在10k行左右。我们正在 Redshift 控制台上启动一个连接(这是一个单一事务),但我尝试在一个事务中运行一个查询并在一个事务中运行大约 100 个查询。结果是相同的,每个查询大约需要 6-7 秒,即单个事务中 100 次更新大约需要 600-700 秒。
-
至于执行计划,我在 redshift 上创建了一个临时数据库,有 2 列,并尝试了更新查询,“更新 table_name set column1 = 10 where column2 = 20;”这个查询需要 6 秒才能执行。
标签: mysql database amazon-redshift