首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VLDB SQL SERVER与VFoxPro的比较

VLDB SQL SERVER与VFoxPro的比较
EN

Database Administration用户
提问于 2011-08-26 11:46:53
回答 3查看 491关注 0票数 2

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

我正在考虑使用server,因为我每天将有720亿条记录。但是当我在我的PC (双核E6300,@ Gb,HDD500GBSATA)上测试写入速度时,我发现Visual 9的记录速度是Server 2008的100倍。

Server,2.55分钟:

代码语言:javascript
复制
declare @i int=1
while @i<1000001
begin
 insert into dbo.sensor (sensorid, datetime, value) values (1,getdate(),@i)
 set @i=@i+1
end

VFP9,2秒:

代码语言:javascript
复制
? DATETIME ()
FOR  i=1 TO 1 000 000 STEP 1
 INSERT INTO Table1 (sensorid, dtime, value, status) VALUES (i, date(), i, "S")
ENDFOR
? DATETIME()

我要说的是,没有索引,该表将被只阅读。怎么啦?

EN

回答 3

Database Administration用户

发布于 2011-08-26 12:51:46

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

SQL Server中的过程循环非常慢,这将是时间差异的很大一部分。最好生成要大容量加载到数据库中的文件,以度量性能差异。而且,数据库的大小将很快需要使用多个数据库文件来扩展负载,我不确定FoxPro是否有任何内置支持。

票数 6
EN

Database Administration用户

发布于 2011-08-29 11:47:18

单凭大小,FoxPro DBF并不是一个真正的选项。VFP中的DBF文件仅限于2GB。看起来,您的数据将至少为每一行20个字节,这意味着一天的数据值超过100 at。我建议您忘记使用DBFs。

DBMS的写性能只是问题的一个方面,实际的速度将取决于整个堆栈、读取和缓存数据的方式等等。

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

票数 5
EN

Database Administration用户

发布于 2011-08-26 18:54:22

编辑应用程序,使用bulk insert提供程序将数据批量插入到表中,这样就会得到更好的结果。这将比使用循环一次插入一行要好得多。您可以通过使用要插入的值创建文本文件来模拟这种情况,然后使用T/SQL中的BULK insert语句或BCP命令行应用程序来批量加载数据。

如果要将数据大容量加载到生产表中,则完全保留恢复。如果要将批量加载到暂存表中,然后对其进行处理,则可以将恢复从完全恢复更改为大容量日志记录,或者简单地减少事务日志中的数据量。不要在没有使用完整恢复模型的情况下直接将数据大容量加载到生产表中。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/5074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档