我有许多在 Volt 中运行的存储过程,其中 1 个似乎时不时地导致 CPU 出现峰值,但我不知道是哪一个。
有没有什么地方我可以看到所有运行的存储过程的历史,以便我可以根据它发生的时间查明有问题的存储过程?
我试过打开命令日志,但它是一个二进制文件,所以我无法读取它。
我的下一个选项是从存储过程内部记录,但我更愿意将此选项保留为最后的手段,因为它需要一些额外的开发/部署,并且与内部过程无关。
有什么方法可以记录/以某种方式查看存储过程何时运行?
我有许多在 Volt 中运行的存储过程,其中 1 个似乎时不时地导致 CPU 出现峰值,但我不知道是哪一个。
有没有什么地方我可以看到所有运行的存储过程的历史,以便我可以根据它发生的时间查明有问题的存储过程?
我试过打开命令日志,但它是一个二进制文件,所以我无法读取它。
我的下一个选项是从存储过程内部记录,但我更愿意将此选项保留为最后的手段,因为它需要一些额外的开发/部署,并且与内部过程无关。
有什么方法可以记录/以某种方式查看存储过程何时运行?
VoltDB 中没有用户可以查看的每个事务的日志。命令日志不是可读的,只包括写入。但是,您可以使用一些工具来识别性能不佳或运行时间长的过程。
您可以调用“exec @Statistics PROCEDUREPROFILE 0;” 获取所有已执行过程的摘要,包括调用次数和平均执行时间(以纳秒为单位)。如果一个特定的程序是问题,它可能会突出。
您还可以在 volt.log 文件中查找短语“正在花费很长时间”,这是在过程或 SQL 语句执行时间超过 1 秒时打印的消息。
此外,tools 子目录中有一个名为 watch_performance.py 的脚本,可用于监控性能。它类似于调用“exec @Statistics PROCEDUREPROFILE 0;” 定期,除了从其他 @Statistics 选择器收集的一些列,并且输出经过格式化以提高可读性。“./watch_performance.py -h”将输出帮助和使用信息。例如,您可以在性能负载期间运行此程序以了解工作负载。或者,您可能会在更长的时间段内运行它,也许以更小的间隔运行,以查看工作负载随时间的波动。
披露:我为 VoltDB 工作