SQLServer处理亿万级别的数据的优化措施

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQLServer处理亿万级别的数据的优化措施序⾔
Sql Server数据库之通过SqlBulkCopy快速插⼊⼤量数据
///<summary>
///海量数据插⼊⽅法
///</summary>
///<param name="connectionString">⽬标连接字符</param>
///<param name="TableName">⽬标表</param>
///<param name="dt">源数据</param>
private void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, eInternalTransaction))
{
try
{
sqlbulkcopy.DestinationTableName = TableName;
//⼀次批量的插⼊的数据量
sqlbulkcopy.BatchSize = 1000;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交,数据将回滚,所有已复制的⾏都会从⽬标表中移除
sqlbulkcopy.BulkCopyTimeout = 60;
//设定NotifyAfter 属性,以便在每插⼊10000 条数据时,呼叫相应事件。

sqlbulkcopy.NotifyAfter = 10000;
for (int i = 0; i < dt.Columns.Count; i++)
{
sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
sqlbulkcopy.WriteToServer(dt);
}
catch (System.Exception ex)
{
throw ex;
}
}
}
}
View Code
如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下⽅⾯进⾏:
去掉表的所有索引
⽤SqlBulkCopy进⾏插⼊
分表或者分区,减少每个表的数据总量
在某个表完全写完之后再建⽴索引
正确的指定索引字段
把需要⽤到的字段放到包含索引中(在返回的索引中就包含了⼀切)
查询的时候只返回所需的字段
资料。

相关文档
最新文档