小编wou*_*ter的帖子

大量数据的插入性能下降(SQL Server/C#)

我正在使用电子设备实时数字化波形(每个设备每秒产生大约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)

c# sql-server

5
推荐指数
1
解决办法
8419
查看次数

标签 统计

c# ×1

sql-server ×1