Спочатку розглянемо ці змінні стану:
Відкриті таблиці : Кількість відкритих таблиць.
Opened_tables : Кількість відкритих таблиць. Якщо Opened_tables великий, значення table_open_cache, ймовірно, занадто мало.
Дивно, але відповідь на ваше запитання лежить у самому питанні.
Дві змінні матимуть більше сенсу, лише якщо ви кинете ще одну змінну стану у суміш: Uptime (або Uptime_since_flush статус для свіжих середніх значень після STALUS FLUSH STATUS ).
Ви повинні порівнювати Open_tables agsinst (Opened_tables / Uptime) . Якщо Open_tables піднімається нагорі (Opened_tables / Uptime) , тепер у вас є привід для занепокоєння, і вам слід тримати огляд відкритим для таких речей:
ОНОВЛЕННЯ 2011-08-31 12:18 EDT
Зверніть увагу, чому я також запропонував використовувати Uptime_since_flush_status замість Uptime, щоб отримати виправлену схему зростання Open_tables за даний період.
Наприклад, якщо ви працюєте FLUSH STATUS;
щопонеділка опівночі, ви можете створити 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;
Цей коефіцієнт відкритої таблиці становить число, яке представляє кількість відкритих таблиць у будь-який момент часу проти середньої кількості відкритих таблиць за даний період. З FLUSH HOSTS;
кожного тижня / день / хоста, що в середньому становить від тижня / день / год.
Ось зразок одного з клієнтів мого роботодавця:
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)
Цей клієнт зазвичай підтримує близько 7745 OpenTableFactor на макс. Якщо OpenTableFactor впаде раптово (навіть якщо трохи), це може вказувати на менші шаблони трафіку, високі перервані конекції тощо. Якщо OpenTableFactor ніколи не змінюється (навіть якщо трохи), він може запропонувати вам змінити ці налаштування:
Після налаштування OpenTableFactor може постійно змінюватися або потрапляти на інший стелю або плато. Таким чином, використання різних одиниць всередині змінних статусу стає життєво важливим для цієї настройки.
ОНОВЛЕННЯ 2011-08-31 12:42 EDT
Запит SQL, який я запускав для OpenTableFactor, не працює для MySQL 5.0 і назад. Якщо ви використовуєте MySQL Administrator або MONyog , ви можете налаштувати графік, використовуючи формулу в запиті та моніторі. MONyog збирає історію за допомогою SQLLite для подальшого історичного графіку. Це можна зробити для будь-якої версії MySQL.