破解我们的 PostgreSQL 驱动程序以从 Amazon RDS 性能洞察中获取更多信息

主要观点:Knock 提供简单 API 用于产品通知,近期致力于改善亚马逊 Aurora PostgreSQL 数据库中昂贵交易的压力,希望利用 Amazon RDS Performance Insights 识别性能最差的交易,但 AWS 指标将所有交易性能归为单个COMMIT语句,通过修改 Elixir PostgreSQL 驱动 Postgrex,在COMMIT语句前添加 SQL 注释,使性能洞察能枚举最昂贵的交易,从而解决问题并获得更细粒度的性能洞察。
关键信息

  • Knock 用 Amazon Aurora PostgreSQL 实例,当前在解决通知引擎数据库的性能瓶颈。
  • RDS 大多活跃会话归因于IO:XactSync事件,且顶级查询为COMMIT
  • 虽尝试多种方法降低IO:XactSync会话压力但效果不佳。
  • 最终通过在COMMIT语句前添加 SQL 注释,使 Aurora 能枚举交易,从而更准确识别最昂贵交易。
    重要细节
  • Amazon RDS Performance Insights 可可视化数据库负载,突出系统中最昂贵的查询等。
  • 文中详细介绍了在 Elixir 中修改 Postgrex 驱动添加注释的代码实现过程,包括找到执行COMMIT语句的位置及编写宏自动生成注释等。
  • 实施该方法后能更自信地识别最昂贵交易,目前正致力于更积极地批处理通知消息事件等工作,且决定将此功能永久应用于核心后端运行时,并与 Ecto 维护者讨论上游化此更改。
阅读 13
0 条评论