bbu*_*123 6 postgresql amazon-s3 amazon-rds
细节:
数据库:Postgres.
版本:9.6
主机:亚马逊RDS
问题:从快照还原后,数据库速度非常慢.
为什么: AWS称之为"第一次触摸惩罚".当新恢复的实例可用时,EBS卷附件已完成,但并非所有数据都已从S3迁移到连接的EBS卷.只有在最初"触摸"数据后,RDS才会意识到数据不在EBS卷上,而是需要从S3中取出数据.这完全破坏了我们的表现.我们也无法使用dd或fio预先触摸数据,因为RDS不允许访问已安装的EBS卷.
我做了什么:联系AWS支持.他们承认这是一个问题,他们正在研究它,唯一的解决方案是select *来自所有表格.
为什么我仍然需要帮助:该select *策略确实加快速度吧(我选择的一切,从public架构),但不如是必要的.所以我读到了postgres如何将数据存储到磁盘.磁盘上有很多东西,不会被用户定义的表中的简单选择"触及".
我的问题:仅限于SQL查询/函数而不能直接访问底层磁盘,我可以使用哪些最好的sql语句在磁盘上"触摸"以便将其加载到EBS上来自S3的音量?
小智 6
我的建议是手动触发真空分析,这将对范围内的每个表进行全表扫描,以使用新的统计信息更新规划器。您可以很容易地将其范围限定为某个特定模式,例如,如果您在一台主机中有多个数据库,则有问题的数据库和 Postgres 模式可以帮助缩短总时间。
该操作相当耗时,我不知道并行化它的好方法。还有vacuumdb实用程序,但这只是运行一个带有vacuum语句的查询。
来源:几天前我问 RDS 支持这个问题。
[1] https://www.postgresql.org/docs/9.5/static/sql-vacuum.html
编辑:稍后将在移动设备上重新格式化
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |