mysql: zobaczyć wszystkie otwarte połączenia z daną bazą danych?

123

Mając uprawnienia administracyjne im mysql, jak mogę zobaczyć wszystkie otwarte połączenia z określoną bazą danych na moim serwerze?

Lecieć jak po sznurku
źródło

Odpowiedzi:

169

Polecenie jest

SHOW PROCESSLIST

Niestety nie ma parametrów zawężających . Jeśli ich potrzebujesz, możesz to zrobić z wiersza poleceń:

mysqladmin processlist | grep database-name
David Rabinowitz
źródło
23
mysqladmin -i 1 processlistaby odświeżyć wyjście co sekundę.
chanux
5
jeśli potrzebujesz uwierzytelnieniamysqladmin --user=[USERNAME] --password=[PASSWORD] -i 1 processlist
Tom Jenkinson
2
@TomJenkinson Zwykle go nie używam, ponieważ nie chcę, aby hasło pojawiało się w historii wiersza poleceń lub na liście procesów (ps aux)
David Rabinowitz
Jako alternatywa dla @chanux, z nieco czystszym wyjściem imhowatch -n1 mysqladmin processlist
Josiah
64

Możesz również użyć:

mysql> show status like '%onn%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Aborted_connects         | 0     |
| Connections              | 303   |
| Max_used_connections     | 127   |
| Ssl_client_connects      | 0     |
| Ssl_connect_renegotiates | 0     |
| Ssl_finished_connects    | 0     |
| Threads_connected        | 127   |
+--------------------------+-------+
7 rows in set (0.01 sec)

Zapraszam do korzystania z Mysql-server-status-variable lub Too-many-connections-problem

Wiseland
źródło
2
W każdym razie wielkość liter nie jest rozróżniana, dlaczego %onn%zamiast %conn%?
Pacerier
Jasne, że możesz użyć% conn% zamiast% onn%. I tak, w większości jest to niewrażliwe na wielkość liter. Rozróżnianie
wielkości
1
Pokazuje dane statystyczne / historyczne. Pytanie dotyczy aktualnie otwartych połączeń.
Matthew,
32

To powinno załatwić sprawę w przypadku najnowszych wersji MySQL:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "elstream_development";

Vadym Tyemirov
źródło
3
To jedyny poprawny, poza wybranym, który można zrobić za pomocą SQL zamiast mysqladmin.
dresende
2
Dzięki, to jest odpowiedź, której szukałem.
1
Ta odpowiedź jest bardzo pomocna, pokaż wszystkie połączenia i jej zapytania, co może bardzo pomóc w moim przypadku.
Hammad Khan
10

Możesz wywołać polecenie MySQL show status

pokaż status jak „Conn%”;

Aby uzyskać więcej informacji, przeczytaj Pokaż otwarte połączenia z bazą danych

adatapost
źródło
3
Przepraszamy, ale to rozwiązanie pokazuje tylko jedną wartość. Wolę polecenie "pokaż status jak '% onn%';" który znajduje się na tej samej stronie internetowej.
Raul Luna
@RaulLuna, i tak nie rozróżnia wielkości liter, dlaczego %onn%zamiast %conn%?
Pacerier
@Pacerier To coś więcej: na wypadek, gdyby słowo „połączenie” pojawiło się jako część większego słowa (na przykład max_used_connections). Oczywiście możesz użyć statusu programu, takiego jak „% conn%”
Raul Luna
@RaulLuna, Jeśli słowo „połączenie” pojawia się jako część większego słowa, oba %onn%i %conn%nadal będą działać. Bez różnicy.
Pacerier,
1
dlaczego jest to zaznaczone? nie pokazuje aktualnych otwartych połączeń.
James
3

SQL: pokaż pełną listę procesów;

To właśnie robi MySQL Workbench.

justAMySQL_starter
źródło
3

W MySql poniższe zapytanie powinno pokazać całkowitą liczbę otwartych połączeń:

show status like 'Threads_connected';
Ayan
źródło
2

Jeśli używasz systemu * nix, rozważ także mytop .

Aby ograniczyć wyniki do jednej bazy danych, naciśnij "d", gdy jest uruchomiona, a następnie wpisz nazwę bazy danych.

Pryo
źródło
Czy ta aplikacja nie jest również używana show processlistwewnętrznie?
Pacerier,
Myślę, że tak. mytop po prostu starannie prezentuje informacje z opcjami filtrowania. W przeszłości robiłem z tego dobry użytek, analizując problemy z wydajnością. Ponadto w sytuacjach awaryjnych szybciej jest zalogować się do komputera, uruchomić mytop i od razu zobaczyć, co się dzieje. Podobnie jak bieganie „na górę”.
Pryo
Używając większej liczby komponentów, narażasz się na więcej błędów. Skoro show processlistwynik jest zadowalający, dlaczego miałbyś go potrzebować mytop?
Pacerier
2
Po co używać "top", kiedy "ps aux" jest zadowalające?
Pryo
-1

W przeglądarce zapytań kliknij prawym przyciskiem myszy bazę danych i wybierz listę procesów

Kanagaraj M
źródło
Jest to specyficzne dla klienta.
Nino Škopac