zoukankan      html  css  js  c++  java
  • 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, 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进行插入

    分表或者分区,减少每个表的数据总量

    在某个表完全写完之后再建立索引

    正确的指定索引字段

    把需要用到的字段放到包含索引中(在返回的索引中就包含了一切)

    查询的时候只返回所需的字段

    资料

    http://www.cnblogs.com/sydeveloper/archive/2013/04/03/2992881.html

    1.表分区 http://www.cnblogs.com/huangxincheng/p/3565755.html

    2.MVP教程地址:http://www.cnblogs.com/lyhabc/p/3196479.html

    3.性能优化:http://www.cnblogs.com/wp5719/p/5656696.html

    4.通过ip连接:http://www.jb51.net/article/59352.htm

    http://www.cnblogs.com/edisonchou/p/6106176.html

  • 相关阅读:
    Java1.0-1.11各个版本的新特性
    Java在ServletContextListener、过滤器、拦截器解决对象无法注入问题
    实验七 Web应用测试
    第四次作业
    实验5
    实验4
    实验3
    把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;
    1. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;报错问题
    在eclipse中新建maven项目 js,css路径失效问题
  • 原文地址:https://www.cnblogs.com/cnki/p/5250226.html
Copyright © 2011-2022 走看看