笔记来源: Java工程师面试突击专栏
https://apppukyptrl1086.pc.xiaoe-tech.com/detail/p_5d3114935b4d7_CEcL8yMS/6
为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?
用过哪些分库分表中间件?
不同的分库分表中间件都有什么优点和缺点?
你们具体是如何对数据库如何进行垂直拆分或水平拆分的?
高并发系统单库单表是扛不住的.
单表几百万数据最多了.
为什么要分库分表
分库分表是两个概念. 可能只分库不分表.
可能只分表不分库.
模拟的项目的演进:
刚开始用户量较少, qps 可能就几十个请求.
之后产品获得爆发式增长, 用户量到达2000万, 单表数据量每天新增已经达到了10万条.
单个库每秒并发稳定在1000左右较为合适, 不要超过2000.
之后公司再次获得融资, 用户量达到一亿, 活跃用户达到上千万, 单表新增数据上千万条数据.
高峰期每秒8k请求. 中间可能用个mq , 用于流量消峰.
高峰后, mq积压了很多消息, 要一两个小时才能消费完 .
此时系统的问题 :
- 部署的MySQL单机, 扛不住高并发
- MySQL单机磁盘容量快满了
- MySQL单表数据量太大了, sql越跑越慢.
