gpt4 book ai didi

sql - 为什么 Timeout.timeout(sec) 不适用于 activerecord

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:02 25 4
gpt4 key购买 nike

我运行以下代码来捕获任何可能挂起的 SQL 语句。在尝试对此进行测试时,我编写了一个非常优化的 sql 语句,它需要一分钟的时间才能运行。我在 activerecord execute sql 语句周围放置了一个 20 秒的超时包装器,但它似乎并没有因为花费很长时间而中断 sql 调用。这是针对 Oracle 数据库运行的。

  start_time = Time.now
Timeout.timeout(20) do #20 timeout for long running sql
@connection.connection.execute(sql_string)
end
total_sql_time = Time.now - start_time
puts "Sql statement took #{total_sql_time} seconds

输出

  Sql statement took 64 seconds

最佳答案

(只是猜测……)

Ruby 的 Timeout.timeout() 的运行方式可能与 equivalent function in PHP 的运行方式大致相同。 ,也就是说它计算在 Ruby 中执行的时间,并在您等待数据库查询运行、等待完成读取或写入文件、等待网络请求完成等时停止计数——即等待任何与 IO 相关的东西。

关于sql - 为什么 Timeout.timeout(sec) 不适用于 activerecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22565651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com