Тестирование быстродействия базы


Синтетический тест позволяющий замерить скорость выполнения запроса (типового или своего).
Всем доброго времени суток!

Столкнулся с такой проблемой — периодическое замедление работы 1С, причем зависимости от нагрузки или «железа» быстро выявить не получилось.
Тогда была написана эта обработка, которая в цикле (количество итераций меняется), могла выполнять запрос и выводила результат в таблицу для сравнения (по данным можно в Екселе построить диаграмму, чтобы отследить визуально изменения скорости в разные моменты времени).

Прошу не пинать, и не говорить что замеры можно производить и другими способами, я все это знаю.
Обработка была написана под конкретные цели — выловить закономерности в тормозах базы (в какое время база начинает работать медленнее, а когда быстрее), причем я сравнивал таким образом скорость на разных железках и в разное время (день, ночь, выходные). Некоторые результаты честно поразили…
Кроме того обработку можно использовать как аналог замера производительности. Сунул свой запрос проверил сколько выполняется. Поменял снова проверил, запустил один и тот же запрос в разных базах (SQL/DBF). Ну или еще для чего 🙂

Написана под УПП, но если свой запрос — можно на любой конфе открывать (под управляемый формы кому надо сам переделает, мне пока ни к чему)

Из функционала:
— Изменение количества повторов выполнения запроса;
— Прерывание выполнения;
— Выбор типовой запрос (остатки товаров) или произвольный;
— Возможность сохранить результат в файл XLS (файл создаете руками — лень было писать сразу функцию создания, а потом так и не дошли руки);
— Вывод результата в таблицу для анализа и сохранения, либо сохранение результата в файл (если ставите на ночь и есть проблемы с вылетом базы — тогда результат не пропадет);

В общем пользуйтесь, может кому сократит несколько часов жизни на более приятные вещи…

6 Comments

  1. ojiojiowka

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

    Reply
  2. CaptainMorgan

    Если бы обработка была бы бесплатной, то можно было бы посмотреть на предложенную идею.

    Возможно некий смысл в этом есть.

    Вопрос к автору:

    Чем ваша идея отличается от стандартного «Замера производительности»?

    Reply
  3. чингачгук

    Этот фактор тоже имеет место быть…

    Вот элементарный пример — один и тот же запрос в файловой базе выполняется 15 секунд а на sql минуту. Такой обработкой это можно быстро оттестить, поменяв запрос и проверив быстродействие на лету.

    Хотя тут конечно теже есть подводные камни 🙂 скорее всего нужно оптимизировать работу самого sql…

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

    Сколько людей столько и мнений (с)

    Reply
  4. dj_serega

    (3) CaptainMorgan, А она платная?

    Reply
  5. чингачгук

    1 еденица внутренней валюты 🙂

    иначе как тогда скачивать обработки других авторов?

    Ответ на предыдущий вопрос почему то не сохранился.

    кратко повторю.

    CaptainMorgan — обработка по сути не имеет ни чего общего с замером производительности.

    у нее другое назначение — все есть в описании…

    И вообще, к чему пустые обсуждения? Есть конкретная идея/предложение/пожелание, давайте обсудим…

    А так обсуждение перерастет во флуд.

    Reply
  6. softilium@hotmail.com

    По-хорошему, параллельно нужно снимать замеры ресурсов и очередей к ресурсам серверов приложений и БД. Тогда картина становится гораздо интереснее.

    А если еще вытаскивать информацию dmv с таблиц сервера СУБД — добавляется объем и цвет в такие замеры 🙂

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *