Граф вызовов для сеансов MySQL

Я пытаюсь создать valgrind (cachegrind) анализ клиентских подключений MySQL.
я бегу valgrind с --trace-children=yes,

То, что я хочу найти, это один из внутренних вызовов методов, чтобы увидеть график вызовов, когда он используется...

После запуска valgrind--trace-children=yes ./bin/mysqld_safe
Я получаю много файлов дампа, которые были написаны в тот момент.
Я жду 5 минут (для того, чтобы новые файлы, которые я ожидаю создать, имели другую дату "последнего изменения").

После этих 5 минут я открываю 30 сессий и загружаю систему небольшими транзакциями, а когда закончу - выключаю MySQL.

Теперь вопросы:
1. После выполнения 30 транзакций и завершения работы системы изменяются только 3 файла. Я ожидал увидеть 30 файлов, потому что я, хотя MySQL охватывает процессы. Итак, во-первых, может ли кто-нибудь подтвердить, что MySQL охватывает потоки, а не процессы для каждой сессии?

  1. Я вижу три разных журнала вызовов базы данных: один для куклы, один для binlogи один к innodb журнал. Может кто-нибудь объяснить, почему binlog и DUMMY есть, и какая разница между ними? (Я думаю, кукла из-за innodbно я не понимаю почему binlog есть ли, если мое первое предположение верно).

  2. Есть ли лучший способ сделать этот анализ?
    Есть ли такой инструмент, как kcachegrind что может открыть несколько файлов и показать летнее из всех них? (или это возможно как-то в kcachegrind?)

Спасибо!!

Кстати - для людей, которые расширяют и развивают MySQL - там есть много интересных вещей, которые можно улучшить....

1 ответ

Я могу помочь вам только в некоторых вопросах: Да, MySQL не создает процессы, а создает потоки, см. Руководство по команде, в котором перечислены действия, которые в данный момент выполняет сервер:

Когда вы пытаетесь выяснить, что делает ваш сервер MySQL, может быть полезно изучить список процессов, который представляет собой набор потоков, выполняемых в настоящее время на сервере.

(Выделение мной.)

Относительно журналов: двоичный журнал - это журнал, используемый для репликации. Он содержит все выполненные операторы (или измененные строки) и будет передан ведомым.

Журнал InnoDB не зависит от двоичного журнала и используется, чтобы гарантировать, что InnoDB выполняет ACID-соответствие. Сначала туда вставляются транзакции, и этот файл используется в случае сбоя сервера и запуска восстановления InnoDB.

Это нормально, что оба журнала заполняются на обычном сервере.

Я не могу помочь вам с вашими другими вопросами, хотя. Может быть, вы хотите задать свой вопрос на http://dba.stackexchange.com/

Другие вопросы по тегам