市面上流行的数据库种类繁多,有Oracle、MySQL、PostgreSQL、MongoDB等。当下互联网企业多选用MySQL作为存储业务数据的数据库,它具有开源、可扩展性、使用成本低且经过市场验证等特点。那么,我们就有必要了解工作中跟MySQL相关的一些常用知识点。
1. 表设计
中大型企业中一般都有自己的开发手册,里面包含了编码规范、表设计规范等,小型企业可能流程没有那么规范,也缺少充足的人力资源去专门制定贴合自身业务的开发手册,因此一般参考阿里的开发手册。下面总结了一些工作中进行表设计要重点关注的点,抛砖引玉,有了方向后具体细节可以个人进一步研究。
2. 深度分页处理
一般我们分页查询直接使用limit,但是在数据量大的情况下单纯采用limit受偏移量的影响很大,当偏移量大到一定值后性能开始大幅下降,惯用的优化手段是先使用where等查询语句,配合limit使用,效率才高,比如where id>xx and limit。
3. 慢SQL优化
企业中一般有云监控,出现慢sql会触发业务告警,dba也会关注并收集慢sql提醒业务处理。监控平台一般有完整的慢sql语句、耗时、sql执行计划等信息,开发根据这些信息进行分析,优化sql或代码后重新部署应用进行验证。
4. 分库分表与数据归档
分库分表和数据归档是项目中优化大数据量表的两种常用的手段。分库分表采用的是分治的思想,将一个表的大量数据分散在按业务划分的库、表中,使得单表的数量减下来。数据归档则是冷热隔离的思想,比如根据业务要求将已完结的n天前的单据备份到备份表,然后清理已备份的业务表数据,使业务表保持适中的数据量以保证性能。
一般新项目都会根据业务增长量、技术资源等评估是否采用分库分表这种方案。而老项目如果前期就没有使用分库分表或分布式数据库等其他方案,不太可能直接中间就上一个分库分表,因为分库分表成本高,存在跨库导致的分布式事务等问题,所以一般采用数据归档的方案。
5. 主从复制
虽然日常工作中较少直接使用主从复制,但是一定会涉及,因此了解它的基本原理及常见应用场景有助于我们开展工作。
基本原理图示:
常见应用场景: