【讨论题】如何跟据需要对一个大表中的数据进行删除或更新
997
等27人参与

题干:

​ 本章我们学习了SQL优化的方法,其中讲到了对大表的操作。那么如果我们的业务环境中有一个10亿行的大表,这个表中记录了近三年的数据,现在跟据业务需要,我们要按照表中的create_time列对表中的数据进行清理,只保留最近1年的数据,你要如何进行操作?对于这类业务你是否有什么优化建议?

关键提炼:

​ 掌握对大表进行数据修改或是表结构修改的方法,在对大表进行数据修改时,我们需要把一个大的事务分成若干个小事务来进行操作,具体的操作步骤为:

​ 1)确定create_time列上有索引,并且delete from table where create_time>=‘2019-01-01’ and create_time<=‘2019-01-02’ 这样的SQL是可以用到索引的。

​ 2)循环执行上面的delete 语句,直到完成所有数据的删除,并且在每执行远一次delete后要使用删除线程sleep 1秒,这样是为了避免主从数据延迟

​ 3)待删除完成后,要使用optimize table语句对表进行整理

我的作业
去发布

登录后即可发布作业,立即

全部作业

数据加载中...

意见反馈 帮助中心 APP下载
官方微信