MySql执行超时怎么设置?
MySql有没有执行超时? 不是指连接超时,而是指让一条Sql语句的执行必须在规定时间内完成,否则退出返回。MySql 提供这种机制吗?有的话该怎么设置(c api)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
MySql有没有执行超时? 不是指连接超时,而是指让一条Sql语句的执行必须在规定时间内完成,否则退出返回。MySql 提供这种机制吗?有的话该怎么设置(c api)?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
没听说mysql提供。不过UNIX/POSIX提供。
你可以man setitimer、man alarm/sigaction看看;如果是多线程,可以考虑POSIX实时扩展,timer_create、timer_settime系列函数。
to albcamus :
你说的那种在客户程序端进行超时控制的方式我已经通过多线程实现了。就是用一个线程来执行一条sql语句的执行,当一个新任务到达时,而前一个sql语句的执行却超时且还没有返回,则会启用一个新的线程来处理这个任务,去执行sql语句。但是,这样做会有一个比较极限的问题:如果在较长时间内现有的sql语句都未能返回时,我的线程就会越来越多,当线程数达到上限时任务便会被抛弃或拒绝,则这段长时间内任务都将不能得到即时处理。这个时候如果数据库端有sql执行超时的机制的话,我的线程也就能按时安全退出了。
我的系统对实时性稳定性要求非常高,较长一段时间内不能处理任务是不能接受的。如果这两段的机制结合起来,整个结构就会比较好一些。
>;>;我的线程就会越来越多,当线程数达到上限时任务便会被抛弃或拒绝,则这段长时间内任务都将不能得到即时处理。这个时候如果数据库端有sql执行超时的机制的话,我的线程也就能按时安全退出了。
个人理解,应该作成线程池。不用为query启动/杀死线程,而是唤醒/阻塞线程。
可能我描述的不好,我用的就是线程池。当任务到达后会排队等待线程的分配。分配到线程后各自处理,然后再和其它线程竞争数据库连接。这个时候就可能会出现我前面所说的那种情况了。