Наша Mnesia DB работает медленно, и мы думаем, что она должна быть несколько быстрее.
Итак, нам нужно профилировать его и выяснить, что происходит.
Есть несколько вариантов, которые предлагают сами:
- запустите fprof и посмотрим, куда идет время.
- запустите cprof и посмотрите, какие функции называются много.
Однако они являются довольно стандартными инструментами стиля контроля производительности. Вопрос в том, как я действительно выполняю профилирование запросов - какие запросы занимают самые длительные периоды. Если бы мы были магазином Oracle или MySQL, мы бы просто запускали профилировщик запросов, который возвращал бы те запросы, которые занимали много времени. Это не инструмент, который, как представляется, доступен для Mnesia.
Итак, вопрос:
- какие существуют методы для профиля Mnesia
- Какие существуют инструменты для профилирования Mnesia - нет, я думаю, но докажу, что я не прав:)
- как вы профилировали свои запросы и оптимизировали установку базы данных mnesia.
Расширение в свете обсуждения
Одной из проблем с fprof в качестве инструмента профилирования является то, что он сообщает только о конкретном запросе, на который вы смотрите. Поэтому fprof говорит мне, что X медленный, и я настраиваю его, чтобы ускорить его. Тогда, низко и созерцать, операция Y (которая была достаточно быстрой) теперь является собакой медленной. Поэтому я прорабатываю Y и понимаю, что способ быстро сделать Y - сделать X медленным. Поэтому я заканчиваю серию двусторонних компромиссов...
То, что мне действительно нужно , - это способ управления многосторонними компромиссами. Теперь у меня есть 2 метрических сбрасывания фактических действий пользователя, которые я могу воспроизвести. Эти журналы представляют собой то, что я хотел бы оптимизировать.
"Собственный" анализатор запросов в базе данных SQL будет иметь возможность профилировать структуру операторов SQL, например, всех операторов с формой:
SELECT [fieldset] FROM [table] WHERE {field = *parameter*}, {field = *parameter*}
и говорят, что 285 запросов этой формы занимали в среднем 0,37 м для запуска
Магические ответы - это когда говорится: 17 запросов этой формы заняли 6.34s для выполнения и выполнили полное сканирование таблицы в таблице X, вы должны поместить индекс в поле Y
Когда у меня есть результат, подобный этому, через репрезентативный набор пользовательских действий, я могу начать рассуждать о компромиссах в раунде и разработать тестовый шаблон.
Тестовый шаблон будет выглядеть примерно так:
- активность X будет делать запросы A, C и C быстрее, но запросы E и F медленнее,
- проверить и измерить
- затем одобрить/отклонить
Я использую Erlang достаточно долго, чтобы "знать", что нет такого анализатора запросов, как это, я бы хотел знать, как другие люди (у которых была эта проблема) "причина" в оптимизации mnesia.