MySQL Status anzeigen - aktive oder vollständige Verbindungen?

206

Wenn ich show status like 'Con%'starte, wird die Anzahl der Verbindungen angezeigt, die 9972 beträgt und ständig wächst. Ist dies eine aktive Anzahl von Verbindungen oder Verbindungen, die insgesamt hergestellt wurden?

Michael
quelle

Antworten:

401

Laut den Dokumenten bedeutet dies die Gesamtzahl im Verlauf der Geschichte:

Connections

Die Anzahl der Verbindungsversuche (erfolgreich oder nicht) zum MySQL-Server.

Sie können die Anzahl der aktiven Verbindungen entweder über die Threads_connectedStatusvariable anzeigen:

Threads_connected

Die Anzahl der aktuell geöffneten Verbindungen.

mysql> show status where `variable_name` = 'Threads_connected';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 4     |
+-------------------+-------+
1 row in set (0.00 sec)

... oder über den show processlistBefehl:

mysql> show processlist;
+----+------+-----------------+--------+---------+------+-------+------------------+
| Id | User | Host            | db     | Command | Time | State | Info             |
+----+------+-----------------+--------+---------+------+-------+------------------+
|  3 | root | localhost       | webapp | Query   |    0 | NULL  | show processlist | 
|  5 | root | localhost:61704 | webapp | Sleep   |  208 |       | NULL             | 
|  6 | root | localhost:61705 | webapp | Sleep   |  208 |       | NULL             | 
|  7 | root | localhost:61706 | webapp | Sleep   |  208 |       | NULL             | 
+----+------+-----------------+--------+---------+------+-------+------------------+
4 rows in set (0.00 sec)
kiiwii
quelle
Stellt eine Verbindung einen Benutzer dar? Wenn sich also 200 Benutzer auf einer Seite befinden, die Datenbankabfragen durchführt, sind dies 200 Verbindungen?
Diego Queiroz
Ja, kann jemand das klären. Ich habe auch die gleiche Frage. Werden diese Variablen auch nach jedem Neustart von MySQL Services oder nach einem Neustart des Servers zurückgesetzt?
LonelyRogue
@Diego Queiroz So einfach ist das nicht. Wenn der Entwickler genau aufgepasst hat und nur 1 Datenbank pro Benutzer verbunden werden muss, dann ist jede dieser Daten ein Benutzer. Möglicherweise werden jedoch auch andere Dienstprogramme oder Sicherungsdienste ausgeführt, die ebenfalls eine Verbindung herstellen müssen.
Ryan Shillington
@LonelyRogue Ja, nach dem Neustart des Servers muss jede Verbindung erneut hergestellt werden. Viele Programme / Bibliotheken stellen automatisch eine Verbindung her, sodass sich die Anzahl der Verbindungen möglicherweise schnell füllt, ohne explizit etwas zu tun. Aber MySQL behält nach einem Neustart keine alten Verbindungen bei.
Ryan Shillington
134
SHOW STATUS WHERE `variable_name` = 'Threads_connected';

Dies zeigt Ihnen alle offenen Verbindungen.

Mistahenry
quelle
17

Dies ist die Gesamtzahl der bisherigen Verbindungen zum Server. Um den aktuellen Verbindungsstatus zu ermitteln, können Sie verwenden

mysqladmin -u -p erweiterter-status | grep -wi 'threads_connected \ | threads_running' | awk '{print $ 2, $ 4}'

Dies wird Ihnen zeigen:

Threads_connected 12

Threads_running 1  

Threads_connected: Number of connections

Threads_running: connections currently running some sql
Pranab Sharma
quelle
13

Um eine vollständigere Liste anzuzeigen, können Sie Folgendes ausführen:

show session status;

oder

show global status;

Sehen diesen Link , um die Verwendung besser zu verstehen.

Wenn Sie Details zur Datenbank erfahren möchten, können Sie Folgendes ausführen:

status;
Mugur 'Bud' Chirica
quelle
11

Sie können auch tun

SHOW STATUS WHERE `variable_name` = 'Max_used_connections';
Saurabh
quelle
1
max_used_connectionsist auch nützlich
coolnodje
3

Um die maximal zulässigen Verbindungen zu überprüfen, können Sie die folgende Abfrage ausführen:

SHOW VARIABLES LIKE "max_connections";

Um die Anzahl der aktiven Verbindungen zu überprüfen, können Sie die folgende Abfrage ausführen:

SHOW VARIABLES LIKE "max_used_connections";

Ich hoffe es hilft.

Mujtaba
quelle
-1

Dies sollte die aktuelle Anzahl der aktiven Verbindungen sein. Führen Sie den Befehl aus processlist, um sicherzustellen, dass.

URL als Referenz: http://www.devdaily.com/blog/post/mysql/how-show-open-database-connections-mysql

EDIT: Anzahl der geöffneten DB-Verbindungen Bitte schauen Sie hier, die tatsächliche Anzahl der Threads (Verbindungen) wird hier beschrieben!

ChrisH
quelle
2
Ich habe die Referenzlinks nützlich gefunden. Zum Beispiel show status like '%onn%';ist eine sehr nützliche Abfrage.
viddik13
1
Diese Antwort ist falsch und sollte gelöscht werden. Siehe die anderen Antworten.
dr_
Von dev.mysql.com/doc/refman/8.0/en/… : "Die Anzahl der Verbindungsversuche (erfolgreich oder nicht) zum MySQL-Server". Es ist NICHT die Anzahl der aktiven Verbindungen.
PYB