关于SQL Server alter table修改字段类型

142 篇文章 26 订阅
20 篇文章 0 订阅

最近业务方觉得业务表int字段精度不够,需要转为decimal。操作的数据库版本是2014,涉及30多张表,其中有9个千万级的大表,还不止改一个字段。这里总结下注意事项和遇到的问题

  • 隐式转换问题:代码对应变量类型要改,关联表字段类型要改,否则就是在制造性能炸弹
  • 索引问题:字段上有索引需要先删除,改完类型一定要记得建回去
  • 性能问题:删除索引前对应业务sql必须停掉,否则高并发全表扫描瞬间能将资源耗尽
  • 阻塞对应表读写:alter过程锁表,对该表的读写操作均会被阻塞  -- 2016支持online修改
  • 从库日志应用进程被阻塞:对于从库,如果之前有相应大查询,会阻塞日志应用进程,造成主从延迟
  • 慢慢慢慢:alter过程中会有全量update,大表非常耗时
  • 日志暴增:大量全量update会导致事务日志暴增,注意磁盘空间,生产库要注意备份截断。
  • 日志频繁扩展:一旦使用率接近100%,事务日志只能每次按设置量自动增长(例如每次100M)。如果没有改过这个参数,默认是1M,那会陷入漫长的LATCH_EX(LOG_MANAGER) 等待中,性能更加低下。
  • 阻塞系统表读写:大量alter操作期间,对系统表的读写也会被阻塞。如果你在alter过程中才发现事务日志自动增长设的是1M,会发现此时已经查看不了数据库选项,修改自动增长值了,所以最好是事先调整好。
  • 主从延迟:大量生成的事务日志要在从库应用,如果主从库性能有差异、或者异地灾备,主从会出现明显延迟,并且可能短时间内难以追平

暂时只想到这么多,如果有不对的或者有更好的修改类型方法,欢迎指正补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值