单表上亿的数据怎么删除?
那么多的知识,我随便拿两个小知识点来考一考大家。如果你能答上来代表我这都是基础。我不是拿难的,我是拿普通的知识点。
·第一个点OK,做技术都会遇到数据库的问题,你去面试、增产改查都是性能优化的。会很多我问一个点好吧?假如说他有2亿条数据,但到2亿条了。我现在问题是你,怎么在能不影响性能的情况下删掉200万行,一个表里删掉200万行不影响性能OK?
行还说这不是基础问题,哪个生产环境单表怼2亿条数据,而且还去没事删除,他又是这种自己学了个知识点,然后出了个题来卖弄的。
首先这种问题如果在面试的时候出现,一面试官水平应该不太行。二面试官有知道一个知识点,特别想考察你,你在回答的时候得去互动,否则你怎么回答都是错的。
比如如何叫不影响性能?是有程序在用这个数据吗?还是要求查询响应的时间不能大于多少,删掉200万条时间多长时间删掉?我一天删一条200万天后也就删完,而且也不影响性能。回到问题当中,我这里提供几个思路。
·第一分批删除。比如每次删除用limit只删除3000-5000条。
·第二就删除时候的条件一定是已经加过索引的。
·第三如果有分区可以按照分区来删除。
·第四就是错封删除。在没有业务或者业务量最小的时候,比如在凌晨3点的时候进行删除。