Mac上的Mysql 5.1:查询缓存无法正常工作

时间:2010-03-02 21:41:59

标签: mysql macos osx-snow-leopard macports

我想知道是否有人可以指出我正确的方向。我已经在我的Snow Leopard 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查询似乎缓存得很好。

我的创意设置:

$ 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

1 个答案:

答案 0 :(得分:1)

您的数据库名称是否包含一个点或其他非字母数字字符?

您使用innodb_file_per_table吗?

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