【发布时间】:2018-06-12 16:04:46
【问题描述】:
我有一个 MS SQL DB 服务器(巨大的物理机器)和一个应用程序服务器(VM 上的 C# 工具)。应用程序需要从数据库服务器读取大型数据集(具有数百万行和数 GB 大小的表)。
当从应用服务器运行 select 语句时,我会在服务器上等待 ASYNC_NETWORK_IO,并且网络利用率不超过 50-100Mbit,尽管它们之间有 10Gbit 的线路。当我通过普通的 Windows 文件共享传输一个大文件时,它达到大约 10Gbit(因此网络速度很快)。
我尝试更改驱动程序:OLEDB vs ODBC (v13)。我尝试将网络包大小从非常小的 1kb 更改为 32kb。 到目前为止还没有改进它的运气。
你能给我一些提示吗?我接下来可以尝试什么?
不能更改应用程序或数据传输方式(批量而不是直接查询)。
SQL Server 2012 (11.0.6579)(物理,MS 2012R2,380GB RAM,10GBit) 应用服务器(VM,MS 2012 R2,128GB 内存,10Gbit)
【问题讨论】:
-
您可以使用bcp 测试将数据传输到同一服务器的速度。这将排除任何与网络相关的内容。
-
也许客户端是 CPU 密集型消耗的结果。
标签: sql-server performance networking sql-server-2012