垂直拆分
数据层-表
将单表中的常用字段和不常用字段,拆分到两个表,减少每次读无效字段导致的IO损失。
数据层-库
多个子系统的表,集中在单个DB里,为这些系统创建各自的DB,减少单个DB的压力。
业务层
多个子系统集中在单个项目里,将子系统独立成项目单独部署,增大吞吐量,还能有针对性地横向拓展。
水平拆分
数据层-表
单表中的记录过大,树的高度过高导致查询缓慢。
将全部记录按某个字段,分类到多个表中。例如,身份证表,按地区拆分。
数据层-库
单库的机器性能成为瓶颈。
将身份证表,按地区拆分到多个库里。
业务层
暂时没有好的例子。
也可能就没有这个说法。Orz
项目优化
对业务层
1. 代码优化(慢SQL,事务隔离级别,算法复杂度,减少GC)
2. SOA改造、微服务改造
3. 横向扩容
对数据层
1. 加缓存
2. 读写分离
3. 垂直拆分
4. 水平拆分