主要观点: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 维护者讨论上游化此更改。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。