数据库中大表删除字段慢的原因有哪些

小编给大家分享一下数据库中大表删除字段慢的原因有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

专注于为中小企业提供网站设计制作、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业临泉免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

由于生产环境,用的是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,自然不能直接改。

看完了这篇文章,相信你对“数据库中大表删除字段慢的原因有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网站名称:数据库中大表删除字段慢的原因有哪些
URL分享:http://pwwzsj.com/article/jpdjhe.html