MySQL千万级大表优化,看这一篇就忘不掉了!
有些业务经常会有一种紧急需求,总是需要给一个表添加字段,搞得 DBA 和业务同学都挺累,可以想象一个表有上百个字段,而且基本都是 name1,name2……name100,这种设计本身就是有问题的,更不用考虑性能了。 究其原因,是因为业务的需求动态变化,比如一个游戏装备有 20 个属性,可能过了一个月之后就增加到了 40 个属性,这样一来,所有的装备都有 40 个属性,不管用没用到,而且这种方式也存在诸多的冗余。 我们在设计规范里面也提到了一些设计的基本要素,在这些基础上需要补充的是,保持有限的字段,如果要实现这些功能的扩展,其实完全可以通过配置化的方式来实现,比如把一些动态添加的字段转换为一些配置信息。 配置信息可以通过 DML 的方式进行修改和补充,对于数据入口也可以更加动态、易扩展。 降维策略 3:Delete 操作转换为高效操作 有些业务需要定期来清理一些周期性数据,比如表里的数据只保留一个月,那么超出时间范围的数据就要清理掉了。 而如果表的量级比较大的情况下,这种 Delete 操作的代价实在太高,我们可以有两类解决方案来把 Delete 操作转换为更为高效的方式。 第一种是根据业务建立周期表,比如按照月表、周表、日表等维度来设计,这样数据的清理就是一个相对可控而且高效的方式了。 第二种方案是使用 MySQL rename 的操作方式,比如一张 2 千万的大表要清理 99% 的数据,那么需要保留的 1% 的数据我们可以很快根据条件过滤补录,实现“移形换位”。 ②SQL 优化 其实相对来说需要的极简的设计,很多点都在规范设计里面了,如果遵守规范,八九不离十的问题都会杜绝掉。 在此补充几点: SQL 语句简化,简化是 SQL 优化的一大利器,因为简单,所以优越。 (编辑:常州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |