小编给大家分享一下数据库中大表删除字段慢的原因有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
专注于为中小企业提供网站设计制作、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业临泉免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
由于生产环境,用的是DG架构,因此在数据库同事的协助下,利用DG备库snapshot的功能,在生产环境,真实操作了一次,虽然和主库操作,唯一不同的是,没有请求的压力,相当于停了应用,但还是能说明些问题。
整个删除操作,执行时间,大约是30分钟,通过10046的trace,看见等待事件,主要是下面这种,
这篇文章提到了这个错误,
https://blog.csdn.net/u011116642/article/details/51540314
有人还做了测试,
1. 将列置为unused
ALTER TABLE test1 SET UNUSED COLUMN Tablespace_name;
2. 删除unused列
ALTER TABLE test1 DROP UNUSED COLUMN CHECKPOINT 5;
在未执行完毕前,用shutdown abort强制关闭数据库(如果用shutdown immediate就看不到效果,它会等到执行完毕才会关闭数据库)
3. 重新启动数据库,查看test1表,报错,
4. 继续删除未删完的列
ALTER TABLE test1 DROP COLUMNS continue
5. 执行完毕后再次查询test1表,就OK了
2.可以尝试逻辑删除,然后再物理删除,即线上置为unused,等维护窗口,再删除这个字段,如下面这篇文章,
https://blog.csdn.net/caimaohua/article/details/4264040
3. 使用在线重定义,删除字段,如下文章所介绍,
http://m.blog.itpub.net/17203031/viewspace-772500/
https://blog.csdn.net/qq_33879355/article/details/78578175
4. 如果有停机时间,可以采用CTAS重建表,间接删除字段。
针对这个问题,我们采用的,算是第五种方法,即不动这字段,作为备份字段,未来新需求要增加字段,就直接改这字段,当然这是有些前提的,
1. 应用中对该字段的引用,需要删除,例如insert操作,需要删除这个字段名称,否则就会出问题。
2. 新增字段的类型,要和这个字段类型兼容,比如这字段是VARCHAR2,新增字段需要DATE,自然不能直接改。
看完了这篇文章,相信你对“数据库中大表删除字段慢的原因有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
文章名称:数据库中大表删除字段慢的原因有哪些
本文路径:http://lswzjz.com/article/jpdjhe.html