Ich habe eine datenintensive Website geschrieben, aber phpmyadmin teilt mir mit, dass innerhalb von 24 Tagen 1 Milliarde Anfragen eingegangen sind. Das scheint ein bisschen hoch.
Ich weiß, dass es nicht so viele Leute gibt, die die Site nutzen, da es während der Live-Zeit keine wirklichen Daten gibt. Ich hätte Hunderttausende von den Abfragen erwartet, die ich zum Testen durchgeführt habe.
Ist etwas falsch?
Bearbeiten: Die Anzahl der Abfragen scheint mit einer Geschwindigkeit von 500 / Sekunde zu wachsen. Das ist alles sehr neu für mich, daher weiß ich nicht, ob etwas nicht stimmt.
Antworten:
MySQL fordert intern Abfragen an. Tatsächlich ist fast alles, was Sie in MySQL tun, eine Abfrage.
Wenn Sie das allgemeine Protokoll oder das langsame Abfrageprotokoll aktivieren, wird alles aufgezeichnet, was mysqld tut.
Wenn Sie --log-queries-not-using-indexes aktiviert haben, wird alles, was keine Indizes enthält, im langsamen Protokoll gespeichert .
Angenommen, Sie führen diese Abfrage aus:
Ja, DATENBANKEN ANZEIGEN; ist eine Abfrage. In der Tat, was ist das information_schema Äquivalent?
Hat die Tabelle information_schema.schemata einen Index ???
Nein, tut es nicht. Also, zeigen Sie Datenbanken; würde in einem allgemeinen Protokoll und dem langsamen Protokoll landen (mit aktivierten --log-Abfragen, die keine Indizes verwenden)
Daher sind viele Operationen, von denen wir nicht glauben, dass sie eine Abfrage darstellen, möglicherweise nur eine Abfrage, aber intern in mysqld.
Wenn Sie Überwachungstools verwenden, die mit mysqld verbunden sind, wird dadurch auch die Anzahl der Abfragen erhöht.
Beispiel:
Nur die Verfügbarkeit von mysqld abzurufen, ist eine Abfrage. Wie zählt MySQL intern die ausgeführten Abfragen? Hier sind zwei Statusvariablen, die Aufschluss geben können:
Abfragen : Die Anzahl der vom Server ausgeführten Anweisungen. Diese Variable enthält Anweisungen, die im Gegensatz zur Variablen Questions in gespeicherten Programmen ausgeführt werden. COM_PING- oder COM_STATISTICS-Befehle werden nicht gezählt.
Fragen : Die Anzahl der vom Server ausgeführten Anweisungen. Dies umfasst im Gegensatz zur Variablen "Abfragen" nur Anweisungen, die von Clients an den Server gesendet werden, und keine Anweisungen, die in gespeicherten Programmen ausgeführt werden. Diese Variable zählt nicht die Befehle COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE oder COM_STMT_RESET.
Seien Sie bitte nicht so besorgt, wenn Ihr MySQL Server überwacht wird, da bei der Überwachung, die Statusvariablen aufruft, intern Abfragen ausgeführt werden, um angeforderte Daten abzurufen.
1 Milliarde in 24 Tagen ist
Für eine MySQL-Instanz, die überwacht wird, werden diese Nummern überhaupt nicht weit hergeholt.
Wenn Sie MySQL Workbench, MySQL Administrator oder phpMyAdmin verwenden, ruft jede Seite, die diese Produkte generieren oder aktualisieren, diese kleinen Statusabfragen auf und führt schnell Zahlen aus.
quelle