mysql: увидеть все открытые подключения к данной базе данных?


Ответы:


169

Команда

SHOW PROCESSLIST

К сожалению, не имеет параметров сужения . Если они вам нужны, вы можете сделать это из командной строки:

mysqladmin processlist | grep database-name

23
mysqladmin -i 1 processlistдля обновления вывода каждую секунду.
chanux

5
если вам нужно пройти аутентификациюmysqladmin --user=[USERNAME] --password=[PASSWORD] -i 1 processlist
Том Дженкинсон

2
@TomJenkinson Я обычно не использую его, потому что я не хочу, чтобы пароль появлялся в истории командной строки или в списке процессов (ps aux)
Дэвид Рабиновиц

Как альтернатива @chanux, с немного более чистым выводом imhowatch -n1 mysqladmin processlist
Джозия

64

Также вы можете использовать:

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)

Не стесняйтесь использовать Mysql-server-status-variables или Too-many-connections-problem


2
В любом случае регистр нечувствителен, почему %onn%вместо %conn%?
Pacerier

Конечно, вы можете использовать% conn% вместо% onn%. И да, в основном это нечувствительно к регистру. Информацию о чувствительности к регистру см. На
странице

1
Это показывает статистические / исторические данные. Речь идет об открытых на данный момент подключениях.
Мэтью

32

Это должно помочь с новейшими версиями MySQL:

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


3
Это единственное правильное, помимо выбранного, которое можно сделать с помощью SQL вместо mysqladmin.
dresende

2
Спасибо, это тот ответ, который я хотел.

1
Этот ответ очень полезен, покажет все соединения и его запросы, что может очень помочь в моем случае.
Хаммад Хан

10

Вы можете вызвать команду MySQL show status

показать статус как «Conn%»;

Для получения дополнительной информации прочтите Показать открытые подключения к базе данных.


3
Извините, но это решение показывает только одно значение. Я предпочитаю команду «показать статус как '% onn%';» который находится на той же указанной веб-странице.
Рауль Луна

@RaulLuna, все равно регистр нечувствителен, почему %onn%вместо %conn%?
Pacerier

@Pacerier Это нечто большее: это на всякий случай, когда слово «соединение» появляется как часть большего слова (например, max_used_connections). Конечно, вы можете использовать статус показа, например, "% conn%"
Рауль Луна,

@RaulLuna, Если слово "соединение" появляется как часть большего слова, оба %onn%и %conn%все равно будут работать. Нет разницы.
Pacerier 02

1
почему это помечено? он не показывает текущие открытые соединения.
Джеймс


3

В MySql следующий запрос должен показать общее количество открытых соединений:

show status like 'Threads_connected';

2

Если вы используете систему * nix, подумайте также о mytop .

Чтобы ограничить результаты одной базой данных, нажмите «d», когда она запущена, затем введите имя базы данных.


Разве это приложение не используется для show processlistвнутренних целей?
Pacerier

Я верю, что это так. mytop просто аккуратно представляет информацию с опциями фильтрации. В прошлом я много использовал его при анализе проблем с производительностью. Кроме того, в экстренных случаях быстрее войти в систему, запустить mytop и сразу увидеть, что происходит. Очень похоже на бег "наверху".
Pryo

Используя больше компонентов, вы подвергаете себя большему количеству ошибок. Поскольку show processlistвывод удовлетворяет, зачем вам это нужно mytop?
Pacerier 02

2
Зачем использовать "top", если "ps aux" удовлетворяет?
Pryo

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.