2010-03-16 69 views
0

我们有一个应用程序(用C#编写)将数据库中的实时股票市场价格(SQL Server 2005)存储起来。它在一天内插入大约100万条记录。现在我们正在增加更多的市场部分,没有记录会是双倍的(2百万/天)。在SQL Server 2005中插入大量数据

目前平均每秒记录的插入是约50,最大值为450和最小值是0。

要检查我的价格表一定条件下我已经使用服务代理(异步触发)。目前运行良好(CPU利用率约35%)。

现在我打算在当前股票价格的内存数据集中创建a。我们想做一些简单的计算。

目前我正在使用xml批量插入方法。 (在Storred Proc中的OPENXML)

我想知道成员对此的不同看法。

请提供处理此类情况的方法。

+4

你的问题是什么?你在问一个可行的架构吗? – 2010-03-16 14:53:54

+0

“我们会进行一些简单的计算”如果阅读,我们想做一些简单的计算? 为什么要从数据库中卸载数据,将数据载入内存数据集以执行简单的计算,SQL不仅仅是能够进行计算,而且如果不是这样,那么您可以在SQL Server中运行C#代码。 – 2010-03-16 16:27:59

+0

@Stephanie Page,现在我正在做数据库中的所有事情。简单的计算是特定股票的当前价格>一个价值(由用户提供)。我想把这些条件放在内存中,因为应用程序需要根据这些条件执行操作。目前,我将记录写入数据库,某些触发器将条件检查任务存储结果执行到不同的表,并且应用程序继续查询该表以进行更改。这延迟了输出。如果存在需要在数据库中保存的复杂条件, – Manjoor 2010-03-17 06:08:09

回答

0

你的问题是阅读,但标题暗示写作?

阅读时,考虑(位不要盲目使用)临时表来缓存数据,如果你要做一些处理。但是,通过简单的计算,我假设汇总实时AVG,MAX等?

通常会拖动数据,将其缓存在客户端并将其聚合到那里。

如果批量上传:

  • SqlBulkCopy的或类似的临时表
  • 单次写入从分期到决赛桌

如果单个上传,只需将其插入

一百万行是SQL Server('Orable,MySQL,DB2等)能够执行的舍入错误

例如:35k transaction (not rows) per second

+0

感谢您的回复。简单的条件只是检查>,<,=等,用于计算AVG,MAX,MIN ....我仍然使用存储过程。 其他复杂的计算使SQL服务器处于压力之下。我们有UI来添加条件。 有大量的动态sql语句,具有Group by子句,需要每2秒执行一次。 它使服务器非常繁忙,有时CPU使用率达到100%。 那时候我们删除了一些条件。 现在我试图移动一些条件到我的应用程序,我直接检查它与接收到的数据。 – Manjoor 2010-03-17 06:18:58