由于我使用的数据库在通过 Internet 访问时速度非常慢,因此我进行了测试,具体如下:
我已经安装了 SQL Server 2014 和最新的 MSSMS
我在路由器上打开了一个端口,并在防火墙中添加了一条规则。此外,我在配置管理器中启用了 IP 地址的访问权限。我看到了来自 Internet 的数据库
我只创建了一个包含 5 条记录的表,我们将其命名为 tblEmployees,并带有索引字段
我在家用电脑上运行它,没有使用互联网。下载速度为 35 Mbps,上传速度为 3 Mbps。技术上来说没有流量
我尝试远程连接到我家 PC 的地方距离很短,不到 100 英里。Tracert、ping 正常
现在,当我在家庭网络上的 MSSMS 中运行 SELECT TOP 5 FROM tblEmployees 时,我会立即获得数据,但当我使用 MSSMS(或我正在使用的程序,都一样)远程执行相同操作时,我会在大约 6 秒内获得数据。对于“更大”的数据集,情况甚至更糟,例如,这个“更大”的数据集是 300 个客户端的列表。这就像几 kB 的数据,但我需要等待 10 多秒才能打开一个表。
我大概整个上周都在阅读这篇文章。AUTO_CLOSE 设置为 OFF。
同时,我在同一台 PC 上运行 MySQL 服务器,并且也接入了互联网。它运行速度很快。但是 SQL Server 运行速度真的很慢。这意味着问题与 SQL Server 的某些设置有关...但是是哪一个呢?
答案1
看来您的工作负载对网络延迟非常敏感(尽管简单的 SELECT 不应该显示这种行为)。
为了进一步调试,我需要 SELECT 语句的网络转储。请执行以下操作:
- 将 wireshark 安装到您的 Windows PC
- 使用 SSL 连接到您的数据库(以防止任何私人信息泄露到数据包转储中)
- 开始嗅探数据包
- 执行 SELECT 语句
- 停止嗅探
- 取消剩余的任何敏感信息
- 此处显示转储