2010-03-02 59 views
1

我想知道是否有人能指引我朝着正確的方向發展。我在Snow Leopard OSX機器上建立了一個本地的Mysql 5.1沙箱,我安裝了Macports Mysql 5.1,並且所有外觀都正常運行。它需要查詢,數據庫正在工作等等。唯一奇怪的是,查詢緩存不起作用。我已經在linux中運行了它,並且在5.0 xammp安裝中得到了它的工作,但我爲什麼不在這個設置中工作而沮喪。Mac上的Mysql 5.1:查詢緩存不能正常工作

一些細節......

 
% 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 Setup的:

 
$ 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 
+0

你怎麼知道它不工作?你可以發佈你試圖運行的查詢嗎? – Quassnoi 2010-03-02 21:45:31

+1

這433個查詢中的大多數(> 50%)應該已經被緩存。 我可以運行: 「select * from student limit 10;」反覆 ,它會增加Qcache_not_cached號碼,但不會緩存查詢。 – TrippyD 2010-03-02 21:46:52

+0

此外,該查詢返回的結果遠低於1M – TrippyD 2010-03-02 21:48:11

回答

1

難道你的數據庫名稱包含或其他非字母數字字符?

你使用innodb_file_per_table

如果是這樣,您需要通過轉儲和使用新名稱恢復來重命名數據庫。