网页.pymysql查询缓存

2024-06-16 13:27:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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);

Tags: 代码pyweb网页客户端cachedbsql
1条回答
网友
1楼 · 发布于 2024-06-16 13:27:26

更改my.cnf文件后,是否重新启动了mysql服务器?在

下面是一个简短的过程,可以帮助您确定问题所在:

1.确保查询缓存已打开。在

sql> show variables like '%query_cache%'
have_query_cache      YES
query_cache_limit   1048576
query_cache_min_res_unit    4096
query_cache_size     1048576
query_cache_type     ON
query_cache_wlock_invalidate      OFF

根据http://dev.mysql.com/doc/refman/5.0/en/query-cache-configuration.html 您总是使用标准二进制文件得到have_query_cache YES。但是query_cache_type字段是一个指示符。在

2.检查缓存的状态

^{pr2}$

每次发送查询时,如果缓存正常,Qcache_hits应该是+1,否则{}应该是+1。在

3.如果缓存已打开,但不知何故无法获得缓存结果,则可能需要了解MySQL的缓存是如何工作的:http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html

注意:您可能希望使用网页.py环境和mysql控制台。如果看到不同的结果,则某些缓存相关设置可能会有所不同。为什么?由于这些sql是在不同的会话中执行的,所以MySQL可以在会话级别设置一些配置。在

相关问题 更多 >