如何强调测试Sql Server性能与每秒数量请求

时间:2016-05-03 18:11:19

标签: c# sql-server

我想通过循环中的简单查询调用服务器来对我的sql server进行压力测试。我想并行运行此过程。假设我有x个客户端在循环中调用服务器10000次,我将测量y秒直到最后一个查询完成。我将测量y和x的行为方式。

这个测试有意义吗?

我只有一台PC和一台dev数据库服务器。如何在多线程上下文中运行查询 - 知道sql server有连接池并将缓存我的查询,有什么我需要记住的吗?

1 个答案:

答案 0 :(得分:0)

您不能使用简单查询来缓存数据(如您所述)

您需要使用需要花费时间的不同查询(至少几秒到几分钟)。此外,您的查询应读取大量数据并将大量/少量数据返回给客户端。

我的建议是这样做的:

  1. 创建一个包含2列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))个查询。
  2. 编写每个线程随机读取的多线程程序 来自不同行的查询并执行它。你可能需要百或 成千上万的线程查询数据库。
  3. 如果您的数据库是OLTP,并且用户更新/插入数据以及读取数据,您还需要更新/插入语句。
  4. 注意:您应该在与您的程序不同的计算机上安装SQL Server,否则您的测试不是很有效,因为在现实世界中,数据通过网络传输。

    请"标记为答案"如果帖子已回答问题