我正在使用电子设备实时数字化波形(每个设备每秒产生大约1000个512字节数组 - 我们有12个设备).我在C#中为这些设备编写了一个客户端,大部分工作正常并且没有性能问题.
但是,该应用程序的一个要求是归档,并且Microsoft SQL Server 2010被强制作为存储机制(在我的控制范围之外).数据库布局非常简单:每台设备每天有一个表("Archive_Dev02_20131015"等).每个表都有一个Id列,一timestamp列,一Data列(varbinary)和20个带有一些元数据的整数列.在Id和上有一个聚集的主键timestamp,以及另一个单独的索引timestamp.我天真的方法是将客户端应用程序中的所有数据排队,然后使用5秒间隔将所有数据插入数据库SqlCommand.
基本机制如下所示:
using (SqlTransaction transaction = connection.BeginTransaction()
{
//Beginning of the insert sql statement...
string sql = "USE [DatabaseName]\r\n" +
"INSERT INTO [dbo].[Archive_Dev02_20131015]\r\n" +
"(\r\n" +
" [Timestamp], \r\n" +
" [Data], \r\n" +
" [IntField1], \r\n" +
" [...], \r\n" +
") \r\n" +
"VALUES \r\n" +
"(\r\n" +
" @timestamp, \r\n" +
" @data, \r\n" + …Run Code Online (Sandbox Code Playgroud)