Oceanbase的慢查询日志只能从日志文件获取麽?能不能像MySQL一样有个mysql.slow_log表

如题,MySQL可以很方便的通过mysql.slow_log表来使用SQL语句做格式化分析查询。但是Oceanbase把慢查询记录到文本日志当中,这点不是很方便,一方面日志文本本身就大,打开很慢,而且因为不是结构化存储,像过滤分析也不可能(比如查执行时间大于10秒或20秒的语句,通过SQL查询就比较好用)

还有官方是支持利用OCP来实现这个目的的,但是这个方案必须配备一台高性能服务器来单独不是实现,对于中小企业来说服务器资源没有那么宽裕,还不能因为不是OCP来去单独购买服务器,希望官网能提供记录慢查询到Table表的方式。

1 个赞

ocp-租户-SQL诊断,里面都是图形操作慢SQL相关都有。
image

上面的帖子已经说明,OCP的部署需要服务器资源支持,我们不具备部署OCP的条件的。所以发帖咨询建议。OCP能看SQL诊断我知道也很想用,奈何没有条件部署

SQL_AUDIT里面记录了所有执行过的SQL信息,你查询这个不是也可以吗

SQL_AUDIT的目的是记录实时SQL,并且是内存临时存储,会因为过期或内存策略自动覆盖较早的数据,而慢日志是永久存储,并且是只记录执行时间超过设置的时间阀值才记录。

这两者的设计目的都不同,无法相互替代的。

没有slow.log,可以查audit 大于多几秒的查出来呢。

对,我知道Oceanbase没有。Audit现阶段能用,只是Audit的淘汰策略就决定了它无法100%应对慢查询记录的存储。因为可能过了1星期了集中分析慢查询,但是Audit可能就已经淘汰了较早的记录
GV$OB_SQL_AUDIT-V4.4.1-OceanBase 数据库文档-分布式数据库使用文档

不装ocp就得自己写程序收集了吧

没有slow.log,社区版sql audit不会持久化,需要自己去做持久化

OCP服务器是多集群复用的,申请一台应该还好吧,如果实在企业比较小,没上规模化,感觉sql_audit也就够用了 :smiley:

现在也无非2个操作。

  1. 加大淘汰内存区。
  2. 写个脚本,定时取慢日志存到外面来。

企业版的话,有一个工具,可以定时导出sql_audit记录为csv,长期持久化保存

企业版是有适配的工具,定时连上去,导出记录成csv并且压缩打包的。

试试 把 obproxy_slow.log 搞成外部表,是否能满足您的需求

sql_audit记录导出去,扔到日志平台这样会比较友好。
一般公司都是有日志平台的,导出记录到日志平台,也可以持久化,多维度查询。

同问

学习中