随着python程序获取更多数据,MySQL查询需要更长的时间
我的SQL数据库有大约20万个表,我正在制作一个简单的程序,从每个表中获取一些数据。该查询类似于:随着python程序获取更多数据,MySQL查询需要更长的时间,python,mysql,sql,Python,Mysql,Sql,我的SQL数据库有大约20万个表,我正在制作一个简单的程序,从每个表中获取一些数据。该查询类似于: cur.execute("SELECT * FROM `%s`" % (tablename)) 当我在一个表名列表中循环并执行这个查询时,每次都会花费越来越长的时间。开始时,运行查询所需时间不到1毫秒,但到最后,每次查询所需时间高达70毫秒 是什么可能导致这种减速?如果我让程序在中途休眠10秒,查询仍然和休眠前一样慢。唯一能让它再次快速运行的是重新启动程序 感谢您的帮助[按要求作为答案发布] 有
cur.execute("SELECT * FROM `%s`" % (tablename))
当我在一个表名列表中循环并执行这个查询时,每次都会花费越来越长的时间。开始时,运行查询所需时间不到1毫秒,但到最后,每次查询所需时间高达70毫秒
是什么可能导致这种减速?如果我让程序在中途休眠10秒,查询仍然和休眠前一样慢。唯一能让它再次快速运行的是重新启动程序
感谢您的帮助[按要求作为答案发布] 有关一些有用的建议,请参见评论 对于一个实用的短期解决方案,您可以尝试每1000个表关闭并重新打开一次连接
但根本原因是表太多,如果可能的话,应该解决这个问题 这可以通过每1000个请求重新连接到数据库来解决。您的数据库有二十万个表吗?当您从第一个表转到最后一个表时,这些表是否包含更多数据?如果你从最后一张桌子开始走到第一张桌子,会发生什么?疯狂的、可能毫无价值的猜测:访问表#200000比访问表#1需要更长的时间。我怀疑MySQL是否针对200000个表进行了优化。事实上,如果您有200000个表,闻起来您的设计有问题。如果您访问的第一个表,无论它在数据库中的何处,发生得很快,然后事情就会变慢,关闭每个光标后可能没有处理资源。我不是python程序员,所以一个有用的答案超出了我的能力。根据@BobKaufman的评论,如果你能排除python代码(保存资源、填充内存等)是原因,那么访问mysql中那么多表似乎就是原因。可能数据库正在试图缓存数据,或者存在占用资源的bug。对于一个实用的短期解决方案,您可以尝试每1000个表关闭并重新打开一次连接。但我也同意其他意见,即这是太多的表,您应该合并它们。