首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft SQL Server每秒将数据插入大型表中

Microsoft SQL Server每秒将数据插入大型表中
EN

Stack Overflow用户
提问于 2013-08-14 12:25:38
回答 4查看 2.1K关注 0票数 2

我有一个数据采集系统,它从一些工业设备中读取值,并将值记录到Microsoft 2008 R2数据库中。数据记录间隔约为20秒。每个记录数据包含大约600个字节的数据。

现在,我需要从一个新的硬件插入数据,但这一次的记录间隔必须是1秒。换句话说,我每秒钟向SQL server数据库插入1条600字节的记录。

我有两个问题:

  1. 在每秒钟插入数据时,是否会遇到任何可能的问题?我认为Microsoft SQL server对于这种插入频率是很好的,但我不确定是否需要长时间的插入。
  2. 程序是一个长期运行的应用程序。我大约每周清除数据表。当我每秒钟记录数据时,表中每小时有3600行,每天有86400行,周末大约有600行。这样可以很好地读取数据吗?还是我应该尝试改变我的方法,以避免在表中有这么多行?

顺便说一下,我所有的数据库操作都使用LinqToSQL,编程使用C#。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-14 12:31:20

首先,您必须考虑插入数据的表上的现有索引,因为索引减慢了插入过程。其次,如果您有完整的恢复模型,那么每个插入进程都将写入事务日志,日志文件将迅速上升。

考虑将恢复模型更改为简单,并禁用索引。

当然,从该表中选择行要慢一些,但我不知道您的请求是什么。

票数 0
EN

Stack Overflow用户

发布于 2013-08-14 12:29:29

在每秒钟插入数据时,是否会遇到任何可能的问题?我认为Microsoft SQL server对于这种插入频率是很好的,但我不确定是否需要长时间的插入。

如果数据库设计正确,则不会遇到任何问题。我们以更快的速度保存GIS数据,没有任何问题。

这样可以很好地读取数据吗?还是我应该尝试改变我的方法,以避免在表中有这么多行?

这取决于,如果您需要所有的数据,那么您如何才能改变方法呢?如果你不需要它,你为什么要保存它?

票数 1
EN

Stack Overflow用户

发布于 2013-08-14 12:41:06

根据我在大学的论文经验,如果你的系统是完全稳定的,并且不会崩溃或溢出等,你可以使用SqlBulkCopy来避免每次记录的I/O操作。这是DataTable批量复制的示例代码,此方法应每1小时调用一次:

代码语言:javascript
复制
        private void SaveNewData()
        {
            if (cmdThesis.Connection.State == ConnectionState.Open)
            {
                cmdThesis.Connection.Close();
            }

            SqlBulkCopy bulkCopy = new SqlBulkCopy(@"Data Source=.;Initial Catalog=YourDb;Integrated Security=True");
            bulkCopy.BatchSize = 3000;
            bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Col1", "Col1"));
            bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Col2", "Col2"));
            bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Col3", "Col3"));
            bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Col4", "Col4"));
            bulkCopy.DestinationTableName = "DestinationTable";
            bulkCopy.WriteToServer(Result);

            Result.Rows.Clear();

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

https://stackoverflow.com/questions/18231704

复制
相关文章

相似问题

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