Betrachten wir zunächst die folgenden Statusvariablen:
Offene Tabellen : Die Anzahl der offenen Tabellen.
Opened_tables : Die Anzahl der Tabellen, die geöffnet wurden. Wenn Opened_tables groß ist, ist Ihr table_open_cache-Wert wahrscheinlich zu klein.
Überraschenderweise liegt die Antwort auf Ihre Frage in der Frage selbst.
Die beiden Variablen wären nur dann sinnvoller, wenn Sie eine weitere Statusvariable in den Mix werfen: Uptime (oder Uptime_since_flush-Status für frische Durchschnitte nach FLUSH STATUS) ).
Sie sollten Open_tables gegen Opened_tables / Uptime vergleichen . Wenn Open_tables übersteigt (Opened_tables / Uptime) , haben Sie jetzt Anlass zur Sorge und sollten nach Dingen wie dem Folgenden Ausschau halten:
UPDATE 2011-08-31 12:18 EDT
Bitte beachten Sie, warum ich auch vorgeschlagen habe, Uptime_since_flush_status anstelle von Uptime zu verwenden, um ein festes Opened_tables-Wachstumsmuster für einen bestimmten Zeitraum zu erhalten.
Wenn Sie beispielsweise FLUSH STATUS;
jeden Montag um Mitternacht ausführen , können Sie einen OpenTableFactor generieren:
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;
Dieser Faktor für offene Tische entspricht der Anzahl offener Tische zu einem bestimmten Zeitpunkt und der durchschnittlichen Anzahl offener Tische während eines bestimmten Zeitraums. Mit einerFLUSH HOSTS;
pro Woche / Tag / Gastgeber ist dieser Durchschnitt gegen die Woche / Tag / Stunde.
Hier ein Auszug aus einem Kunden meines Arbeitgebers:
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)
Dieser Client verwaltet normalerweise ungefähr 7745 OpenTableFactor bei max. Wenn OpenTableFactor plötzlich abfällt (auch wenn ein wenig), kann dies auf geringere Verkehrsmuster, stark abgebrochene Verbindungen usw. hinweisen. Wenn sich OpenTableFactor nie ändert (selbst wenn ein wenig), bietet sich Ihnen möglicherweise die Möglichkeit, folgende Einstellungen zu ändern:
Einmal eingestellt, kann sich der OpenTableFactor ständig ändern oder eine andere Decke oder ein anderes Plateau treffen. Die Verwendung unterschiedlicher Einheiten innerhalb der Statusvariablen ist daher für diese Art der Abstimmung von entscheidender Bedeutung.
UPDATE 2011-08-31 12:42 EDT
Die SQL-Abfrage, die ich für den OpenTableFactor ausgeführt habe, funktioniert nicht für MySQL 5.0 und höher. Wenn Sie MySQL Administrator oder MONyog verwenden , können Sie ein Diagramm mithilfe der Formel in der Abfrage und im Monitor anpassen. MONyog sammelt den Verlauf mithilfe von SQLLite für eine spätere Verlaufsdarstellung. Dies kann für jede Version von MySQL durchgeführt werden.