分库、分表
分库分表技术通过水平切分和纵向切分来提升数据库性能。分库将数据按业务拆分到不同库中,实现数据隔离和资源优化;分表则拆分表字段,但需避免跨表查询。实施前需设计路由机制(范围或Hash)和结果拼接方案。分布式ID生成要满足全局唯一、高性能等要求,可采用UUID、自增ID等方式。该技术能提高检索效率,区分核心业务数据,但需注意存储压力和查询优化。
·
名词
分库,一个数据库内容拆分到不同的数据库中
分表,将表字段分开,形成二个及以上的表
水平切分:
纵向切分:
读写分离并不缓解存储压力
作用
业务
不同业务子系统,可以使用不同的数据库
性能
检索效率提高
数据隔离
核心业务和非核心的业务数据区分开,让核心业务的投入资源更多。
分表,尽量不要造成跨表查询
分库分表开始前,首先考虑路由和拼接
路由:讲数据查询请求准确导向到目标的分库和分表的机制
拼接:将分散到不同库表的数据重新组合成完整结果集。
常用方法:通过范围、Hash
范围:根据字段大小、业务场景动态调整,无固定值
根据Hash分:
分布式id问题:(UUID,自增ID,批量生成ID,Redis生成ID,雪花算法,uidGenerator,leaf)全局唯一,高性能,高可用,好接入
拆分维度问题
join问题
阿里禁止三张表以上进行join
事务问题
XA
成本问题,资源成本,人力成本
预估一年半的数据量
表分区
将表分为几个文件存储,
1.对外还是一个逻辑表
2.将不同的分区文件放到不同的磁盘上
range,list,hash,key
做分区要结合查询规则。分区的条件,放到where语句中
更多推荐

所有评论(0)