千万级数据量必须分库分表?揭秘几个主流打法!
回答
-
不到万不得已,不建议大家直接做分库分表。
因为,分库分表其实不仅实现方案复杂,并且也会带来很多问题,比如跨库事务、分页查询等。
优先方案
-
数据库优化
2000 万的数据量,其实大多数情况下用好索引就可以提升很大的效率的。
有时候,把索引优化好,表结构设计好(比如适当做数据冗余),SQL语句(比如减少多表JOIN)优化好,就可以大大提升性能。
-
缓存
可以通过缓存来减少对数据库的压力,不要把所有的流量都交给数据库来抗。
-
分区
通过数据分区可以减小单个表的物理存储空间。
-
数据归档
定期的清理一些冷数据,或者做数据归。
这样,就可以减少数据的数量,就能大大提升效率。
-
分布式数据库
在多个节点上分散数据,提高性能和容量。
虽然,分布式数据库需要的成本比较高,
但是,相比分库分表的改造来说,受益也比较大。