gpt4 book ai didi

python - 如果 SQL 查询花费更多时间而 CONN_MAX_AGE 的剩余年龄更少,会发生什么情况?

转载 作者:行者123 更新时间:2023-12-04 03:53:04 25 4
gpt4 key购买 nike

使用:

  • Django 1.10 和 MySQL

当特定查询需要较长时间时,我想使查询超时。我发现的最接近的事情是这个。 https://docs.djangoproject.com/en/1.10/ref/settings/#conn-max-age

CONN_MAX_AGE

The lifetime of a database connection, in seconds. Use 0 to close database connections at the end of each request — Django’s historical behavior — and None for unlimited persistent connections.

让我们假设以下场景:

  • CONN_MAX_AGE 设置为 5 秒
  • 平均而言,每个数据库查询需要 3 秒。

  1. 请求 #1 进来,因为没有事件的连接,它创建一个连接并将连接期限设置为 5 秒。
  2. 请求 #1 在 3 秒后完成,conn 过期的剩余时间为 2 秒。
  3. 现在,请求 #2 进来了,因为 conn 可用,所以它使用旧的打开的 conn。

现在,请求 #2 会怎样?它会成功完成还是会终止,因为此查询正在使用的 conn 的到期时间更短?

最佳答案

不,CONN_MAX_AGE 仅在请求完成后才开始。它用于汇集现有连接,而不是不断关闭和打开新连接。

您正在寻找的是 MySQL 的 max_execution_time 设置:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
...
'OPTIONS': {
'init_command': 'SET max_execution_time=5000'
}
}
}

这会将每个语句限制为最多 5 秒。

关于python - 如果 SQL 查询花费更多时间而 CONN_MAX_AGE 的剩余年龄更少,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64150438/

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