Назад | Перейти на главную страницу

Одновременный запуск 'Показать список процессов'

У меня есть два скрипта, помещенных в cron, которые запускаются каждую минуту. Оба сценария подключаются к одной базе данных и запускают show full processlist. Ничего страшного, если два show full processlist команды запускаются одновременно?

P.S: - Один из скриптов будет удален через неделю или около того, поэтому эта настройка рассчитана максимум на одну неделю.

В чем разница между SHOW PROCESSLIST; и SHOW FULL PROCESSLIST; ?

  • SHOW PROCESSLIST; отображает первые 100 символов столбца ИНФОРМАЦИЯ
  • SHOW FULL PROCESSLIST; отображает весь столбец INFO

Из INFORMATION_SCHEMA.PROCESSLIST точка зрения:

  • SHOW PROCESSLIST; эффективно работает SELECT ID,USER,HOST,DB,COMMAND,TIME,STATE,LEFT(INFO,100) INFO FROM information_schema.processlist;
  • SHOW FULL PROCESSLIST; эффективно работает SELECT * FROM information_schema.processlist;

Я могу придумать только одно обстоятельство, когда ты не хочешь бежать SHOW FULL PROCESSLIST;.

Когда вы загружаете mysqldump в экземпляр MySQL, вы запускаете SHOW PROCESSLIST; отслеживать прогресс загрузки стола. Мы знаем, что mysqldumps расширили INSERT. Этот единственный INSERT может иметь сотни или даже тысячи строк. Если ты бежишь SHOW FULL PROCESSLIST;, вы можете передать текстовое представление этих сотен или даже тысяч строк на консоль или в журнал. Это может быстро создавать огромные журналы SQL-запросов с данными, видимыми в виде обычного текста.

Итак, будьте очень осторожны, чтобы не запускать несколько SHOW FULL PROCESSLIST; команды во время загрузки mysqldump.

Если у вас есть некоторый мониторинг списка процессов, вы можете либо

  • Бегать SHOW PROCESSLIST;
  • Бегать SELECT ID,USER,HOST,DB,COMMAND,TIME,STATE,LEFT(INFO,300) INFO FROM information_schema.processlist; (установка LEFT (INFO, xxx) на любую управляемую длину)

Да, это хорошо. Даже если нет, задача MySQL - решить эту проблему, например отложив вторую до завершения первой.