ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL Server ->> 谈表数据迁移时,先建索引再插入数据,还是先插入数据再建索引的问题

2021-11-10 18:32:25  阅读:97  来源: 互联网

标签:先建 插入 索引 SQL 迁移 数据


这个事情源于我前阵子做一个数据迁移时遇到的惨痛经历。几个月前我们生产环境有张10几亿行数据的表因为自增列是INT类型,数据类型需要改成BIGINT,只能迁移数据到新表后通过重命名表的方式来实现表迁移。这个我在另外一篇博文SQL Server ->> 谈SQL Server数据库大表迁移中有谈到。这里主要谈过程中我遇到的问题。

其实这个问题准确来说是三种选择,而不是题目的两种。应该是:到底是:1、先建索引再全表插入数据;2、先插入数据再建索引;3、先建索引,再批次插入数据

 

先建索引再全表插入数据:

这是三者风险最高和时间消耗最高的一种选择,绝对是。先说风险性,整个表的数据一次性插入,整个事务大小级别是极其恐怖的(假设表数据量非常大,而且索引还不少),风险性极高,一旦出现问题,整个回滚的时间是完全不可预期的。你可以想象这个过程要耗费多少系统资源:

1、事务日志会按插入数据量增长,等同于日志文件大小增量只是是表数据写入数据量的大小,假设你的数据本身是100G,那你要保证你的事务日志磁盘空间至少要大于100G;

2、数据插入过程SQL SERVER不仅要把申请数据本身的内存空间,还需要申请索引本身所需的内存空间,也就是SQL SERVER一遍插入数据,一遍还要维护索引。这个时候系统资源压力最大的,我觉得是内存。

3、

标签:先建,插入,索引,SQL,迁移,数据
来源: https://www.cnblogs.com/jenrrychen/p/15534739.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有