前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sharding sphere MySQL分库分表分享

sharding sphere MySQL分库分表分享

作者头像
suveng
发布2021-01-21 10:48:11
1.3K0
发布2021-01-21 10:48:11
举报

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sharding sphere MySQL分库分表分享
    • 分库分表是什么?
      • 什么是垂直拆分
        • 垂直拆库
        • 垂直拆表
        • 垂直拆分优点
        • 垂直拆分缺点
      • 什么是水平拆分
        • 水平拆分的优点
        • 水平拆分的缺点
      • sharding jdbc mybatis
        • 为什么要分库分表?
          • 如何定制分库分表方案
            • 中间件选型
              • sharding-jdbc分表demo
                • 环境说明
              • 扩容问题
                • 数据倾斜问题
                  • todo
                    • 注意点
                      • 资料
                      相关产品与服务
                      云数据库 SQL Server
                      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档