1. 数据库分库分表处理的具体实现方案 读后感
2019-04-13 本文已影响2人
光小月
查看《数据库分库分表策略的具体实现方案》,写了一篇读后感, 总结一下这篇文章讲了些什么。
1. 数据库的扩展方式
- 业务拆分,
- 主从复制,
- 数据库分库与分表
2. 业务拆分
业务拆分就是将重复使用的表存放在不同的库中
![](https://img.haomeiwen.com/i2223200/2676a2a920dee991.png)
3. 主从复制
配置,拓补,原理分析,效率,mysqlreplicate搭建
配置主从,设置主从读写分离
![](https://img.haomeiwen.com/i2223200/ddf0ee7a0d3071c7.png)
主要讲述了MySQL主从复制的原理:数据复制的实际就是Slave从Master获取Binary log文件,然后再本地镜像的执行日志中记录的操作。由于主从复制的过程是异步的,因此Slave和Master之间的数据有可能存在延迟的现象,此时只能保证数据最终的一致性。
4. 数据库分库与分表
机器有自身的物理上限, 数据量太多时,需要分库
- 4.1 分表实现策略, 用户ID,表容量
用户ID是系统重要字段,
表容量: 是将数据平均分为多少张表
数据库分表能够解决单表数据量很大的
时候数据查询的效率问题
![](https://img.haomeiwen.com/i2223200/18b15739c053990f.png)
- 4.2 分库实现策略
分库操作可以很好地解决单台数据库的性能问题。
分库策略与分表策略的实现很相似,可以通过取模的方式进行路由。
关键字: 用户ID、库容量
![](https://img.haomeiwen.com/i2223200/52fcfc1d610cf4ce.png)
提供的思路方式:
分库分表的策略相对于前边两种复杂一些,一种常见的路由策略如下:
1、中间变量 = user_id%(库数量*每个库的表数量);
2、库序号 = 取整(中间变量/每个库的表数量);
3、表序号 = 中间变量%每个库的表数量;
- 4.3 总结
数据库分表可以解决单表海量数据的查询性能问题,
分库可以解决单台数据库的并发访问压力问题。