我们正在尝试将我们的数据库(mysql)移动到amazon redshift(数据仓库),我们在更新仓库数据库时遇到了问题。我们已经在我们的数据库上启用了常规日志记录,然后我们将从redshift上的常规日志重播所有这些查询。所有更新查询大约需要6-7秒。我正在寻找一些以更快的速度执行这些更新的方法? 亚马逊redshift内部使用postgre数据库,如果任何为redshift / postgre解决了这个问题的人都可以提出解决方案,那就太棒了。虽然更快地进行更新的一般方法也会有所帮助。 我尝试过的一个解决方案是将所有更新合并到一组删除和插入中。因此,单个表上的所有更新都将转换为单个删除查询,并结合where子句和单个批量插入查询。 任何人都可以提供替代解决方案或评论我尝试的解决方案吗?
答案 0 :(得分:1)
Redshift不能用作“常规”数据库 - 应使用COPY命令(或CREATE TABLE AS语法)插入所有数据,然后将其用于SELECTS。
单个行的操作(如插入或更新)不是此数据库优化的原因。
建议的解决方法(使用DELETE / INSERT)而不是UPDATE将提高速度,但要记住所有添加的行都插入到UNSORTED数据库块中,只有在VACUUM之后,所有数据都将被正确排序并且回收未使用的空间才能使用。