Проверьте использование ЦП MySQL (внутренне)

Извне MySQL я знаю, что могу многое сделать, чтобы узнать, каково использование ЦП процессом, т.е. top.

Но, с внутренней точки зрения, я хотел бы знать, можно ли запустить запрос из MySQL, чтобы узнать, что такое системный ЦП или потребление ЦП текущим потоком.

Я выполняю массовые запросы каждую ночь через планировщик событий, и мой сервер БД зависает на 100% ЦП на несколько минут, блокируя или замедляя работу пользователей по всему миру.

Я пытался найти способ ограничить использование ЦП потоком или пользователем, но пока это не представляется возможным.

Итак, я пытаюсь сделать что-то вроде следующего в своем событии:

IF (SELECT CPU_USAGE() > 0.8) THEN
    REPEAT
        SLEEP(0.01);
    UNTIL (SELECT CPU_USAGE() < 0.25)
    END REPEAT;
END IF;

Очевидно, что CPU_USAGE() не существует, но если есть что-то подобное, что я могу сделать для достижения аналогичного эффекта, я весь внимание. Спасибо.

P.S. Я на Amazon RDS


person Kevin Jose Martin    schedule 24.03.2014    source источник
comment
Возможно, было бы проще/лучше ограничить количество потоков, которые ваши задачи могут использовать в данный момент времени.   -  person Vatev    schedule 24.03.2014
comment
Как бы это было обработано?   -  person Kevin Jose Martin    schedule 27.03.2014


Ответы (1)


Я боюсь, что в MySQL нет такой опции выбора.

Если вы находитесь внутри командной строки клиента mysql, вы можете вызвать команду «top» изнутри клиента MySQL, используя эту команду: \! top, но я не думаю, что это то, что вам нужно.

Лучшим ответом, вероятно, будет использование UDF из функций SYS. Подробнее здесь. У меня нет опыта его использования, но он кажется наиболее близким к тому, что вам нужно.

person Cedric Simon    schedule 24.03.2014
comment
Это было бы здорово в идеальной ситуации и, возможно, в будущем, но я нахожусь на Amazon RDS, что, к сожалению, не позволяет мне импортировать эти UDF. - person Kevin Jose Martin; 27.03.2014