Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
随着python程序获取更多数据,MySQL查询需要更长的时间_Python_Mysql_Sql - Fatal编程技术网

随着python程序获取更多数据,MySQL查询需要更长的时间

随着python程序获取更多数据,MySQL查询需要更长的时间,python,mysql,sql,Python,Mysql,Sql,我的SQL数据库有大约20万个表,我正在制作一个简单的程序,从每个表中获取一些数据。该查询类似于: cur.execute("SELECT * FROM `%s`" % (tablename)) 当我在一个表名列表中循环并执行这个查询时,每次都会花费越来越长的时间。开始时,运行查询所需时间不到1毫秒,但到最后,每次查询所需时间高达70毫秒 是什么可能导致这种减速?如果我让程序在中途休眠10秒,查询仍然和休眠前一样慢。唯一能让它再次快速运行的是重新启动程序 感谢您的帮助[按要求作为答案发布] 有

我的SQL数据库有大约20万个表,我正在制作一个简单的程序,从每个表中获取一些数据。该查询类似于:

cur.execute("SELECT * FROM `%s`" % (tablename))
当我在一个表名列表中循环并执行这个查询时,每次都会花费越来越长的时间。开始时,运行查询所需时间不到1毫秒,但到最后,每次查询所需时间高达70毫秒

是什么可能导致这种减速?如果我让程序在中途休眠10秒,查询仍然和休眠前一样慢。唯一能让它再次快速运行的是重新启动程序


感谢您的帮助

[按要求作为答案发布]

有关一些有用的建议,请参见评论

对于一个实用的短期解决方案,您可以尝试每1000个表关闭并重新打开一次连接


但根本原因是表太多,如果可能的话,应该解决这个问题

这可以通过每1000个请求重新连接到数据库来解决。

您的数据库有二十万个表吗?当您从第一个表转到最后一个表时,这些表是否包含更多数据?如果你从最后一张桌子开始走到第一张桌子,会发生什么?疯狂的、可能毫无价值的猜测:访问表#200000比访问表#1需要更长的时间。我怀疑MySQL是否针对200000个表进行了优化。事实上,如果您有200000个表,闻起来您的设计有问题。如果您访问的第一个表,无论它在数据库中的何处,发生得很快,然后事情就会变慢,关闭每个光标后可能没有处理资源。我不是python程序员,所以一个有用的答案超出了我的能力。根据@BobKaufman的评论,如果你能排除python代码(保存资源、填充内存等)是原因,那么访问mysql中那么多表似乎就是原因。可能数据库正在试图缓存数据,或者存在占用资源的bug。对于一个实用的短期解决方案,您可以尝试每1000个表关闭并重新打开一次连接。但我也同意其他意见,即这是太多的表,您应该合并它们。