如何在mysql 5.6版本中支持命令超时?我正在寻找一个类似于ADO.NET但在python中的CommandTime



我是python的新手,想在mysql(5.6(中做ADO.NET CommandTimeout属性所做的事情(设置查询的执行时间(。

我正在寻找任何可以默认支持它的内置python库(我已经尝试过pymysql、pyodbc和mysql.connector(,或者最好的方法是什么,以防我不得不从头开始发明轮子。

我使用的是一个旧的mysql版本(5.6(,我之所以强调这一点,是因为在研究中我发现,通过使用以下命令,这可以在mysql5.7以后的版本中实现

SET SESSION MAX_EXECUTION_TIME=2000;
SET GLOBAL MAX_EXECUTION_TIME=2000;

我已经浏览过的参考链接建议在mysql5.7及以上版本中使用一个解决方案:http://mysqlserverteam.com/server-side-select-statement-timeouts/https://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html#optimizer-提示执行时间

但我正在mysql中寻找一个解决方案5.6,提前感谢。

所以我终于能够解决这个问题,通过创建一个基于计时器调用的线程/进程,如下所示:

query_monitoring_thread = threading.Timer(self.__command_timeout, self.kill_query,
args=[mydb.connection_id, source])

线程将获取当前用户创建的所有进程,并且当前用户执行的时间超过命令超时时间,并杀死存在的进程:

cursor.execute(
"Select Id From Information_Schema.Processlist where Id={0} AND User='{1}' AND Time >= {2}".format(
conn_id, conn.user, self.__command_timeout))
records = cursor.fetchall()
if len(records) > 0:
cursor.execute('Kill query ' + str(conn_id))

相关内容

最新更新