-1

如何更新mysql数据库中的命令超时。我知道如何在应用程序级别执行此操作,但我想在db end更改命令超时。所以我只能在一个地方改变它。在应用程序端,我正在使用

"default command timeout = 0"

它工作正常。但是谁能告诉我如何在 db 端做同样的事情?

4

1 回答 1

1

答案是:你不能。为什么?因为命令超时特定于 MySQL .Net 连接器:

设置要使用的命令超时的默认值。这不会取代单个命令对象上的单个命令超时属性。如果您设置命令超时属性,将使用该属性。此选项是在 Connector/Net 5.1.4 中添加的

正如MySqlCommand 对象上的 MySQL 文档所说:

在 MySQL Connector/Net 6.2 之前,MySqlCommand.CommandTimeout 包括用户处理时间,即与直接使用连接器无关的处理时间。超时是通过 .NET 计时器实现的,该计时器在 CommandTimeout 秒后触发。这个计时器消耗了一个线程。

MySQL Connector/Net 6.2 引入了与 Microsoft 处理 SqlCommand.CommandTimeout 的方式一致的超时。此属性是命令执行或结果处理期间所有网络读取和写入的累积超时。MySqlReader.Read 方法在返回第一行后仍然会发生超时,并且不包括用户处理时间,只包括 IO 操作。6.2 实现使用底层流超时功能,因此更有效,因为它不需要像以前的实现那样额外的计时器线程。

因此,在 6.2 之前,命令超时包括客户端处理时间——这显然不能在服务器端考虑。

自 6.2 起,行为发生了变化,不包括客户端处理时间。但是,它现在被定义为“所有网络读取和写入的累积超时” 。在 MySQL 服务器中,您可以配置各种超时,但这些超时不是累积的,也不适用于读取和写入。只有单独的读取和写入超时。因此,没有将此连接器参数映射到 MySQL 配置。

于 2017-07-24T09:15:25.733 回答