sharding sphere MySQL分库分表分享

分享/效率/工具/软件 专栏收录该内容
15 篇文章 0 订阅

sharding sphere MySQL分库分表分享

视频地址: https://www.bilibili.com/video/BV1zy4y1m7ZS/

目录:
分库分表是什么?
为什么需要分库分表?
如何制定分库分表方案?
实践demo演示

分库分表是什么?

单库单表 拆分为 N个库N个表

分为垂直拆分,水平拆分

什么是垂直拆分

按结构(表头/约束)拆分

垂直拆库

把单库中的不同业务的表, 拆分到不同库中

比如 原本单库的 用户表, 订单表
将用户表相关的表放到同一个库中 A库
将订单相关的表放到同一个库中 B库

垂直拆表

把表中的多个字段, 拆出来部分字段放到另一个表中

比如
A库B表的一行, 有 1 2 3 4 5 列
把 1 2 3 4 列 拆出来放到 A库C表中
B表剩下 1 5
C表 1 2 3 4, B表和C表以1这列为关联键

垂直拆分优点

  1. 业务系统解耦。
  2. 与微服务治理类似,便于集中管理,监控,扩展
  3. 高并发情况下提升IO,数据库连接数,单机硬件资源瓶颈

垂直拆分缺点

  1. 多表join
  2. 分布式事务处理复杂
  3. 单表数据总量无法解决(水平切分处理)

什么是水平拆分

按内容拆分

将1w行, 按照id的奇偶分成两个库, 奇数插入到A库的b表, 偶数插入到C库的b表
(b表的结构是一样的)
就是按照id的内容进行了拆分

水平拆分的优点

  1. 提高查询性能, 单表超过2kw,性能下降(如何举证?), 比如磁盘缓存, 控制变量, 两台相同实例的磁盘缓存比单台的实例的磁盘缓存要大, 命中缓存的比率会上升

水平拆分的缺点

  1. 实例增加, 成本增加
  2. 业务规则导致无法正确连表查询
  3. 分布式事务

sharding jdbc mybatis

优点:

  • 单表分库分表
  • 读写分离
  • 数据库的分布式事务

缺点:

  • 连表查询
  • 分页查询 归并引擎

为什么要分库分表?

  1. 单表数据量增大
  2. 单台服务器资源有限, 基于摩尔定律, 单个CPU的性能受限, 单台机器资源受限

如何定制分库分表方案

  1. 业务规则
  2. 直接使用分布式数据库(TiDB)

中间件选型

  • sharding-sphere
  • TDDL (淘宝半开源)
  • mycat

sharding-jdbc分表demo

分库是一样的, 这里只演示分表的demo
gitee: https://gitee.com/suveng/demo

环境说明

MySQL 5.7
Sharding-Sphere 4 (截止至 2021/1/4 sharding-sphere 5已经出了, 直接去apache官网可以搜到文档)

扩容问题

  1. 增加算法版本配置

看代码实现的思路

数据倾斜问题

  1. 一致性hash算法 + 权重配置

看代码实现的思路

todo

  • 读写分离特性问题探讨
  • 查询优化
  • sharding-proxy代理分享

注意点

  1. 读写分离
  • 没有事务时, 根据SQL去做读写分离
  • 有事务时, 一旦线程内使用了主库, 后续线程内的读写都是使用主库, 但是异步线程后就没有了这个限制了?
    • 怀疑: 和事务隔离级别有关系

资料

apache官网: https://shardingsphere.apache.org/index_zh.html

分库分表: https://zhuanlan.zhihu.com/p/99396275

Sharding-Sphere实战:实现类多租户分库分表

从中间件转向分布式数据库生态,Apache ShardingSphere 5.x 革新变旧 - 编辑部的故事的个人空间 - OSCHINA - 中文开源技术交流社区

【干货】MySQL 分库分表及其平滑扩容方案 - 云+社区 - 腾讯云

https://www.jianshu.com/p/658bc9151e7b

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p> <strong>课程目标</strong> </p> <p> 快速的掌握分库的实战,即插即用适用人群IT从业人员,开发人员,Java从业者,互联网从业者,性能调优人群课程简介 </p> <p> <span>ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈。</span> </p> <p> 它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成,shardingSphere定位为关系型数据库中间件。  </p> <p> </p><p> <span><strong>Sharding-JDBC</strong></span> </p> <p> Sharding-JDBC是Sharding-Sphere的第一个产品,也是Sharding-Sphere的前身,是当当网开源的一个产品。定位为轻量级的Java框架,在Java的JDBC层提供额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。他们均提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-JDBC可以通过Java,YAML,Spring命名空间和Spring Boot Starter四种方式配置,开发者可根据场景选择适合的配置方式。 </p> <p> <br /></p> <p> <span><strong>课程特色 </strong></span> </p> <p> <span>本章节以尽量短的时间,为使用者提供最简单的ShardingSphere的快速入门。</span><span></span> </p> <p> <span style="color:#323232;"><br /></span> </p> <p> <span style="color:#323232;"><strong>课程说明</strong></span> </p> <p> 该课程属于系列课程,分为读写分离,分库不分表,不分库分表分库分表,读写分离+分库分表共5个回合。 </p> <p> 本课程属于其中一个回合,请各位小哥哥们注意,课程的标题哦~ </p>
相关推荐
<p> ShardingSphere:SpringBoot2+MybatisPlus+读写分离+分库分表 </p> <p> <strong>课程目标</strong> </p> <p> 快速的掌握读写分离+分表的实战,即插即用适用人群IT从业人员,开发人员,Java从业者,互联网从业者,性能调优人群课程简介 </p><p> <span>ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈。</span> </p> <p>它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成,shardingSphere定位为关系型数据库中间件。  </p> <p> <span><strong>Sharding-JDBC</strong></span> </p> <p style="color:rgb(66,66,66);font-size:14px;background-color:rgb(255,255,255);">Sharding-JDBC是Sharding-Sphere的第一个产品,也是Sharding-Sphere的前身,是当当网开源的一个产品。定位为轻量级的Java框架,在Java的JDBC层提供额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。他们均提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-JDBC可以通过Java,YAML,Spring命名空间和Spring Boot Starter四种方式配置,开发者可根据场景选择适合的配置方式。 </p> <p style="color:rgb(66,66,66);font-size:14px;background-color:rgb(255,255,255);"><br /></p> <p> <span><strong>课程特色 </strong></span> </p> <p> <span>本章节以尽量短的时间,为使用者提供最简单的ShardingSphere的快速入门。</span><span></span> </p> <p style="color:rgb(66,66,66);font-size:14px;background-color:rgb(255,255,255);"><span style="color:#323232;"><br /></span> </p> <p style="color:rgb(66,66,66);font-size:14px;background-color:rgb(255,255,255);"><span style="color:#323232;"><strong>课程说明</strong></span> </p> <p style="color:rgb(66,66,66);font-size:14px;background-color:rgb(255,255,255);">该课程属于系列课程,分为读写分离,分库不分表,不分库分表分库分表,读写分离+分库分表共5个回合。 </p> <p style="color:rgb(66,66,66);font-size:14px;background-color:rgb(255,255,255);">本课程属于其中一个回合,请各位小哥哥们注意,课程的标题哦~ </p>
<p style="font-size:14px;color:#333333;"> <span style="font-size:16px;"><strong><span style="color:#000000;">课程简介</span></strong></span><span style="color:#000000;"><br /> </span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库分表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库分表技术。</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><br /> </span> </p> <p style="font-size:14px;color:#333333;"> <span style="font-size:16px;"><strong><span style="color:#000000;">课程价值</span></strong></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">分库分表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库分表技术的解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;"><br /> </span> </p> <p style="font-size:14px;color:#333333;"> <span style="font-size:16px;"><strong><span style="color:#000000;">课程优势</span></strong></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题。</span> </p> <div> <br /> </div>
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值