系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。
前面的七篇文章,从思路和方法论的角度介绍了微服务中的粒度、高可用、高并发、负载均衡以及微服务的重要组件连接池的一些基本问题。
在系统架构中,最容易先成为瓶颈的往往是持久层,后续的文章将会对如何进行数据库的架构进行思路上的梳理。
本篇的内容主要是数据库读性能的提升和引出数据库设计要考虑哪些问题。
数据库如何设计
沈老师常说的一句话:“任何脱离业务的架构,都是耍流氓”。
数据库的设计主要就是两个方面:库表设计、索引设计,而它们的设计指导:
- 根据“业务模式”,设计库表结构
- 根据“访问模式”,设计索引结构
读性能如何提升
提升读性能,最先想到的就是建立索引,但它也有潜在的问题:
- 写性能降低,每多建立一个索引,就会多一棵B+树,那么写操作的时候,就会涉及到更多的B+树,物理层面就是更多的数据页
- 索引占用内存大(如果建立了过多的索引,有些还是不常用的),buffer命中率降低,读性能降低