Mac上的Mysql 5.1:查询缓存不工作

Mac上的Mysql 5.1:查询缓存不工作,mysql,macos,osx-snow-leopard,macports,Mysql,Macos,Osx Snow Leopard,Macports,我想知道是否有人能给我指出正确的方向。我已经在我的雪豹OSX机器上设置了一个本地Mysql 5.1沙箱,我已经安装了Macports Mysql 5.1,而且从表面上看,它可以正常工作。它接受查询,数据库正在工作,等等。唯一奇怪的是,查询缓存没有工作。我以前让它在linux中运行过,并在5.0 xammp安装中运行过,但我很困惑为什么它在这个设置中不工作 一些细节 % cat /etc/my.cnf | grep -i query_cache query_cache_limit = 1M que

我想知道是否有人能给我指出正确的方向。我已经在我的雪豹OSX机器上设置了一个本地Mysql 5.1沙箱,我已经安装了Macports Mysql 5.1,而且从表面上看,它可以正常工作。它接受查询,数据库正在工作,等等。唯一奇怪的是,查询缓存没有工作。我以前让它在linux中运行过,并在5.0 xammp安装中运行过,但我很困惑为什么它在这个设置中不工作

一些细节

% cat /etc/my.cnf | grep -i query_cache query_cache_limit = 1M query_cache_size = 32M query_cache_type = 1 mysql> show variables like '%query_cache%'; +------------------------------+----------+ | Variable_name | Value | +------------------------------+----------+ | have_query_cache | YES | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 33554432 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+----------+ 6 rows in set (0.00 sec) mysql> show status like '%Qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 1 | | Qcache_free_memory | 33536856 | | Qcache_hits | 0 | | Qcache_inserts | 0 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 433 | | Qcache_queries_in_cache | 0 | | Qcache_total_blocks | 1 | +-------------------------+----------+ 8 rows in set (0.01 sec) 在我看来,一切都设置正确,这些设置基本上与我在5.0和4.1上使用的设置相同。大多数查询都是可缓存的,我并没有专门排除缓存。我不知道这是Mac问题,MacPorts问题,还是5.1问题,还是我的个人问题。有人看到我的设置有什么问题吗


好的,一些额外的信息。这似乎与Innodb有关。MyISAM查询似乎缓存得很好

我的inno设置:

$ cat /etc/my.cnf | grep nno # Uncomment the following if you are using InnoDB tables innodb_file_per_table innodb_data_home_dir = /opt/local/var/db/mysql5 innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /opt/local/var/db/mysql5 innodb_buffer_pool_size = 256M innodb_additional_mem_pool_size = 12M innodb_log_file_size = 50M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 2 innodb_lock_wait_timeout = 300 innodb_flush_method=O_DIRECT
数据库名称是否包含点或其他非字母数字字符

每个表是否使用innodb\u文件


如果是这样,您需要通过转储和使用新名称还原来重命名数据库。

数据库名称是否包含点或其他非字母数字字符

每个表是否使用innodb\u文件


如果是这样,您需要通过转储和使用新名称还原来重命名数据库。

您如何判断数据库不工作?您可以发布您试图运行的查询吗?433个查询中的大多数>50%应该已缓存。我可以运行:从学生限制中选择*10;重复,它将增加Qcache\u not\u cached编号,但不会缓存查询。此外,该查询返回的值远小于查询\u cache\u限制1MOk,这是一些附加信息。这似乎与Innodb有关。MyISAM查询的缓存似乎很好。非常少的事务,98%的查询都是单一的。你说它不工作吗?您可以发布您试图运行的查询吗?433个查询中的大多数>50%应该已缓存。我可以运行:从学生限制中选择*10;重复,它将增加Qcache\u not\u cached编号,但不会缓存查询。此外,该查询返回的值远小于查询\u cache\u限制1MOk,这是一些附加信息。这似乎与Innodb有关。MyISAM查询似乎缓存得很好。很少有事务,98%的查询是单个事务