Shardingsphere01——分库分表

分库分表

背景:数据库数据量不可控、随着时间和业务发展,造成表里面数据越来越多,如果再去CRUD操作的时候,会造成性能问题。为了解决数据量过大而造成数据库性能降低的问题,采用分库分表的方案。

 商品DB -> 商品表1 、 商品表2 、 
 商家DB -> 商家表1 、 商家表2

分库分表的方式

分科分表有两种方式:垂直拆分和水平拆分

  • 垂直拆分:垂直分表和垂直分库
  • 水平拆分:水平拆表和水平拆库

垂直拆分

  • 垂直分表:操作数据库中某张表,把这张表中一部分字段数据存到一张新表里面,再把这张表另一部分字段数据存到另外一张表里面。比如课程表分为课程描述表课程基本信息表
  • 垂直分库:把单一数据库按照业务进行划分,专库专表(比如课程数据库和订单数据库)

水平拆分

  • 水平分表:课程信息表1,课程信息表2,课程信息表n。按照一定的规则,在不同表中存放一部分数据。
  • 水平分库:根据id进行判断,如果id是偶数,就把新增到A库,如果id是奇数,就新增到B库。从而减少单库中的数据量。

小结

  • 应用:
    • 在数据库设计时考虑垂直分库和垂直分表
    • 随着数据库数据量增加,不要马上考虑做水平切分,首先要考虑加缓存、做读写分离、使用索引等方式。如果这些方式不能根本解决问题了,再考虑做水平分库分表。
  • 分库分表问题:
    • 跨节点连接查询问题。不同数据库不同服务器=>分布式查询问题,包括分页、排序等问题。
    • 多数据源管理问题。
posted @   SsoZh  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2020-03-22 Java多线程——Thread的native底层实现
点击右上角即可分享
微信分享提示