开发者社区 问答 正文

OceanBase数据库中在call一个存储过程的时候开头到结束都时行了输出 时差在2秒左右是为啥?

老师好,我遇到一个问题就是在call一个存储过程的时候 这个将近用了50多秒 ,然后我过程里面添加了这行代码,从开头到结束都时行了输出, 时差项多在2秒左右,这是咋回事儿 啊?106f7e88f597a4244712bab3593d1fa8.png
250af5bebbd4c030d9999a7c9dea6933.png

展开
收起
曹凯1211 2023-08-02 13:38:08 144 分享 版权
2 条回答
写回答
取消 提交回答
  • 我也碰到同样的问题,就是call开始到调用存储过程最开始的第一条语句,中间有几十秒的延时。不知道这个时间浪费到哪里了。

    就是CALL到真正运行起来存储过程,耗费了几十秒。

    我怀疑是oceanbase的BUG问题

    2023-12-04 11:59:26
    赞同 1 展开评论
  • 北京阿里云ACE会长

    存储过程内部逻辑复杂,花费较多时间运行。存储过程中有循环、连接表等操作,花费了很多时间。

    存储过程调用了其他存储过程或函数,增长了运行时间。

    数据库负载高,存储过程需要等待数据库资源,延长了运行时间。

    网络延迟,存储过程 residing 在另一个数据库实例上,需要通过网络调用,带来了额外的延迟。

    有时间消耗较高的操作,如文件 I/O、锁等。

    数据库配置不足,如内存、CPU 等资源紧张,影响执行效率。

    存储过程中有缓慢的 SQL 语句。

    为了定位原因,你可以采取以下方式:

    分割存储过程,每部分输出运行时间,找出时间花费最多的部分。
    观察执行计划,查看 SQL 执行效率。
    临时去除部分非关键逻辑,看是否能缩短执行时间。
    增加存储过程中的输出信息,来追踪具体运行过程。
    查看数据库性能监控指标,如CPU使用率、内存使用情况等。

    2023-08-02 19:41:54
    赞同 展开评论