分库分表的手段
垂直
分库:业务当中按功能模块、关系划分,部署到不同的库上
分表:大表拆小表,通过热点字段冷热程度划分
优点:
• 拆分后业务清晰,拆分规则明确;
• 系统之间整合或扩展容易;
• 数据维护简单。
缺点:
• 部分业务表无法 join,只能通过接口方式解决,提高了系统复杂度;
• 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高;
• 事务处理复杂。
由于垂直切分是按照业务的分类将表分散到不同的库,所以有些业务表会过于庞大,存在单库读写与存储瓶颈,所以就需要水平拆分来做解决。
水平
分库:单一个表数据量过大,就可以把表的数据按照规则来做划分,然后存到多个结构相同的表中
优点:
• 拆分规则抽象好,join 操作基本可以数据库做;
• 不存在单库大数据,高并发的性能瓶颈;
• 应用端改造较少;
• 提高了系统的稳定性跟负载能力。
缺点:
• 拆分规则难以抽象;
• 分片事务一致性难以解决;
• 数据多次扩展难度跟维护量极大;
• 跨库 join 性能较差
规则
事务的一致性://事务日志
CAP理论
分布式事务:事务补偿
最终一致性:消息中间件
跨节点的查询
全局表 ER分片 字段冗余
迁移的扩容
跨节点分页
Mycat中间件