分库分表(一)-- 基本概念
垂直分表:在同一个数据库中,将一个表按照字段分成多个表,每个表中存储一部分字段。
垂直分库:按照业务将表进行分类,分布到不同的数据库上面,每个库可以放到不同的服务器上它的核心思想是专库专用。
一般来说,在系统设计阶段就应该根据业务耦合松紧来确定垂直分库(如微服务架构根据业务一个服务一个数据库),垂直分表方案,在数据量及访问压力不是特别大的情况,首先考虑缓存、索引技术等方案。若数据量极大,且持续增长,再考虑水平分库、水平分表方案。
水平分库:把同一个表的数据按一定的规则拆到不同的数据库中,每个库可以放到不同的服务器中。一个库一般经验而言,最多支撑到2000并发 ,一定要扩容了,而且一个健康的单库并发值你最好保持在每秒 1000 左右,不要太大。那么你可以将一个库的数据拆分到多个库中,访问的时候就访问某一个库了。水平拆分的意义,就是将数据均匀放更多的库里,然后用多个库来扛更高的并发,还有就是用多个库的存储容量来进行扩容
水平分表:在同一个数据库,把同一个表的数据按一定的规则拆到多个表中,比如你单表都几千万数据了,你确定你能扛住么?绝对不行,单表数据量太大,会极大影响你的 sql 执行的性能,到了后面你的 sql 可能就跑的很慢了。一般来说,单表到几百万的时候,性能就会相对差一些了,你就得分表了。