• 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

  • 相关阅读:
    nacos 管理页面使用
    Spring Cloud Alibaba 添加 nacos 注册服务
    Maven安装与配置
    [ERROR] 不再支持源选项 5。请使用 7 或更高版本
    SpringCloudAlibaba 环境搭建
    SpringCloud、SpringCloudAlibaba、SpringBoot之间的版本依赖
    Cannot download 'https://start.spring.io': connect timed out , response: 200
    创建SpringBoot分布式项目
    [PYTHON][BAT][SHELL] 常见易忘 python、bat、shell 脚本操作汇总(持续更新)
    跳转网址
  • 原文地址:https://www.cnblogs.com/cnki/p/5250226.html
Copyright © 2020-2023  润新知