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

MySQL 分库分表的方式

作者头像
付威
发布2021-01-28 12:12:14
1.8K0
发布2021-01-28 12:12:14
举报

对于分库分表来说,具体有两种方式:垂直拆分和水平拆分。 垂直拆分主要是业务的细化和独立,和业务联系比较密切。所以本文只讨论更通用的水平拆分。

为什么分库分表
  1. 降低单机 MySQL 的性能
  2. 降低单表或者单库的数据量,减少数据库的查询压力
  3. 突破单机的容量限制 分库分表的方式
  4. 范围区分(range):按月\按区\按其他的等特殊的属性维度进行分片
  5. 预定义范围:预估有多少数据的容量,对数据进行范围的分配,0-100->A 101-200->B
  6. 取模 Hash:对指定的字段进行取模运算,匹配对应的库和表。
分库分表带来的问题
  1. 数据的维护成本高
  2. 跨库的业务join
  3. 分布式事务的性能低下
  4. 自增 id 的生成问题
  5. 非分片字段查询的轮询的浪费
  6. 多节点排序问题
分库分表的中间件

对于分库分表的中间件有很多,Shardingsphere,Tddl,MyCat,cobar。从架构上分,主要分为两种:JDBC应用方式Proxy模式

JDBC应用模式是基于客户端的分片,有客户端根据Sql和规则,决定具体执行的 sql 的服务器。代表有Shardingsphere,Tddl

image-20200919120019296
image-20200919120019296

JDBC应用模式 优点:

  1. 性能好
  2. 支持跨数据库(mysql oralce mssq)

缺点:

  1. 不能跨语言
  2. 对开发不够友好,增加开发难度

Proxy模式 代理模式是基于 MySQL 做一层转发代理,有代理根据规则来分发具体的SQL 到服务器上。

image-20200919120231986
image-20200919120231986

优点:

  1. 跨语言
  2. 开发无感知

缺点:

  1. 性能比较差,增加了网络请求
  2. 不支持跨数据库
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-182,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么分库分表
  • 分库分表带来的问题
  • 分库分表的中间件
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档