2010-03-02 4 views
1

누군가가 올바른 방향으로 나를 가리킬 수 있는지 궁금합니다. 내가 스노우 레오파드 OSX 기계에 로컬 MySQL을 5.1 샌드 박스를 설정했습니다, 나는 Macports MySQL 5.1을 설치하고, 모든 모습으로, 작동합니다. 쿼리를 가져 오거나, 데이터베이스가 작동하고 있습니다. 이상한 점은 쿼리 캐시가 작동하지 않는다는 것입니다. 내가 전에 리눅스에서 작동하고있어, 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 설치 :

 
$ 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

+1

433 개의 쿼리 중 대부분 (> 50 %)이 캐싱되어 있어야합니다. 다음을 실행할 수 있습니다 : "select * from student limit 10;" 반복적으로 이고 Qcache_not_cached 번호는 증가하지만 쿼리는 캐시되지 않습니다. – TrippyD

+0

또한 해당 쿼리는 1M – TrippyD

답변

1

당신은 데이터베이스 이름 또는 기타 영숫자가 아닌 문자가 포함되어 있습니까?

innodb_file_per_table을 사용합니까?

그렇다면 덤프 및 새 이름으로 복원하여 데이터베이스의 이름을 바꿔야합니다.

관련 문제