自动删除mySQL查询缓存?

时间:2011-10-29 13:17:24

标签: mysql caching reset

我是一个网络游戏的拥有者,拥有一个包含大量查询的高流量数据库。 我现在正在优化mySQL和像mysqltuner这样的工具,一直说我没有足够的查询缓存。

+-------------------------+-----------+  
| Variable_name           | Value     |  
+-------------------------+-----------+  
| Qcache_free_blocks      | 218       |  
| Qcache_free_memory      | 109155712 |  
| Qcache_hits             | 60955602  |  
| Qcache_inserts          | 38923475  |  
| Qcache_lowmem_prunes    | 100051    |  
| Qcache_not_cached       | 10858099  |  
| Qcache_queries_in_cache | 19384     |  
| Qcache_total_blocks     | 39134     |  
+-------------------------+-----------+  

从运行服务器大约1.5天开始。 理想情况下,lowmem_prunes当然是0,但是有很多查询是基于用户的。喜欢,

SELECT username FROM users WHERE id='1';  
SELECT username FROM users WHERE id='12';
SELECT username FROM users WHERE id='12453';
SELECT username FROM users WHERE id='122348';

由于我每天有大约3000名不同的用户登录,因此内存中会有很多这样的查询。

我知道ON DEMAND规则,但我正在避免它,因为我们有很多查询,我不想全部检查。

增加内存也不会解决问题,因为我们有很多查询。

然后我想出了当lowmem_prunes为零时使cronjob自动重置查询缓存的想法。 (可能每小时一次)

什么是最佳选择?
1.每小时自动重置一次查询缓存 2.购买更多内存并增加1GB的缓存(这有它的缺点......我宁愿不这样做)
3.指定应保存在缓存中的每个查询,而不是 只要保持这样。

0 个答案:

没有答案