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

发布时间:2021-11-09 13:41:25 作者:小新
来源:亿速云 阅读:166

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

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

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

推荐阅读:
  1. 数据库访问慢的几个原因
  2. mysql中大表是什么意思

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库

上一篇:数据库中走索引删除0条记录却要142秒的优化案例

下一篇:MongoDB副本集如何添加和删除仲裁节点

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》