Primero, consideremos esas variables de estado:
Tablas abiertas : el número de tablas que están abiertas.
Tablas_Abiertas : El número de tablas que se han abierto. Si Opened_tables es grande, su valor table_open_cache es probablemente demasiado pequeño.
Sorprendentemente, la respuesta a su pregunta se encuentra dentro de la pregunta misma.
Las dos variables solo tendrían más sentido si agrega una variable de estado más a la mezcla: Uptime (o Uptime_since_flush status para promedios nuevos después de FLUSH STATUS ).
Debería comparar Open_tables agsinst (Opened_tables / Uptime) . Si Open_tables sube por encima (Opened_tables / Uptime) , ahora tiene motivos para preocuparse y debe estar atento a cosas como las siguientes:
ACTUALIZACIÓN 2011-08-31 12:18 EDT
Tenga en cuenta por qué también sugerí usar Uptime_since_flush_status en lugar de Uptime para obtener un patrón fijo de crecimiento Opened_tables para un período determinado.
Por ejemplo, si ejecuta FLUSH STATUS;
todos los lunes a la medianoche, puede generar un OpenTableFactor:
SELECT *, (Open_tables * Uptime / Opened_Tables) OpenTableFactor FROM
(SELECT variable_value Uptime FROM information_schema.global_status
WHERE variable_name = 'Uptime_since_flush_status') up,
(SELECT variable_value Open_tables FROM information_schema.global_status
WHERE variable_name = 'Open_tables') opn,
(SELECT IF(variable_value=0,1,variable_value) Opened_tables
FROM information_schema.global_status
WHERE variable_name = 'Opened_tables') opnd;
Este factor de tabla abierta equivale al número que representa el número de tablas abiertas en un momento dado contra el número promedio de tablas abiertas durante un período determinado. Con FLUSH HOSTS;
cada semana / día / host, ese promedio está en contra de la semana / día / hora.
Aquí hay una muestra de uno de los clientes de mi empleador:
mysql> SELECT *, (Open_tables * Uptime / Opened_Tables) OpenTableFactor FROM (SELECT variable_value Uptime FROM information_sc hema.global_status WHERE variable_name = 'Uptime_since_flush_status') up, (SELECT variable_value Open_tables FROM informat ion_schema.global_status WHERE variable_name = 'Open_tables') opn, (SELECT IF(variable_value=0,1,variable_value) Opened_ta bles FROM information_schema.global_status WHERE variable_name = 'Opened_tables') opnd;
+----------+-------------+---------------+-------------------+
| Uptime | Open_tables | Opened_tables | OpenTableFactor |
+----------+-------------+---------------+-------------------+
| 14385123 | 16326 | 30429078 | 7717.996519579068 |
+----------+-------------+---------------+-------------------+
1 row in set (0.00 sec)
Este cliente normalmente mantiene alrededor de 7745 OpenTableFactor al máximo. Si OpenTableFactor cae repentinamente (aunque sea un poco), podría indicar patrones de tráfico más bajos, conexiones abortadas altas, etc. Si OpenTableFactor nunca cambia (aunque sea un poco), podría presentarte la oportunidad de cambiar esta configuración:
Una vez ajustado, OpenTableFactor puede cambiar constantemente o alcanzar otro techo o meseta. Por lo tanto, el uso de diferentes unidades dentro de las variables de estado se vuelve vital para este tipo de ajuste.
ACTUALIZACIÓN 2011-08-31 12:42 EDT
La consulta SQL que ejecuté para OpenTableFactor no funciona para MySQL 5.0 y viceversa. Si está utilizando MySQL Administrator o MONyog , puede personalizar un gráfico utilizando la fórmula en la consulta y el monitor. MONyog recopila el historial utilizando SQLLite para gráficos históricos posteriores. Esto se puede hacer para cualquier versión de MySQL.