目前,我们的SQL服务器托pipe在PC上。当有人使用来自不同国家(不同于托pipe服务器的国家)的应用程序时,响应非常缓慢。一个区域我们正在查看我们正在执行的查询以及表单加载时的往返次数。但是,我想知道如何测量服务器本身的性能 – 即每个单位时间有多less数据正在传输。还有什么我测量? 什么因素会影响这种数据传输?
谢谢
正如你所指出的那样,在这种情况下,延迟可能比带宽重要得多。
举一个简单的例子,如果你有一个表单需要(说)20个连续的查询,当一个表单加载和每个这些查询是形成和合理的效率,然后花费在LAN连接上收回所有结果的总时间可能是几毫秒或更less。
本地networking的往返时间(从同一局域网上的客户端ping SQL服务器所看到的)将<1ms,在现代networking上可能会less很多。 但是,一旦移动到WAN连接,往返时间就会增加。 通常情况下,您可以在附近国家(英国和德国)和50-100ms之间的连接(英国和美国之间的连接)查看长达10-50ms的连接。
您在本地<2ms内完成的一组查询现在需要1-2秒才能完成,也许还有更多。 如果你有像下拉列表那样的交互式重新填充的表单,那么networking延迟很大的用户将会有非常糟糕的体验。
这样做的另一个副作用是,如果这些查询中的任何一个导致了任何types的locking,那么随着您添加更多这些用户,其他人的整体性能也会随着时间的长短而下降,这些远程用户。
有很多方法可以改善这一点,但我不是真正的人给你这个build议。 不过,我认为将查询合并到less量的存储过程调用中可能是启动和更改应用程序行为的最有效方法,因此不会触发每个用户操作的查询。 一旦你知道每个查询有多昂贵(就远程客户端性能而言),那么你应该能够更好地调用哪些地方集中精力。