mysql数据分片理论知识

数据分片  50 51 52 53 

如何解决并发访问压力?

如何解决单表过大的问题?

 

什么是分库分表

 

– 通过某种特定条件,将存放在一个数据库 ( 主机 ) 中的

数据,分散存放到多个数据库 ( 主机 ) 中。

– 已达到分散单台设备负载的效果,即分库分表

– 数据的切分根据其切分规则的类型,分为 2 种切分模

– 垂直分割 ( 纵向 ) 和 水平分割 ( 横向 )

 

垂直分割

• 纵向切分

 

– 把单一的表,拆分成多个表,并分散到不同的数据库

( 主机 ) 上。

– 一个数据库由多个表构成,每个表对应不同的业务,

可以按照业务对表进行分类,将其分布到不同的数据

库 ( 主机 ) 上,实现专库专用,让不同的库 ( 主机 ) 分

担不同的业务。

 

水平分割

• 横向切分

 

– 按照表中某个字段的某种规则,把向表中写入的记录

分散到多个库 ( 主机 ) 中。

– 简单来说,就是按照数据行切分,将表中的某些行存

储到指定的数据库 ( 主机 ) 中。

 

 

软件介绍

• Mycat 是基于 Java 的分布式数据库系统中间层,为

高并发下的分布式提供解决方案

 

– 支持 JDBC 形式连接

– 支持 MySQL 、 Oracle 、 Sqlserver 、 Mongodb 等

– 提供数据读写分离服务

– 可以实现数据库服务器的高可用

– 提供数据分片服务

– 基于阿里巴巴 Cobar 进行研发的开源软件

– 适合数据大量写入数据的存储需求

 

分片规则

• mycat 服务提供 10 种分片规则。

– 1 枚举法 sharding-by-intfile

– 2 固定分片 rule1

– 3 范围约定 auto-sharding-long

– 4 求模法 mod-long

– 5 日期列分区法 sharding-by-date

– 6 通配取模 sharding-by-pattern

– 7ASCII 码求模通配 sharding-by-prefixpattern

– 8 编程指定 sharding-by-substring

– 9 字符串拆分 hash 解析 sharding-by-stringhash

– 10 一致性 hash sharding-by-murmur

 

工作过程 ( 续 1)

• 当 Mycat 收到一个 SQL 时

– 会先解析这个 SQL 查找涉及到的表,然后看此表的定

– 如果有分片规则,则获取到 SQL 里分片字段的值,并

匹配分片函数,得到该 QL 对应的分片列表

– 然后将 SQL 发往这些分片去执行,最后收集和处理所

有分片返回的结果数据,并输出到客户端

以 select * from Orders where prov=? 语句为例,查到 prov=wuhan ,

按照分片函数, wuhan 返回 dn1 ,于是 SQL 就发给了 MySQL1 ,去

取 DB1 上的查询结果,并返回给用户。

如果上述 SQL 改为 elect * from Orders where prov in

(‘wuhan’,‘beijing’) ,那么, SQL 就会发给 ySQL1 与 MySQL2 去执行,

然后结果集合并后输出给用户。但通常业务中我们的 SQL 会有 Order

By 以及 Limit 翻页语法,此时就涉及到结果集在 Mycat 端的二次处

理。配置 mycat

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值