@[TMySQL部署方案
1 单机模式,如下图左一
优点:架构简单,节省资源
适用场景:小项目,资源紧张,单表字段不多,数据量千万以下
2 读写分离模式,如下图二
特点:新增数据库中间件,下图是一主两从的形式,由数据库中间点向mysql主节点写入数据,然后从节点根据binlog文件,复制主节点的数据。web应用向从节点读取数据
适用场景:读多写少,单表数据量千万以下
3 分片模式,如下图右一
特点:新增数据库中间件,由数据库中间件对数据进行路由到不同数据库,每个数据库表结构一样,实际上每个数据库的数据是所有数据的子集。
试用场景:数据量大过千万级
路由方案:区间,hash等
4 读写分离和分区结合,如下图一
适用场景:互联网硬件资源充足,且数据量大,需要高可用
分库分表
1 水平分表
将一个库中,同一个表中的数据按一定规则拆分到多个表中
优化提升:
优化单一表数据量过大而产生的性能问题
避免IO争抢锁并减少锁表的几率
2 垂直分表
将一个宽表的表字段按访问频次,是否是最大字段的原则,拆分为多个表,可以使业务清晰。应该尽量避免联表查询。这里还涉及到一个知识点,mysql跨页问题
mysql一页能存储16kb的数据,所以在同一页中,采用垂直分表可以存储更多的行,避免跨页查询带来的性能问题。
第一次写文章,自己的一些总结,不对的地方欢迎大家指正