Primeiro, vamos considerar essas variáveis de status:
Abrir tabelas : o número de tabelas que estão abertas.
Opened_tables : o número de tabelas que foram abertas. Se Opened_tables for grande, seu valor table_open_cache provavelmente será muito pequeno.
Surpreendentemente, a resposta para sua pergunta está dentro da própria pergunta.
As duas variáveis só fariam mais sentido se você lançar mais uma variável de status no mix: Uptime (ou Uptime_since_flush status para novas médias após FLUSH STATUS ).
Você deve comparar o Open_tables agsinst (Opened_tables / Uptime) . Se o Open_tables ultrapassar (Opened_tables / Uptime) , agora você tem motivos de preocupação e deve ficar de olho em coisas como as seguintes:
UPDATE 2011-08-31 12:18 EDT
Observe por que também sugeri o uso de Uptime_since_flush_status em vez do Uptime para obter um padrão fixo de crescimento Opened_tables por um determinado período.
Por exemplo, se você executar FLUSH STATUS;
toda segunda-feira à meia-noite, poderá gerar um 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;
Esse fator de tabela aberta equivale ao número que representa o número de tabelas abertas em um determinado momento em relação ao número médio de tabelas abertas ao longo de um determinado período. Com uma FLUSH HOSTS;
semana / dia / host, essa média é contra a semana / dia / hora.
Aqui está uma amostra de um dos clientes do meu empregador:
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)
Esse cliente normalmente mantém cerca de 7745 OpenTableFactor no máximo. Se o OpenTableFactor cair repentinamente (mesmo que um pouco), isso poderá indicar padrões de tráfego mais baixos, altas condições abortadas e assim por diante. Se o OpenTableFactor nunca mudar (mesmo que seja um pouco), poderá oferecer uma oportunidade de alterar essas configurações:
Uma vez ajustado, o OpenTableFactor pode mudar constantemente ou atingir outro teto ou platô. Assim, o uso de unidades diferentes nas variáveis de status torna-se vital para esse tipo de ajuste.
UPDATE 2011-08-31 12:42 EDT
A consulta SQL que eu executei para o OpenTableFactor não funciona para o MySQL 5.0 e vice-versa. Se você estiver usando o MySQL Administrator ou MONyog , poderá personalizar um gráfico usando a fórmula na consulta e no monitor. O MONyog coleta o histórico usando o SQLLite para gráficos históricos posteriores. Isso pode ser feito para qualquer versão do MySQL.