1、首先说明一下能不分库分表就不分库分表。因为分库分表会以后会面临很多问题,例如多表的分页查询,多表的join查询,跨库事务的问题,分布式ID,扩容问题等,势必会提高系统的复杂读。
2、基于此后续研究的学习的内容就有了,比如分布式事务、分布式id、数据库分库分表开源中间件、数据库扩容原理等。
3、当然了,为了业务正常的发展还是需要分库分表的,以此来提高io读写、数据库链接、网络吞吐等瓶颈。单表单库的情况下,单表5000W或100G以上,操作数据库性能会出现明显下降。
4、数据库分库分表分位垂直和水平两种大的方式
5、分库分表以后面临的常见问题处理
1、分布式事务:两阶段提交2PC、补偿事务提交TCC,后续学习补充起来。
2、跨节点join查询:表冗余、字段冗余来避免跨库join查询。
3、跨节点分页查询:基于分库分表存储的用户单条或者多条查询以及基于Elasticsearch、Solr存储来处理其他字段查询的。
4、全局唯一ID:uuid、redis、snowflake,以及其他的分布式id生成框架。后续学习。
5、扩容问题:尽量使用 2 的倍数来设置表数量。当需要扩容时,也同样按照 2 的倍数来扩容,这种方式可以减少数据的迁移量。