今天,我使用 AnyDAC (firedac) 进行了测试,以获取远程 SQL Server 2012 中可用的所有数据。
我从中获取数据的表有这些简单的列:
1. date - (size 3 byte)
2. time - (max 5 byte)
3. int - (4 byte)
4. bit - (1 byte)
5. int - (4 byte)
6. float - (4 byte)
7. float - (4 byte)
8. int - (4 byte)
9. int - (4 byte)
总行大小应最大为 33 个字节。
好吧,在获取表中所有可用的行(超过 214 万行)后,我检查了 FireDAC 接收到的 tcp 流量并观察到它大约是 280MB,这意味着每行需要大约 130 字节,而我的预期值接近 33 字节.
我通过使用在服务器端定义的存储过程进行的另一项测量,该存储过程具有插入到上面同一个表的 sql,我使用 AnyDAC 的 Array DML 功能调用了存储过程。数组大小为 300K,我总共使用它添加了 1880 万条记录。用于它的流量实现为 2.85 GB。(所以每行 150 个字节)
FireDAC 或 SQL Server 端是否有任何配置来减少流量?显然,这里有问题。有什么建议么?
谢谢。
信息输出:
================================
Connection definition parameters
================================
User_Name=*****
Password=*******
SERVER=sql.***.gen
ApplicationName=Bist
Workstation=NB
DATABASE=BIST
MARS=yes
DriverID=MSSQL
================================
FireDAC info
================================
Tool = D18 Architect
FireDAC = 8.0.1 (Build 3279)
Platform = Windows 32 bit
Defines = AnyDAC_Unicode;AnyDAC_DBX;AnyDAC_NOLOCALE_META;
AnyDAC_MONITOR
================================
Client info
================================
Loading driver MSSQL ...
Loading odbc32.dll driver manager
Creating ODBC environment handle
Searching for ODBC driver ...
Checking for ODBC driver [SQL SERVER NATIVE CLIENT 11.0] ...
Found [SQL Server Native Client 11.0]
Driver Manager version = 03.80.7601.0000
================================
Session info
================================
Current catalog =
Current schema = dbo
Driver name = sqlncli11.dll
Driver version = 11.00.2100
Driver conformance = 3
DBMS name = Microsoft SQL Server
DBMS version = 11.00.2100