优化策略分析--索引
索引基本上是我们最常见的一个优化手段了,在单表数据量大的时候如果查询很慢,对我们的条件加一个索引基本是一个很常规的操作。
- 相信对于重复度很低的字段建索引这错应该是没人犯的,不过很多人却会跳另外一个坑:索引过多、或者索引树过高。这个问题比较无奈,如果说多索引合并成为联合索引能解决根本问题吗?多数这种情况下不是说没有办法解决,而是历史遗留问题限制。如果强行合并,解决了索引过多的问题,代码的问题随之可能就会出现。因为你合并索引,可能导致原有逻辑产生索引失效的问题。
优化策略分析--分库分表
一上来就说分库分表一定要自信看看这一条。分库分表最大的问题在于对原有数据层的影响,基本这种影响是颠覆性的。如果你将分库分表加上,分库分表最直接的就是会让你对老代码的维护工作量暴增。当然,这里的前提是你是做老项目优化。
优化策略分析--分区
MySQL单表能做1024个分区,单库基本能存几十个亿的表。每个分区算一个表,把所有表都做成分区表看似都是可能的。
- 确确实实,在商业开发当中,分区是一个很重要的优化手段。分区能给我们带来什么:用单表存储亿级的数据而不会产生查询时间过长,清理表也很方便。
- 缺点:分区带来了很好的用户体验,但是随之而来的就是庞大的运维工作量。试想一下,假若我们一个项目核心表差不多100张,每张建365个分区。总共算下来,分区就会有36500个。相当于我每天要去维护100个表。
优化策略分析--读写分离
读写分离,基本是目前商业开发最可靠的手段了。让我们有了更好的数据查询效率。最大的缺陷在于读写分离会增加MySQL服务器的预算。同时MySQL在高并发的情况下,slave也会有延迟,错误等。
优化策略分析--冷热数据处理
冷热数据的分离,其实对于很多项目来讲,是减轻MySQL负担的一个很好的策略。能给保障MySQL数据库性能一直良好。 它的问题在于对于某些业务,不能区分冷热界限。同时冷热数据也会在某些场景下产生,人工维护的工作。