Shardingsphere01——分库分表
分库分表
背景:数据库数据量不可控、随着时间和业务发展,造成表里面数据越来越多,如果再去CRUD操作的时候,会造成性能问题。为了解决数据量过大而造成数据库性能降低的问题,采用分库分表的方案。
商品DB -> 商品表1 、 商品表2 、
商家DB -> 商家表1 、 商家表2 、
分库分表的方式
分科分表有两种方式:垂直拆分和水平拆分
- 垂直拆分:垂直分表和垂直分库
- 水平拆分:水平拆表和水平拆库
垂直拆分
- 垂直分表:操作数据库中某张表,把这张表中一部分字段数据存到一张新表里面,再把这张表另一部分字段数据存到另外一张表里面。比如
课程表
分为课程描述表
和课程基本信息表
。 - 垂直分库:把单一数据库按照业务进行划分,专库专表(比如课程数据库和订单数据库)
水平拆分
- 水平分表:课程信息表1,课程信息表2,课程信息表n。按照一定的规则,在不同表中存放一部分数据。
- 水平分库:根据id进行判断,如果id是偶数,就把新增到A库,如果id是奇数,就新增到B库。从而减少单库中的数据量。
小结
- 应用:
- 在数据库设计时考虑垂直分库和垂直分表
- 随着数据库数据量增加,不要马上考虑做水平切分,首先要考虑加缓存、做读写分离、使用索引等方式。如果这些方式不能根本解决问题了,再考虑做水平分库分表。
- 分库分表问题:
- 跨节点连接查询问题。不同数据库不同服务器=>分布式查询问题,包括分页、排序等问题。
- 多数据源管理问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-03-22 Java多线程——Thread的native底层实现