DB (SQL) автоматизированные инструменты для стресс / нагрузки?

Я хочу измерить производительность и масштабируемость моего приложения БД. Я ищу инструмент, который позволил бы мне запускать множество операторов SQL для моей БД, принимая в качестве аргументов DB и скрипт (SQL) в качестве аргументов (+ необходимые данные, например имя хоста, порт, логин …).

В идеале это должно позволить мне контролировать такие параметры, как количество имитируемых клиентов, длительность теста, случайные переменные или выбор из списка (например, SELECT FROM … WHERE value = @var, где var считывается из командной строки или рандомизировано за выполнение) , Я хотел бы проверить результаты, которые будут сохранены как CSV или XML-файл, который я могу проанализировать и построить. И, конечно, с точки зрения цены я предпочитаю «бесплатную» или «демо» 🙂

Удивительно (по крайней мере, для меня), в то время как есть десятки таких инструментов для тестирования нагрузки на веб-приложение, я не смог найти ни одного для тестирования БД !? Те, которые я видел, например pgbench, используют встроенную БД на основе некоторого сценария TPC, поэтому они помогают протестировать конфигурацию СУБД и H / W, но я не могу проверить MY DB! Какие-либо предложения?

В частности, я использую Postgres 8.3 для Linux, хотя я мог бы использовать любой DB-общий инструмент, соответствующий этим требованиям. H / W имеет 32 ГБ оперативной памяти, а размер основных таблиц и индексов – 120 ГБ. Следовательно, может быть соотношение времени отклика 1:10 между холодным и теплым кешем (I / O vs RAM). Реально я ожидаю, что запросы будут распределяться равномерно, поэтому для меня важно проверить запросы на разные части БД.

Не стесняйтесь также связаться со мной по электронной почте. Благодаря!

– Шауль Дар (info@shauldar.com)

    JMeter из Apache может обрабатывать разные типы серверов. Я использую его для тестирования нагрузки на веб-приложения, другие в команде используют его для вызовов БД. Его можно настроить разными способами, чтобы получить необходимую вам нагрузку. Его можно запустить в консольном режиме и даже сгруппировать с помощью разных клиентов, чтобы минимизировать накладные расходы (и, таким образом, фальсифицировать результаты).

    Это приложение для Java и немного сложное с первого взгляда. Но нам все равно нравится. 🙂

    Мы никогда не находили адекватного решения для стресс-тестирования нашей базы данных DB2 для мэйнфреймов, поэтому мы закончили свой собственный. На самом деле он состоит из банка из 30 компьютеров под управлением Linux с установленным DB2 Connect.

    29 из ящиков запускает скрипт, который просто ждет появления стартового файла на монте NFS, а затем запускает фиксированные запросы на основе данных. Тот факт, что эти запросы (и данные в базе данных) являются фиксированными, означает, что мы можем легко сравнить с предыдущими успешными прогонами.

    30-й ящик запускает два сценария подряд (второй – тот же, что и все остальные). Первые пустые ячейки заполняют таблицы базы данных нашими известными данными, а затем создают файл стартера, чтобы продолжить работу всех других машин (и самих себя).

    Все это делается с помощью bash и DB2 Connect, поэтому он довольно легко поддерживается (и свободен).

    У нас также есть другой вариант для случайных запросов на основе анализа информации о производстве, собранной в течение многих месяцев. Труднее проверить выход с известной успешной базой, но в этом случае мы только ищем функциональные проблемы и проблемы с производительностью (поэтому мы проверяем ошибки и запросы, которые занимают слишком много времени).

    В настоящее время мы изучаем, можем ли мы объединить все эти физические серверы в виртуальные машины, как на мейнфрейме, выполняющем zLinux (который будет использовать HyperSockets для общей памяти с общей памятью для TCP / IP, в основном устраняя задержки в сети), так и платформы Intel с VMWare, чтобы освободите часть этого оборудования.

    Это вариант, который вы должны изучить, если не возражаете немного работать, потому что это дает вам большой контроль над дорожкой.

    Генератор нагрузки SQL – это еще один инструмент:

    http://sqlloadgenerator.codeplex.com/

    Мне это нравится, но у него еще нет возможности сохранить тестовую настройку.

    Вы проверили Bristlecone инструмент с открытым исходным кодом от Continuent? Я не использую его, но он работает для Postgres и, похоже, способен делать то, что ваш запрос. (извините, как новый пользователь, я не могу дать вам прямую ссылку на страницу инструмента, но Google доставит вас туда; o])