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

2021/11/11 2:10:23

本文主要是介绍SQL Server ->> 谈表数据迁移时,先建索引再插入数据,还是先插入数据再建索引的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

 

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

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

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

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

3、



这篇关于SQL Server ->> 谈表数据迁移时,先建索引再插入数据,还是先插入数据再建索引的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程