分库分表
当数据量非常大时,就需要通过分库分表的方式进行压力分摊,避免数据库访问压力过大
分库分表的前提:
业务数据达到一定量级:单表数据量达到1000w或20g
优化解决不了性能问题
分库分表策略
垂直拆分
垂直分库
以表为依据,根据业务将不同表拆分到不同库中
eg:根据微服务拆分数据库成多个数据库
按照业务对数据进行分级管理
在高并发下提高磁盘的IO和数据库连接数
垂直分表
以字段为依据,根据字段属性将不同字段拆分到不同表中
拆分规则:
将大文本的字段或者是不常用的字段拆出来单独成为一个表
冷热数据分离
减少IO的过度争抢,两个表不会互相影响
水平拆分
水平分库
将一个库的数据分到多个库中(表相同,但数据不同)
查询数据时根据数据路由
路由规则:
根据id节点取模
或按照id的范围进行路由
解决了单库大数量,高并发的问题
提高了系统的稳定性和可用性
水平分表
将一个表的数据拆到多个表中(可以在同一个库内)
查询数据时根据数据路由