InstruccionesEl sistema de consejos puede proveer recomendaciones para las variables del servidor analizando las variables de estado del servidor.
Notar, sin embargo, que este sistema provee recomendaciones basadas en cálculos simples y reglas generales que no serán necesariamente válidas en su sistema.
Antes de cambiar una configuración asegúrese de entender lo que está cambiando (leyendo la documentación) y cómo revertir el cambio. Ajustes incorrectos pueden tener un gran efecto negativo en performance.
La mejor forma de ajustar el sistema sería cambiar sólo una configuración a la vez, observar y medir la base de datos, y revertir el cambio si no hubo una mejora diferenciable.
{"parse":{"errors":[]},"run":{"fired":[{"name":"Tiempo de consultas lentas","formula":"long_query_time","test":"value >= 10","issue":"{long_query_time} est\u00e1 configurado a 10 segundos o m\u00e1s, por lo que s\u00f3lo aquellas consultas que tomen m\u00e1s 10 segundos ser\u00e1n registradas.","recommendation":"Se sugiere configurar \u00ablong_query_time\u00bb a un valor menor dependiendo de su entorno. Usualmente, un valor entre 1 y 5 segundos es el sugerido.","justification":"\u00ablong_query_time\u00bb est\u00e1 configurado a 10s.","id":"Long query time"},{"name":"Registros de consultas lentas","precondition":"PMA_MYSQL_INT_VERSION >= 50600","formula":"slow_query_log","test":"value == 'OFF'","issue":"El registro de consultas lentas est\u00e1 desactivado.","recommendation":"Active el registro de consultas lentas definiendo <a href=\"server_variables.php?filter=slow_query_log&token=d02e578e06e85808422a6f7f36357841\">slow_query_log<\/a> a 'ON'. Esto ayudar\u00e1 a analizar consultas con mala performance.","justification":"slow_query_log est\u00e1 definido como 'OFF'","id":"Slow query logging"},{"name":"Distribuci\u00f3n","formula":"version_comment","test":"preg_match('\/source\/i',value)","issue":"Versi\u00f3n compilada de c\u00f3digo fuente, no un ejecutable MySQL oficial.","recommendation":"Si no compil\u00f3 de c\u00f3digo fuente puede estar utilizando un paquete modificado por una distribuci\u00f3n. El manual MySQL s\u00f3lo es preciso para los ejecutables MySQL oficiales, no para los paquetes de las distribuciones (como RedHat, Debian\/Ubuntu, etc.).","justification":"se encontr\u00f3 'fuente' (\u00absource\u00bb) en el comentario de la versi\u00f3n (\u00abversion_comment\u00bb)","id":"Distribution"},{"name":"Cach\u00e9 de consultas desactivado","formula":"query_cache_size","test":"value == 0 || query_cache_type == 'OFF' || query_cache_type == '0'","issue":"El cach\u00e9 de consultas no est\u00e1 habilitado.","recommendation":"Se sabe que el cach\u00e9 de consultas puede mejorar la performance enormemente si est\u00e1 correctamente configurado. Act\u00edvelo definiendo \u00abquery_cache_size\u00bb a un valor en MiB de 2 d\u00edgitos y definiendo \u00abquery_cache_type\u00bb a 'ON'. <b>Notar que: <\/b> si est\u00e1 utilizando memcached ignore esta recomendaci\u00f3n.","justification":"\u00abquery_cache_size\u00bb est\u00e1 definido como 0 o \u00abquery_cache_type\u00bb est\u00e1 definido como 'OFF'","id":"Query cache disabled"},{"name":"Filas ordenadas","formula":"Sort_rows \/ Uptime","test":"value * 60 >= 1","issue":"Hay demasiadas filas siendo ordenadas.","recommendation":"Si bien no hay nada de malo en ordenar una gran cantidad de filas, es probable que desee asegurarse que las consultas que requieren gran cantidad de ordenaci\u00f3n utilicen campos indexados en la cl\u00e1usula \u00abORDER BY\u00bb, lo que resultar\u00e1 en una ordenaci\u00f3n m\u00e1s r\u00e1pida.","justification":"Promedio de filas ordenadas: 85.95 por segundo","id":"Sort rows"},{"name":"Tasa de uniones (\u00abJOIN\u00bb) sin \u00edndices","formula":"(Select_range_check + Select_scan + Select_full_join) \/ Uptime","test":"value * 60 * 60 > 1","issue":"Hay demasiadas uniones (\u00abJOIN\u00bb) sin \u00edndices.","recommendation":"Esto significa que las uniones (\u00abJOIN\u00bb) est\u00e1n realizando escrutinios completos sobre tablas. Agregar \u00edndices a los campos utilizados en las condiciones de la uni\u00f3n las acelerar\u00e1n en gran medida.","justification":"Promedio de uniones (\u00abJOIN\u00bb) de tablas: 50.93 por segundo, este promedio deber\u00eda ser menor a 1 por hora","id":"Rate of joins without indexes"},{"name":"Tasa de lectura del primer \u00edndice","formula":"Handler_read_first \/ Uptime","test":"value * 60 * 60 > 1","issue":"La tasa de lectura del primer \u00edndice es alta.","recommendation":"Esto normalmente indica escruitinios completos de \u00edndices. \u00c9stos son m\u00e1s r\u00e1pidos que escrutinios de tablas pero requieren gran cantidad de clicos de CPU en tablas grandes. Si dichas tablas tienen o han tenido una gran cantidad de actualizaciones (\u00abUPDATE\u00bb o \u00abDELETE\u00bb), ejecutar \u00abOPTIMIZE TABLE\u00bb podr\u00eda reducir dicha cantidad y\/o acelerar los escrutinios completos de \u00edndices. De otra forma, la cantidad de escrutinios completos de \u00edndices s\u00f3lo puede ser reducida re-escribiendo las consultas.","justification":"Promedio de escrutinios de \u00edndices: 43.87 por minuto, este valor deber\u00eda de ser menor a 1 por hora","id":"Rate of reading first index entry"},{"name":"Tasa de lectura de una posici\u00f3n fija","formula":"Handler_read_rnd \/ Uptime","test":"value * 60 * 60 > 1","issue":"La tasa de lecutura de datos de una posici\u00f3n fija es alta.","recommendation":"Esto indica que muchas consultas necesitan ordenar resultados y\/o realizar un escrutinio completo de tablas, incluyendo consultas con uniones (\u00abJOIN\u00bb) que no utilizan \u00edndices. Agregue \u00edndices donde sea aplicable.","justification":"Tasa de lectura de una posici\u00f3n fija: 80.74 por segundo, este valor deber\u00eda de ser menor a 1 por hora","id":"Rate of reading fixed position"},{"name":"Tasa de lectura de la siguiente fila de una tabla","formula":"Handler_read_rnd_next \/ Uptime","test":"value * 60 * 60 > 1","issue":"La tasa de lecutra de la siguiente fila de una tabla es alta.","recommendation":"Esto indica que muchas consultas est\u00e1n realizando escrutinios completos de tablas. Agregue \u00edndices donde sea aplicable.","justification":"Tasa de lectura de la siguiente fila de una tabla: 895908.51 por segundo, este valor deber\u00eda de ser menor a 1 por hora","id":"Rate of reading next table row"},{"name":"Tasa de tablas temporales en el disco","precondition":"!fired('Percentage of temp tables on disk')","formula":"Created_tmp_disk_tables \/ Uptime","test":"value * 60 * 60 > 1","issue":"Muchas tablas temporales est\u00e1n siendo escritas la disco en lugar de ser mantenidas en memoria.","recommendation":"Aumentar \u00abmax_heap_table_size\u00bb y \u00abtmp_table_size\u00bb podr\u00eda ayudar. Sin embargo, algunas tablas temporales son siempre a disco permanentemente independientemente del valor de estas variables. Para eliminarlas deber\u00e1 re-escribir las consultas para evitar estas condiciones (en una tabla temporal: la presencia de una columna \u00abBLOB\u00bb o \u00abTEXT\u00bb o la presencia de una columna mayor a 512 bytes) como se menciona en la <a href=\".\/url.php?url=https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Finternal-temporary-tables.html\" target=\"_blank\" rel=\"noopener noreferrer\">documentaci\u00f3n de MySQL<\/a>","justification":"La tasa de tablas temporales escritas al disco: 9.35 por segundo, este valor deber\u00eda ser menor a 1 por hora","id":"Temp disk rate"},{"name":"Porcentaje m\u00e1ximo del b\u00fafer de claves MyISAM usado en alg\u00fan momento","precondition":"key_buffer_size > 0","formula":"Key_blocks_used * key_cache_block_size \/ key_buffer_size * 100","test":"value < 95","issue":"El porcentaje del b\u00fafer de claves MyISAM (cach\u00e9 de \u00edndices) es bajo.","recommendation":"Podr\u00eda necesitar aumentar el valor de \u00abkey_buffer_size\u00bb, examine sus tablas nuevamente para ver si se han eliminado \u00edndices o sus consultas y las expectativas de uso de los \u00edndices.","justification":"Max\u00edmo % de b\u00fafer de claves MyISAM utilizado en alg\u00fan momento: 27.8%, este valor deber\u00eda ser mayor a 95%","id":"Max % MyISAM key buffer ever used"},{"name":"Tasa de apertura de archivos","formula":"Open_files \/ Uptime","test":"value * 60 * 60 > 5","issue":"La tasa de apertura de archivos es alta.","recommendation":"Considere aumentar <a href=\"server_variables.php?filter=open_files_limit&token=d02e578e06e85808422a6f7f36357841\">open_files_limit<\/a>, y revise el registro de errores al reiniciar luego de cambiar esta variable.","justification":"Tasa de apertura de archivos: 5.75 por hora, este valor deber\u00eda ser menor a 5 por hora","id":"Rate of open files"},{"name":"Tasa de espera para bloqueos de tablas","formula":"Table_locks_waited \/ Uptime","test":"value * 60 * 60 > 1","issue":"Demasiados bloqueos de tablas no fueron provistos inmediatamente.","recommendation":"Optimice las consultas y\/o utilice InnoDB para reducir el tiempo de espera para bloqueos.","justification":"Tasa de espera para bloqueos de tablas: 49.97 por hora, este valor deber\u00eda ser menor a 1 por hora","id":"Table lock wait rate"},{"name":"Cach\u00e9 de hilos","formula":"thread_cache_size","test":"value < 1","issue":"El cach\u00e9 de hilos est\u00e1 desactivado, esto resulta en mayor sobrecarga en las nuevas conexiones a MySQL.","recommendation":"Active el cach\u00e9 de hilos configurado \u00abthread_cache_size\u00bb a un valor mayor a 0.","justification":"El cach\u00e9 de hilos est\u00e1 configurado a 0","id":"Thread cache"},{"name":"Tasa de conexiones abandonadas","formula":"Aborted_connects \/ Uptime","test":"value * 60 * 60 > 1","issue":"Demasiadas conexiones son abandonadas.","recommendation":"Las conexiones son abandonadas generalmente cuando no pueden ser autorizadas. <a href=\".\/url.php?url=https%3A%2F%2Fwww.percona.com%2Fblog%2F2008%2F08%2F23%2Fhow-to-track-down-the-source-of-aborted_connects%2F\" target=\"_blank\" rel=\"noopener noreferrer\">Este art\u00edculo<\/a> podr\u00eda ser de ayuda para rastrear el motivo de las mismas.","justification":"La tasa de conexiones abandonadas es 14.88 por hora, este valor deber\u00eda ser menor a 1 por hora","id":"Rate of aborted connections"}],"notfired":[{"name":"Tiempo de actividad menor a un d\u00eda","formula":"Uptime","test":"value < 86400","issue":"El tiempo de actividad es menor a 1 d\u00eda, los ajustes de performance puede no ser precisos.","recommendation":"Para conseguir promedios m\u00e1s precisos es recomendable dejar el servidor ejecutando por m\u00e1s de un d\u00eda antes de ejecutar el analizador","justification":"El tiempo de actividad es s\u00f3lo 25 d\u00edas, 12 horas, 6 minutos y 59 segundos","id":"Uptime below one day"},{"name":"Menos de 1000 consultas","formula":"Questions","test":"value < 1000","issue":"Se han ejecutado menos de 1000 consultas en este servidor. Las recomendaciones pueden no ser precisas.","recommendation":"Espere m\u00e1s tiempo hasta que el servidor haya ejecutado una mayor cantidad de consultas.","justification":"Cantidad de consultas actuales: 629658837","id":"Questions below 1,000"},{"name":"Porcentajes de consultas lentas","precondition":"Questions > 0","formula":"Slow_queries \/ Questions * 100","test":"value >= 5","issue":"Hay muchas consultas lentas en comparaci\u00f3n con el total de consultas.","recommendation":"Podr\u00eda aumentar \u00ab<a href=\"server_variables.php?filter=long_query_time&token=d02e578e06e85808422a6f7f36357841\">long_query_time<\/a>\u00bb u optimizar las consultas que aparecen en el registro de consultas lentas","justification":"El porcentaje de consultas lentas deber\u00eda de ser menor a 5%, el valor actual es 0%.","id":"Percentage of slow queries"},{"name":"Frecuencia de consultas lentas","precondition":"Questions > 0","formula":"(Slow_queries \/ Questions * 100) \/ Uptime","test":"value * 60 * 60 > 1","issue":"Hay un gran cantidad de consultas lentas respecto del tiempo de actividad del servidor.","recommendation":"Podr\u00eda aumentar \u00ab<a href=\"server_variables.php?filter=long_query_time&token=d02e578e06e85808422a6f7f36357841\">long_query_time<\/a>\u00bb u optimizar las consultas que aparecen en el registro de consultas lentas","justification":"Hay una frecuencia de consultas lentas de <0.01 por d\u00eda por hora, deber\u00eda de tener menos de 1% por hora.","id":"Slow query rate"},{"name":"Serie de versiones","formula":"version","test":"substr(value,0,2) <= '5.' && substr(value,2,1) < 1","issue":"La versi\u00f3n del servidor MySQL es menor a 5.1.","recommendation":"Deber\u00eda actualizar ya que MySQL 5.1 tiene mejor performance, y \u00e9sta es a\u00fan mejor en MySQL 5.5.","justification":"Versi\u00f3n actual: 10.1.31-MariaDB","id":"Release Series"},{"name":"Versi\u00f3n menor","precondition":"! fired('Release Series')","formula":"version","test":"substr(value,0,2) <= '5.' && substr(value,2,1) <= 1 && substr(value,4,2) < 30","issue":"Versi\u00f3n menor a 5.1.30 (la primer versi\u00f3n de 5.1 disponible p\u00fablicamente).","recommendation":"Deber\u00eda actualizar ya que versiones m\u00e1s recientes de MySQL 5.1 tienen mejor performance, y \u00e9sta es a\u00fan mejor en MySQL 5.5.","justification":"Versi\u00f3n actual: 10.1.31-MariaDB","id":"Minor Version"},{"name":"Versi\u00f3n menor","precondition":"! fired('Release Series')","formula":"version","test":"substr(value,0,1) == 5 && substr(value,2,1) == 5 && substr(value,4,2) < 8","issue":"Versi\u00f3n menor a 5.5.8 (la primer versi\u00f3n de 5.5 disponible p\u00fablicamente).","recommendation":"Usted deber\u00eda actualizar a una versi\u00f3n estable de MySQL 5.5.","justification":"Versi\u00f3n actual: 10.1.31-MariaDB","id":"Minor Version"},{"name":"Distribuci\u00f3n","formula":"version_comment","test":"preg_match('\/percona\/i',value)","issue":"El manual MySQL s\u00f3lo es preciso para los ejecutables MySQL oficiales.","recommendation":"La documentaci\u00f3n de Percona est\u00e1 en <a href=\".\/url.php?url=https%3A%2F%2Fwww.percona.com%2Fsoftware%2Fdocumentation%2F\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.percona.com\/software\/documentation\/<\/a>","justification":"se encontr\u00f3 'percona' en el comentario de la versi\u00f3n (\u00abversion_comment\u00bb)","id":"Distribution"},{"name":"Arquitectura MySQL","formula":"system_memory","test":"value > 3072*1024 && !preg_match('\/64\/',version_compile_machine) && !preg_match('\/64\/',version_compile_os)","issue":"MySQL no fue compilado como un paquete de 64-bits.","recommendation":"Tiene uan capacidad de memoria por sobre 3 GiB (asumiendo que el servidor MySQL est\u00e1 en el mismo equipo que el servidor phpMyAdmin), es posible que MySQL no pueda acceder a toda la memoria. Podr\u00eda llegar a desear instalar la versi\u00f3n de 64-bits de MySQL.","justification":"Memoria disponible en este equipo: 7.8 GB","id":"MySQL Architecture"},{"name":"Porcentaje de ordenaciones que causan tablas temporales","precondition":"Sort_scan + Sort_range > 0","formula":"Sort_merge_passes \/ (Sort_scan + Sort_range) * 100","test":"value > 10","issue":"Demasiadas ordenaciones causan tablas temporales.","recommendation":"Considere aumentar <a href=\"server_variables.php?filter=sort_buffer_size&token=d02e578e06e85808422a6f7f36357841\">sort_buffer_size<\/a> y\/o <a href=\"server_variables.php?filter=read_rnd_buffer_size&token=d02e578e06e85808422a6f7f36357841\">read_rnd_buffer_size<\/a> dependiendo de los l\u00edmites de memoria de su sistema.","justification":"0% de todas las ordenaciones causan tablas temporales, este valor deber\u00eda de ser menor a 10%.","id":"Percentage of sorts that cause temporary tables"},{"name":"Tasa de ordenaciones que causan tablas temporales","formula":"Sort_merge_passes \/ Uptime","test":"value * 60 * 60 > 1","issue":"Demasiadas ordenaciones causan tablas temporales.","recommendation":"Considere aumentar <a href=\"server_variables.php?filter=sort_buffer_size&token=d02e578e06e85808422a6f7f36357841\">sort_buffer_size<\/a> y\/o <a href=\"server_variables.php?filter=read_rnd_buffer_size&token=d02e578e06e85808422a6f7f36357841\">read_rnd_buffer_size<\/a> dependiendo de los l\u00edmites de memoria de su sistema.","justification":"Promedio de tablas temporales: 13.13 por d\u00eda, este valor deber\u00eda de ser menor a 1 por hora.","id":"Rate of sorts that cause temporary tables"},{"name":"\u00abtmp_table_size\u00bb y \u00abmax_heap_table_size\u00bb diferentes","formula":"tmp_table_size - max_heap_table_size","test":"value !=0","issue":"{tmp_table_size} y {max_heap_table_size} no son iguales.","recommendation":"Si ha modificado alguno de ellos deliberadamente: el servidor utiliza el valor menor de ellos para determinar el tama\u00f1o m\u00e1ximo de tablas en memoria. Si desea aumentar el l\u00edmite de tama\u00f1o de tablas en memoria deber\u00e1 tambi\u00e9n aumentar el otro valor.","justification":"Los valores actuales son \u00abtmp_table_size\u00bb: 16 MB, \u00abmax_heap_table_size\u00bb: 16 MB","id":"Different tmp_table_size and max_heap_table_size"},{"name":"Porcentaje de tablas temporales en disco","precondition":"Created_tmp_tables + Created_tmp_disk_tables > 0","formula":"Created_tmp_disk_tables \/ (Created_tmp_tables + Created_tmp_disk_tables) * 100","test":"value > 25","issue":"Muchas tablas temporales est\u00e1n siendo escritas la disco en lugar de ser mantenidas en memoria.","recommendation":"Aumentar \u00abmax_heap_table_size\u00bb y \u00abtmp_table_size\u00bb podr\u00eda ayudar. Sin embargo, algunas tablas temporales son siempre escritas a disco independientemente del valor de estas variables. Para eliminarlas deber\u00e1 re-escribir las consultas para evitar estas condiciones (en una tabla temporal: la presencia de una columna \u00abBLOB\u00bb o \u00abTEXT\u00bb, o la presencia de una columna mayor a 512 bytes) como se menciona al comienzo del <a href=\".\/url.php?url=https%3A%2F%2Fwww.facebook.com%2Fnote.php%3Fnote_id%3D10150111255065841%26comments\" target=\"_blank\" rel=\"noopener noreferrer\">art\u00edculo de Pythian Group<\/a>","justification":"20.7% de todas las tablas temporales son escritas al disco, este valor deber\u00eda de ser menor a 25%","id":"Percentage of temp tables on disk"},{"name":"Tama\u00f1o de b\u00fafer de claves MyISAM","formula":"key_buffer_size","test":"value == 0","issue":"El b\u00fafer de claves no fue inicializado. No se utilizar\u00e1 un cach\u00e9 de claves MyISAM.","recommendation":"Defina \u00abkey_buffer_size\u00bb dependiendo del tama\u00f1o de los \u00edndices MyISAM. 64M es un buen comienzo.","justification":"\u00abkey_buffer_size\u00bb es 0","id":"MyISAM key buffer size"},{"name":"Porcentaje de \u00edndices le\u00eddos desde memoria","precondition":"Key_read_requests > 0","formula":"100 - (Key_reads \/ Key_read_requests * 100)","test":"value < 95","issue":"El porcentaje de \u00edndices que utilizan el b\u00fafer de claves MyISAM es bajo.","recommendation":"Podr\u00eda necesitar aumentar \u00abkey_buffer_size\u00bb.","justification":"\u00cdndices le\u00eddos desde memoria: 100%, este valor deber\u00eda ser mayor a 95%","id":"Percentage of index reads from memory"},{"name":"Tasa de apertura de tablas","formula":"Opened_tables \/ Uptime","test":"value*60*60 > 10","issue":"La tasa de apertura de tablas es alta.","recommendation":"Abrir tablas necesita E\/S en disco, lo cual es costoso. Aumentar \u00abtable_open_cache\u00bb podr\u00eda evitarlo.","justification":"Tasa de apertura de tablas: 3.91 por hora, este valor deber\u00eda ser menor a 10 por hora","id":"Rate of table open"},{"name":"Porcentaje de uso del l\u00edmite de archivos de abiertos","formula":"Open_files \/ open_files_limit * 100","test":"value > 85","issue":"La cantidad de archivos abiertos se acerca al m\u00e1ximo permitido. Podr\u00eda llegar a obtener un error al respecto (\u00abToo many open files\u00bb).","recommendation":"Considere aumentar <a href=\"server_variables.php?filter=open_files_limit&token=d02e578e06e85808422a6f7f36357841\">open_files_limit<\/a>, y revise el registro de errores al reiniciar luego de cambiar esta variable.","justification":"La cantidad de archivos abiertos es 84.6% del l\u00edmite. Deber\u00eda ser menor a 85%","id":"Percentage of used open files limit"},{"name":"Porcentaje de bloqueos de tabla inmediatos","precondition":"Table_locks_waited + Table_locks_immediate > 0","formula":"Table_locks_immediate \/ (Table_locks_waited + Table_locks_immediate) * 100","test":"value < 95","issue":"Demasiados bloqueos de tablas no fueron provistos inmediatamente.","recommendation":"Optimice las consultas y\/o utilice InnoDB para reducir el tiempo de espera para bloqueos.","justification":"Bloqueos de tabla inmediatos: 100%, este valor deber\u00eda ser mayor a 95%","id":"Immediate table locks %"},{"name":"Hilos que inician ejecuci\u00f3n lentamente","precondition":"slow_launch_time > 0","formula":"Slow_launch_threads","test":"value > 0","issue":"Hay demasiados hilos que inician ejecuci\u00f3n lentamente.","recommendation":"Esto generalmente ocurre cuando el sistema en s\u00ed est\u00e1 sobrecargado ya que es una operaci\u00f3n relativamente sencilla. Deber\u00eda de monitorizar la carga sobre el sistema cuidadosamente.","justification":"0 hilo(s) tardaron m\u00e1s de 2 segundos en iniciar, deber\u00eda de ser 0","id":"Threads that are slow to launch"},{"name":"Tiempo de inicio lento","formula":"slow_launch_time","test":"value > 2","issue":"\u00abSlow_launch_time\u00bb es mayor a 2s.","recommendation":"Configure <a href=\"server_variables.php?filter=slow_launch_time&token=d02e578e06e85808422a6f7f36357841\">slow_launch_time<\/a> a 1 o 2 segundos para contar correctamente los hilos que inician ejecuci\u00f3n lentamente.","justification":"\u00abslow_launch_time\u00bb est\u00e1 configurado a 2","id":"Slow launch time"},{"name":"Porcentaje de conexiones utilizadas","formula":"Max_used_connections \/ max_connections * 100","test":"value > 80","issue":"El m\u00e1ximo de conexiones utilizadas simult\u00e1neamente est\u00e1 cercano al valor de {max_connections}.","recommendation":"Aumente <a href=\"server_variables.php?filter=max_connections&token=d02e578e06e85808422a6f7f36357841\">max_connections<\/a> o reduzca <a href=\"server_variables.php?filter=wait_timeout&token=d02e578e06e85808422a6f7f36357841\">wait_timeout<\/a> para que las conexiones que no liberan los manejadores de base de datos apropiadamente sean eliminadas m\u00e1s r\u00e1pido. Aseg\u00farese que su c\u00f3digo cierre los manejadores de base de datos apropiadamente.","justification":"\u00abmax_used_connections\u00bb es 22.5% de \u00abmax_connections\u00bb, deber\u00eda ser menor a 80%","id":"Percentage of used connections"},{"name":"Porcentaje de conexiones abandonadas","formula":"Aborted_connects \/ Connections * 100","test":"value > 1","issue":"Demasiadas conexiones son abandonadas.","recommendation":"Las conexiones son abandonadas generalmente cuando no pueden ser autorizadas. <a href=\".\/url.php?url=https%3A%2F%2Fwww.percona.com%2Fblog%2F2008%2F08%2F23%2Fhow-to-track-down-the-source-of-aborted_connects%2F\" target=\"_blank\" rel=\"noopener noreferrer\">Este art\u00edculo<\/a> podr\u00eda ser de ayuda para rastrear el motivo de las mismas.","justification":"0.3% de todas las conexiones son abandonadas. Este valor deber\u00eda ser menor a 1%","id":"Percentage of aborted connections"},{"name":"Porcentaje de clientes abandonados","formula":"Aborted_clients \/ Connections * 100","test":"value > 2","issue":"Demasiados clientes son abandonados.","recommendation":"Los clientes son abandonados generalmente cuando no cierran sus conexiones MySQL apropiadamente. Esto puede ser debido a problemas de red o cuando el c\u00f3digo no libera el manejador de la base de datos correctamente. Revise su conexi\u00f3n de red y c\u00f3digo.","justification":"0% de todos los clientes son abandonados. Este valor deber\u00eda ser menor a 2%","id":"Percentage of aborted clients"},{"name":"Tasa de clientes abandonados","formula":"Aborted_clients \/ Uptime","test":"value * 60 * 60 > 1","issue":"Demasiados clientes son abandonados.","recommendation":"Los clientes son abandonados generalmente cuando no cierran sus conexiones MySQL apropiadamente. Esto puede ser debido a problemas de red o cuando el c\u00f3digo no libera el manejador de la base de datos correctamente. Revise su conexi\u00f3n de red y c\u00f3digo.","justification":"La tasa de clientes abandonados es 2.2 por d\u00eda, este valor deber\u00eda ser menor a 1 por hora","id":"Rate of aborted clients"},{"name":"Tama\u00f1o de registro InnoDB","precondition":"innodb_buffer_pool_size > 0","formula":"innodb_log_file_size \/ innodb_buffer_pool_size * 100","test":"value < 20 && innodb_log_file_size \/ (1024 * 1024) < 256","issue":"El tama\u00f1o del archivo de registro InnoDB no parece ser apropiado en relaci\u00f3n a la reserva de b\u00fafers InnoDB.","recommendation":"Especialmente en un sistema con gran cantidad de escrituras a tablas InnoDB, deber\u00eda de configurar \u00abinnodb_log_file_size\u00bb a aproximadamente 25% de <a href=\"server_variables.php?filter=innodb_buffer_pool_size&token=d02e578e06e85808422a6f7f36357841\">innodb_buffer_pool_size<\/a>. Sin embargo, mientras mayor sea este valor, mayor ser\u00e1 el tiempo de recuperaci\u00f3n luego de una ca\u00edda de la base de datos, por lo que este valor no deber\u00eda ser mucho mayor a 256 MiB. Note, adem\u00e1s, que no puede simplemente cambiar el valor de esta variable. Necesitar\u00e1 cerrar el servidor, eliminar los archivos de registro InnoDB, definir el nuevo valor en el archivo my.cnf, iniciar el servidor y luego revisar los mensajes de error para asegurarse que no hubo inconvenientens. Revise tambi\u00e9n <a href=\".\/url.php?url=https%3A%2F%2Fmysqldatabaseadministration.blogspot.com%2F2007%2F01%2Fincrease-innodblogfilesize-proper-way.html\" target=\"_blank\" rel=\"noopener noreferrer\">este art\u00edculo<\/a>","justification":"El tama\u00f1o del archivo de registros InnoDB es 37.5% del tama\u00f1o de la reserva de b\u00fafers InnoDB, no deber\u00eda ser menor a 20%","id":"InnoDB log size"},{"name":"Tama\u00f1o de la reserva de b\u00fafers InnoDB","precondition":"system_memory > 0","formula":"innodb_buffer_pool_size \/ system_memory * 100","test":"value < 60","issue":"Su reserva de b\u00fafers InnoDB es relativamente peque\u00f1a.","recommendation":"La reserva de b\u00fafers InnoDB tiene un profundo impacto en la performance de las tablas InnoDB. Asigne toda la memoria disponible a este b\u00fafer. Para servidores de base de datos que s\u00f3lo utilicen InnoDB como motor de almacenamiento y no tengan otros servicios (por ejemplo un servidor web), puede definir este valor hasta un 80% de su memoria disponible. Si no es el caso, deber\u00e1 analizar cuidadosamente el consumo de memoria de los otros servicios y tablas con otros motores y configurar esta variable acorde a ello. Si se la define demasiado alta, su sistema comenzar\u00e1 a utilizar el \u00e1rea de intercambio en disco disminuyendo la performance significativamente. Revise tambi\u00e9n <a href=\".\/url.php?url=https%3A%2F%2Fwww.percona.com%2Fblog%2F2007%2F11%2F03%2Fchoosing-innodb_buffer_pool_size%2F\" target=\"_blank\" rel=\"noopener noreferrer\">este art\u00edculo<\/a>","justification":"Actualmente est\u00e1 utilizando 1641.8255471499% de su memoria de la reserva de b\u00fafers InnoDB. Esta regla se dispara si est\u00e1 asignando menos del 60%. Sin embargo, esto puede ser perfectamente adecuado para su sistema si no posee muchas tablas InnoDB o tiene otros servicios en el mismo equipo.","id":"InnoDB buffer pool size"},{"name":"Inserciones MyISAM concurrentes","formula":"concurrent_insert","test":"value === 0 || value === 'NEVER'","issue":"Active {concurrent_insert} defini\u00e9ndolo como 1","recommendation":"Definir \u00abconcurrent_insert\u00bb a 1 reduce la competencia entre lectores y escritores en una tabla particular. Revise tambi\u00e9n la <a href=\".\/url.php?url=https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fconcurrent-inserts.html\" target=\"_blank\" rel=\"noopener noreferrer\">documentaci\u00f3n MySQL<\/a>","justification":"\u00abconcurrent_insert\u00bb est\u00e1 definido como 0","id":"MyISAM concurrent inserts"}],"unchecked":[{"name":"Slow query logging","precondition":"PMA_MYSQL_INT_VERSION < 50600","formula":"log_slow_queries","test":"value == 'OFF'","issue":"The slow query log is disabled.","recommendation":"Enable slow query logging by setting {log_slow_queries} to 'ON'. This will help troubleshooting badly performing queries.","justification":"log_slow_queries is set to 'OFF'"},{"name":"Query caching method","precondition":"!fired('Query cache disabled')","formula":"Questions \/ Uptime","test":"value > 100","issue":"Suboptimal caching method.","recommendation":"You are using the MySQL Query cache with a fairly high traffic database. It might be worth considering to use <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.5\/en\/ha-memcached.html\">memcached<\/a> instead of the MySQL Query cache, especially if you have multiple slaves.","justification":"The query cache is enabled and the server receives %d queries per second. This rule fires if there is more than 100 queries per second. | round(value,1)"},{"name":"Query cache efficiency (%)","precondition":"Com_select + Qcache_hits > 0 && !fired('Query cache disabled')","formula":"Qcache_hits \/ (Com_select + Qcache_hits) * 100","test":"value < 20","issue":"Query cache not running efficiently, it has a low hit rate.","recommendation":"Consider increasing {query_cache_limit}.","justification":"The current query cache hit rate of %s% is below 20% | round(value,1)"},{"name":"Query Cache usage","precondition":"!fired('Query cache disabled')","formula":"100 - Qcache_free_memory \/ query_cache_size * 100","test":"value < 80","issue":"Less than 80% of the query cache is being utilized.","recommendation":"This might be caused by {query_cache_limit} being too low. Flushing the query cache might help as well.","justification":"The current ratio of free query cache memory to total query cache size is %s%. It should be above 80% | round(value,1)"},{"name":"Query cache fragmentation","precondition":"!fired('Query cache disabled')","formula":"Qcache_free_blocks \/ (Qcache_total_blocks \/ 2) * 100","test":"value > 20","issue":"The query cache is considerably fragmented.","recommendation":"Severe fragmentation is likely to (further) increase Qcache_lowmem_prunes. This might be caused by many Query cache low memory prunes due to {query_cache_size} being too small. For a immediate but short lived fix you can flush the query cache (might lock the query cache for a long time). Carefully adjusting {query_cache_min_res_unit} to a lower value might help too, e.g. you can set it to the average size of your queries in the cache using this formula: (query_cache_size - qcache_free_memory) \/ qcache_queries_in_cache","justification":"The cache is currently fragmented by %s% , with 100% fragmentation meaning that the query cache is an alternating pattern of free and used blocks. This value should be below 20%. | round(value,1)"},{"name":"Query cache low memory prunes","precondition":"Qcache_inserts > 0 && !fired('Query cache disabled')","formula":"Qcache_lowmem_prunes \/ Qcache_inserts * 100","test":"value > 0.1","issue":"Cached queries are removed due to low query cache memory from the query cache.","recommendation":"You might want to increase {query_cache_size}, however keep in mind that the overhead of maintaining the cache is likely to increase with its size, so do this in small increments and monitor the results.","justification":"The ratio of removed queries to inserted queries is %s%. The lower this value is, the better (This rules firing limit: 0.1%) | round(value,1)"},{"name":"Query cache max size","precondition":"!fired('Query cache disabled')","formula":"query_cache_size","test":"value > 1024 * 1024 * 128","issue":"The query cache size is above 128 MiB. Big query caches may cause significant overhead that is required to maintain the cache.","recommendation":"Depending on your environment, it might be performance increasing to reduce this value.","justification":"Current query cache size: %s | ADVISOR_formatByteDown(value, 2, 2)"},{"name":"Query cache min result size","precondition":"!fired('Query cache disabled')","formula":"query_cache_limit","test":"value == 1024*1024","issue":"The max size of the result set in the query cache is the default of 1 MiB.","recommendation":"Changing {query_cache_limit} (usually by increasing) may increase efficiency. This variable determines the maximum size a query result may have to be inserted into the query cache. If there are many query results above 1 MiB that are well cacheable (many reads, little writes) then increasing {query_cache_limit} will increase efficiency. Whereas in the case of many query results being above 1 MiB that are not very well cacheable (often invalidated due to table updates) increasing {query_cache_limit} might reduce efficiency.","justification":"query_cache_limit is set to 1 MiB"},{"name":"Percentage of MyISAM key buffer used","precondition":"key_buffer_size > 0 && !fired('Max % MyISAM key buffer ever used')","formula":"( 1 - Key_blocks_unused * key_cache_block_size \/ key_buffer_size) * 100","test":"value < 95","issue":"MyISAM key buffer (index cache) % used is low.","recommendation":"You may need to decrease the size of {key_buffer_size}, re-examine your tables to see if indexes have been removed, or examine queries and expectations about what indexes are being used.","justification":"% MyISAM key buffer used: %s%, this value should be above 95% | round(value,1)"},{"name":"Thread cache hit rate %","precondition":"thread_cache_size > 0","formula":"100 - Threads_created \/ Connections","test":"value < 80","issue":"Thread cache is not efficient.","recommendation":"Increase {thread_cache_size}.","justification":"Thread cache hitrate: %s%, this value should be above 80% | round(value,1)"},{"name":"Is InnoDB disabled?","precondition":"PMA_MYSQL_INT_VERSION < 50600","formula":"have_innodb","test":"value != \"YES\"","issue":"You do not have InnoDB enabled.","recommendation":"InnoDB is usually the better choice for table engines.","justification":"have_innodb is set to 'value'"},{"name":"Max InnoDB log size","precondition":"innodb_buffer_pool_size > 0 && innodb_log_file_size \/ innodb_buffer_pool_size * 100 < 30","formula":"innodb_log_file_size \/ (1024 * 1024)","test":"value > 256","issue":"The InnoDB log file size is inadequately large.","recommendation":"It is usually sufficient to set {innodb_log_file_size} to 25% of the size of {innodb_buffer_pool_size}. A very big {innodb_log_file_size} slows down the recovery time after a database crash considerably. See also <a href=\"https:\/\/www.percona.com\/blog\/2006\/07\/03\/choosing-proper-innodb_log_file_size\/\">this Article<\/a>. You need to shutdown the server, remove the InnoDB log files, set the new value in my.cnf, start the server, then check the error logs if everything went fine. See also <a href=\"https:\/\/mysqldatabaseadministration.blogspot.com\/2007\/01\/increase-innodblogfilesize-proper-way.html\">this blog entry<\/a>","justification":"Your absolute InnoDB log size is %s MiB | round(value,1)"}],"errors":[]}}