我正在研究那些必须在数据库中记录的大量(每分钟2000-5000条记录)传入事件的系统(SQL server 2000)。我们使用ODBC连接来连接数据库。
目前我们在应用启动期间打开一个连接,并使用连接推送数据,因为我们将无法在每次添加记录时获得新连接,因为大量数据被输入。我们面临的挑战面对的是:当网络出现故障或连接断断续续时,数据不会被推送到数据库中(当然,如果网络出现问题,我们会得到CDBException
)。但是恢复连接为时已晚,因为更多事件不断涌入。每次插入记录时都不可能检查连接的有效性,因为这是一项耗时的工作。
我想到了一种克服这个问题的方法。
使用缓存/缓冲区来保存 传入的警报/事件并推送它们 进入数据库 一次在'n'秒和/或一次 缓冲区达到一定的大小。
此解决方案是否有用?有没有其他方法可以解决这个问题?
感谢。
答案 0 :(得分:1)
我打算建议使用缓存或缓冲区来保存传入事件并批量插入它们,但我看到你已经考虑过了。
你应该看看MSMQ,这可能是你正在寻找的。 p>
答案 1 :(得分:1)
我让客户端写入名称中带有日期和时间的文件。写入N条记录后,停止写入该文件(开始写入新文件)并让BULK INSERT (Transact-SQL)插入“已完成”文件。您可以添加清理例程来删除已处理到数据库中的文件。