2010-03-02 13 views
1

Je me demandais si quelqu'un pouvait me diriger dans la bonne direction. J'ai installé un sandbox local Mysql 5.1 sur ma machine Snow Leopard OSX, j'ai le Macports Mysql 5.1 installé et, par tous les aspects, fonctionne. Il prend des requêtes, la base de données fonctionne, etc. La seule chose étrange est, le cache de requête ne fonctionne pas. Je l'ai fait fonctionner sous linux avant, et je l'ai fait fonctionner dans une installation 5.0 xammp, mais je suis déconcerté quant à savoir pourquoi il ne fonctionne pas dans cette configuration.Mysql 5.1 sur Mac: le cache de requêtes ne fonctionne pas

Quelques détails ...

 
% 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) 

Il me semble que tout est configuré correctement, ce sont essentiellement les mêmes paramètres que je l'ai utilisé sur 5.0 et 4.1. La plupart des requêtes sont en cache, et je n'exclus pas spécifiquement le cache. Je ne sais pas si c'est un problème Mac, un problème MacPorts, ou un problème 5.1, ou mon problème personnel. Quelqu'un peut-il voir quelque chose de mal avec ma configuration?


Ok, des informations supplémentaires. Cela semble être lié à Innodb. Les requêtes MyISAM semblent bien se mettre en cache.

Ma configuration 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

Comment dites-vous que ça ne fonctionne pas? Pourriez-vous s'il vous plaît poster la requête que vous essayez d'exécuter? – Quassnoi

+1

la plupart (> 50%) de ces 433 requêtes devraient avoir mis en cache. Je peux exécuter: "select * from student limit 10;" à plusieurs reprises et il va incrémenter le nombre Qcache_not_cached, mais ne mettra pas en cache la requête. – TrippyD

+0

En outre, cette requête renvoie bien moins que la query_cache_limit de 1M – TrippyD

Répondre

1

Est-ce que vous le nom de la base de données contient un point ou d'autres caractères non alphanumériques? Avez-vous utilisé innodb_file_per_table?

Si oui, vous devrez renommer votre base de données en vidant et en restaurant avec un nouveau nom.