При работе с SQL Server может быть сложно проверить производительность и масштабируемость ваших запросов и скриптов без реальной нагрузки на сервер. Это особенно актуально при написании блогов, презентаций или тестировании новых идей. К счастью, есть инструмент под названием ChaosLoad, который может помочь вам симулировать нагрузку на ваш SQL Server.
ChaosLoad позволяет вам определить шаблон JSON, который указывает нагрузку, которую вы хотите запустить. Например:
{ "ConnectionString": "Server=localhost\\sql2019;Database=WideWorldImporters;Trusted_Connection=True;", "Templates": [ { "ScriptPath": "Scripts\\Demo1\\HammerTime.sql", "Sleep": 100, "Threads": 50, "RunCount": 1000 }, { "ScriptPath": "Scripts\\Demo1\\FindUser.sql", "Sleep": 0, "Threads": 5, "RunCount": 5 } ] }
В приведенном выше примере шаблон включает два скрипта. “HammerTime.sql” выполняется 100 раз на 50 потоках с паузой в 50 мс после каждого выполнения, в то время как “FindUser.sql” выполняется 5 раз на 5 потоках без паузы между выполнениями.
Для использования ChaosLoad вы можете либо клонировать исходный код из репозитория ChaosLoad на GitHub и запустить его с помощью .NET Core SDK 2.1+ или загрузить исполняемые файлы для Windows с GitHub и запустить их без установки чего-либо.
После настройки ChaosLoad вы можете создавать различные сценарии нагрузки для тренировочных сессий или тестирования производительности. Например, вы можете скрыть недобросовестный запрос, который потребляет избыточную память, среди набора невинных запросов и вызвать других на поиск проблемы.
Если вы хотите попробовать ChaosLoad с быстрым примером, вы можете использовать пример, предоставленный в репозитории. Примерный шаблон выполняется против базы данных StackOverflow и включает три скрипта:
{ "ConnectionString": "Server=localhost\\sql2017;Database=StackOverflow2013;Trusted_Connection=True;", "Templates": [ { "ScriptPath": "Scripts\\Demo1\\GetAllUsersEndWithG.sql", "Sleep": 0, "Threads": 5, "RunCount": 10 }, { "ScriptPath": "Scripts\\Demo1\\GetCountPosts.sql", "Sleep": 0, "Threads": 5, "RunCount": 10 }, { "ScriptPath": "Scripts\\Demo1\\GetMostPopularBadge.sql", "Sleep": 10, "Threads": 5, "RunCount": 10 } ] }
С помощью ChaosLoad вы легко можете создавать и выполнять сложные сценарии нагрузки для проверки производительности и масштабируемости вашего SQL Server. Это ценный инструмент для разработчиков, администраторов баз данных и всех, кто работает с SQL Server.
Имейте в виду, что ChaosLoad является проектом с открытым исходным кодом и может не поддерживаться активно. Однако он все равно может быть полезным инструментом для ваших потребностей в тестировании нагрузки. Если у вас возникнут проблемы или у вас есть предложения по улучшению, вы можете отправить запросы на включение изменений в репозиторий проекта на GitHub.
Счастливого тестирования нагрузки!