buenisimo fabio!
yo hace un tiempito luche con esto y el mysql cache soluciono mucho del rendimiento! 100% recomendado por default!
MySQL Query Cache para todos

Pero no sólo para proveedores sirve, para desarrolladores "in house" es muy importante tenerlo activo. Sucede que la versión "community" del MySQL no tiene activo el Query Caché y, entonces, la respuesta del servidor local no es la misma que el de nuestro hosting.
Lo que hace esta opción del MySQL es conservar las consultas más comunes y así no tener que repetir resultados. Por ejemplo la portada de este blog, cada minuto varias personas entran y es exactamente la misma. Uno podría guardar en caché todo el HTML y servirlo a gusto, pero si hay cambios en algunas secciones... es complicado, ahora bien, si guardamos cada query a la base de datos y si no hubo cambios... es mucho más fácil!
El ambiente ideal sería donde todo lo cacheable sea cacheado

Hay que tener cuidado con el tamaño, algunos creen que un caché enorme es mejor, pero no es así. Una caché muy grande provocaría que al ser invalidada se bloquee todo un query, se tenga que limpiar, volver a cargar, etc. Es ideal para manejar querys repetitivos e iguales, por eso daba como ejemplo la portada del blog.
Chequeando si tenemos Query Cache activado:
mysql> SHOW VARIABLES LIKE 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+
Verificando el tamaño:
mysql> SHOW VARIABLES LIKE 'query_cache_size'; +------------------+----------+ | Variable_name | Value | +------------------+----------+ | query_cache_size | 67108864 | +------------------+----------+ 1 row in set (0.00 sec)
Si queremos modificar las opciones hay que editar el archivo my.conf
query-cache-type = 1
esta opción habilita el caché, el 2 sería "on demand" (en el query se especifica que se usa caché) y el 0 es apagado
query_cache_size=32M
el tamaño en Megabytes, yo uso hasta 64Mb o 32Mb
Luego se reinicia el servidor y listo, ya está el caché. Hagan la prueba en un servidor local, instalen un Wordpress o un PHP BB, si tienen una base llena mejor, y hacen la prueba, la diferencia de velocidad es gigante.
Más info en la web oficial, también para configurarlo
Otros posts que podrían llegar a gustarte...
Comentarios
-
Muy recomendado esto, al igual que utilizar herramientas como Slow query logs y "comandos" como EXPLAIN para hacer debug de las querys al igual que mantener bien armados los indices de MySQL.
-
Fabio:
Seguro que viene con Query Cache desactivado? :)
De todas formas, Query Cache es un cache bastante pobretón, ya que es limpiado cuando se escribe o modifica algo en la tabla.
Es decir: Modificás un post de tu blog y eso invalida todo el cache sobre esa tabla.
Saludos
-
Anakayama dijo:
Fabio:
Seguro que viene con Query Cache desactivado? :)
De todas formas, Query Cache es un cache bastante pobretón, ya que es limpiado cuando se escribe o modifica algo en la tabla.
Es decir: Modificás un post de tu blog y eso invalida todo el cache sobre esa tabla.
Saludos
tal cual, por eso no tiene mucho sentido un caché enorme (más de 64Mb) porque a cada rato se invalida. Sin embargo ante un "digg effect" lo mejor es tenerlo encendido.
En la mayor cantidad de hits del blog no hay cambios, si sólo el 10% comenta (cuando comenta se genera un cambio) tenés un 90% de chances de necesitar exactamente lo mismo que el visitante anterior.
Es cuestión de costo beneficio, en un query que cambia su resultado a cada rato ni te conviene tenerlo cacheado, es inútil, pero como eso no pasa tan seguido, lo mejor es usarlo. Todo depende del tipo de aplicación, claro.
-
buena info para un ignorante en el tema como yo :lol:
Me entero que lo tengo activado, y que el tamaño lo tengo en 0 :mad: (me fije con el mysql-front, ya que odio el phpmyadmin)
y para complicarme más la vida no lo tengo en apache. Ya veré como me las arreglo.
Otra vez gracias por la data :D