VLDB - SQL SERVER 与 VFoxPro

Dor*_*AVA 2 sql-server

我必须为每分钟从 500 万个传感器收集数据的应用程序创建一个 DBF,因此我每分钟将有 500 万条记录。

我正在考虑使用 SQL 服务器,因为我每天将有 72 亿条记录。但是当我在我的 PC(双核 E6300、@Gb RAM、HDD 500Gb SATA)上测试写入速度时,我发现 Visual Foxpro 9 注册 100 万条记录的速度是 SQL Server 2008 的 100 倍。

SQL Server,2.55 分钟:

declare @i int=1
while @i<1000001
begin
 insert into dbo.sensor (sensorid, datetime, value) values (1,getdate(),@i)
 set @i=@i+1
end
Run Code Online (Sandbox Code Playgroud)

VFP9,2 秒:

? DATETIME ()
FOR  i=1 TO 1 000 000 STEP 1
 INSERT INTO Table1 (sensorid, dtime, value, status) VALUES (i, date(), i, "S")
ENDFOR
? DATETIME()
Run Code Online (Sandbox Code Playgroud)

我提到没有索引,并且该表将是只读的。怎么了?

Mar*_*inC 6

一个很好的起点是查看 SQL CAT 团队关于 SQL Server 2008 数据加载性能的白皮书

SQL Server 中的程序循环非常慢,这将是时间差异的很大一部分。最好生成要在数据库中批量加载的文件以测量性能差异。此外,数据库的大小将很快需要使用多个数据库文件来分散负载,我不确定 FoxPro 是否具有任何内置支持。


nvo*_*gel 5

FoxPro DBF 并不是仅就大小而言的真正选择。VFP 中的 DBF 文件限制为 2GB。看起来您的数据每行至少有 20 个字节,这意味着一天的数据价值超过 100GB。我建议你忘记使用 DBF。

DBMS 写入性能只是问题的一个方面,实际速度将取决于整个堆栈、读取和缓存数据的方式等。您的测试并没有真正表明太多。

您是否查看过各种可用的复杂事件处理 (CEP) 解决方案?您应该使用一些技术来优化流数据的存储和操作。一些可用的 CEP 解决方案包括:Oracle CEP、Microsoft StreamInsight、StreamBase 和 OsiSoft PI 系统。