我有一个sqlselect查询,大约需要20秒,我想使用mysql缓存来缓存结果,这样我可以快速得到结果。在
在中进行一些配置后我的.cnf,我在linuxmysql客户端控制台中运行select查询时成功地实现了这一点。在
添加的行我的.cnf是:
query_cache_size = 268435456
query_cache_type = 1
query_cache_limit = 1048576
但是当我从网页.py代码。缓存功能似乎不起作用,也就是说执行时间不比以前短。在
下面是网页.py代码:
^{pr2}$我需要添加任何参数来启用缓存吗?在
我通过在运行查询之前执行setautocommit=1来解决这个问题。现在代码是:
import web
db = web.database(dbn='mysql', db='RLCM', user='guest', pw='guest')
sql = "SET autocommit=1;"
db.query(sql);
sql = "SELECT xxx from xx"
results = db.query(sql);
更改
my.cnf
文件后,是否重新启动了mysql服务器?在下面是一个简短的过程,可以帮助您确定问题所在:
1.确保查询缓存已打开。在
根据http://dev.mysql.com/doc/refman/5.0/en/query-cache-configuration.html 您总是使用标准二进制文件得到
have_query_cache YES
。但是query_cache_type
字段是一个指示符。在2.检查缓存的状态
^{pr2}$每次发送查询时,如果缓存正常,}应该是+1。在
Qcache_hits
应该是+1,否则{3.如果缓存已打开,但不知何故无法获得缓存结果,则可能需要了解MySQL的缓存是如何工作的:http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html
注意:您可能希望使用网页.py环境和mysql控制台。如果看到不同的结果,则某些缓存相关设置可能会有所不同。为什么?由于这些sql是在不同的会话中执行的,所以MySQL可以在会话级别设置一些配置。在
相关问题 更多 >
编程相关推荐