我想通过循环中的简单查询调用服务器来对我的sql server进行压力测试。我想并行运行此过程。假设我有x个客户端在循环中调用服务器10000次,我将测量y秒直到最后一个查询完成。我将测量y和x的行为方式。
这个测试有意义吗?
我只有一台PC和一台dev数据库服务器。如何在多线程上下文中运行查询 - 知道sql server有连接池并将缓存我的查询,有什么我需要记住的吗?
答案 0 :(得分:0)
您不能使用简单查询来缓存数据(如您所述)
您需要使用需要花费时间的不同查询(至少几秒到几分钟)。此外,您的查询应读取大量数据并将大量/少量数据返回给客户端。
我的建议是这样做的:
public async void SendOrder()
{
using (var httpClient = new HttpClient { BaseAddress = baseAddress })
{
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("authorization", "Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
using (var content = new StringContent("{ \"notifyUrl\": \"https://your.eshop.com/notify\", \"customerIp\": \"127.0.0.1\", \"merchantPosId\": \"145227\", \"description\": \"RTV market\", \"currencyCode\": \"PLN\", \"totalAmount\": \"21000\", \"products\": [ { \"name\": \"Wireless mouse\", \"unitPrice\": \"15000\", \"quantity\": \"1\" }, { \"name\": \"HDMI cable\", \"unitPrice\": \"6000\", \"quantity\": \"1\" } ]}", Encoding.UTF8, "application/json"))
{
using (var response = await httpClient.PostAsync("api/v2_1/orders/", content/*, null, "application/json"*/))
{
string responseData = await response.Content.ReadAsStringAsync();
}
}
}
}
的表格。填充你的
表具有不同的查询,简单到复杂,快速到时间
耗时。您可能需要成百或数千个(id int, query nvarchar(max))
个查询。注意:您应该在与您的程序不同的计算机上安装SQL Server,否则您的测试不是很有效,因为在现实世界中,数据通过网络传输。
请"标记为答案"如果帖子已回答问题