从快照恢复后,RDS实例速度非常慢

时间:2017-12-08 15:56:06

标签: postgresql amazon-s3 amazon-rds

详细信息:

数据库:Postgres。
版本:9.6
主持人:亚马逊RDS

问题:从快照恢复后,数据库速度非常慢。

为什么: AWS称之为"第一次接触惩罚"。当新恢复的实例可用时,EBS卷附件已完成,但并非所有数据都已从S3迁移到连接的EBS卷。只有在最初"触摸"数据将RDS意识到数据不在EBS卷上,它需要从S3中提取数据。这完全破坏了我们的表现。我们也无法使用ddfio预先触摸数据,因为RDS不允许访问已安装的EBS卷。

我已完成的工作:与AWS支持小组联系。他们承认这是一个问题,他们正在努力解决这个问题,唯一的解决办法就是从所有表格中select *

为什么我仍然需要帮助select *策略确实加快了速度(我从public架构中选择了所有内容),但没有达到需要的程度。所以我读了postgres stores data to disk的方法。磁盘上有很多东西不会被触及"通过从用户定义的表中进行简单的选择。

我的问题:仅限于SQL查询/函数而且无法直接访问底层磁盘,我可以使用哪些最好的sql语句来触摸"尽可能在磁盘上将它从S3加载到EBS卷上?

1 个答案:

答案 0 :(得分:1)

我的建议是手动触发真空分析,这将对范围内的每个表执行全表扫描,以使用新的统计信息更新计划程序。例如,如果在一个主机中有多个数据库,则可以相当容易地将此​​范围仅限于某个模式,相关数据库和Postgres模式可以帮助缩短总时间。

操作相当耗时,我不知道并行化的好方法。还有vacuumdb实用程序,但这只是运行一个带有vacuum语句的查询。

资料来源:几天前我就RDS支持这个问题。

[1] https://www.postgresql.org/docs/9.5/static/sql-vacuum.html

编辑:稍后会在手机上重新格式化