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 ->> 谈表数据迁移时,先建索引再插入数据,还是先插入数据再建索引的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)