数据库整体优化方案(mysql)
0 Mysql rabin 36 阅读 • 6个月前

网上已经有很多类似的优化方案了,单表、加索引就不多说了,这里只介绍大概的循序渐进的整体优化方案。


1、单库:对于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库中进行访问操作。(大表优化)

2、读写分离:随着后续的市场推广力度不断加强,用户数量和并发量不断上升,这时如果仅靠一个数据库来支撑所有访问压力,几乎是在 自寻死路 。所以一旦到了这个阶段,大部分 Mysql DBA 就会将数据库设置成 读写分离状态 ,也就是一个 Master节点对应多个 Salve 节点。

3、垂直分区 (分库):可以根据业务自身的不同,将原本冗余在一个数据库内的业务表拆散,将数据分别存储在不同的数据库中,同时仍然保持 Master/Salve模式。经过垂直分区后的 Master/Salve 模式完全可以承受住难以想象的高并发访问操作

4、水平分区 (分表 ):一旦业务表中的数据量大了,从维护和性能角度来看,无论是任何的 CRUD 操作,对于数据库而言都是一件极其耗费资源的事情。即便设置了索引, 仍然无法掩盖因为数据量过大从而导致的数据库性能下降的事实 ,因此这个时候 Mysql DBA 或许就该对数据库进行 水平分区 (分表, sharding ),所谓水平分区指的是将一个业务表拆分成多个子表,比如 user_table0 、 user_table1 、 user_table2 。

5、集群:数据量和访问量继续增加,单一的读写分离架构无法承受更多的压力,此时便出现了由多个读写分离架构组成的数据库集群。

6、中间件:管理集群,并能够统一入口和出口。同时管理多种数据库(mysql、oracle),业务代码通过中间件读取数据,无需关注后端使用什么样的集群、什么样的分库分表方案。

评论:0