SQLServer处理亿万级别的数据的优化措施序⾔
Sql Server数据库之通过SqlBulkCopy快速插⼊⼤量数据
///<summary>
param name///海量数据插⼊⽅法
///</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, SqlBulkCopyOptions.UseInternalTransaction))
{
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进⾏插⼊
分表或者分区,减少每个表的数据总量
在某个表完全写完之后再建⽴索引
正确的指定索引字段
把需要⽤到的字段放到包含索引中(在返回的索引中就包含了⼀切)
查询的时候只返回所需的字段
资料
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论