mycat分库分表原理分析

mycat分库分表原理分析

mycat是一个开源的分布式数据库系统,是一个实现了mysql协议的服务器,前端用户可以把它看作是一个数据库代理,用mysql客户端工具和命令行访问,而其后端可以用mysql原生协议与多个mysql服务器通信,也可以用jdbc协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为n个小表,存储在后端mysql服务器里或者其他数据库里。

Mycat可以实现 读写分离 分表分库

主从复制是MySQL自带的哈~

关于分片取模算法:  根据id进行取模  根据数据库集群的数量(或者说是表数量,mycat里面一个表对应一个库)

使用MyCat分表分库原理分析

Mycat中的路由结果是通过分片字段和分片方法来确定的,如果查询条件中有 id 字段的情况还好,查询将会落到某个具体的分片。如果查询没有分片的字段,会向所有的db都会查询一遍,让后封装结果级给客户端。

修改/mycat/conf/log4j2.xml日志级别为debug

比如:

在查询 

select * from user_info

发送三个db请求

如果是查询素有的情况下(不带条件)

转换成为:

select * from db1.user_infoselect * from db2.user_infoselect * from db3.user_info

最后把结果集给mycat进行封装 然后返回给客户端 

 

如果加个where id = 1  这样带条件的情况下  mycat会进行转换 1%3=1  在db2上!转换成 select * from db2.user_info where id = 1 如果查询的是分片的话,效率很高。发送一条就搞定

如果不是分片字段的话  会发送三条哦!效率很低

比如 where name = ‘jack’ 会发送三条 根据条件去每个数据库里面进行查询 返回结果

飞书多维表格 飞书多维表格

表格形态的AI工作流搭建工具,支持批量化的AI创作与分析任务,接入DeepSeek R1满血版

飞书多维表格 26 查看详情 飞书多维表格

 

tailf -200f mycat.log: 进行实时的查看

然后迅速的查询  一目了然

 

注意分页查询:

select * from user_info limit 0,2

到底是哪个数据分片的?

 往三个库里面发三个select请求  获取三对 六条结果

 随机抽取一对返回给客户端

 如果加了排序的条件呢?

 select * from user_info order by id  limit 0,2   (相当于取出最大的两条数据)

 先发送三个select 每个都是最大的两条 然后返回给mycat  进行综合评选拿出最大的俩 返回给客户端

  

 如果是  

 select * from user_info   limit 0,3

 每次请求返回的都是在改变的 是随机的!

 db1 取两条 db2 和 db3随机一条

 

以上就是mycat分库分表原理分析的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/366664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 05:35:51
下一篇 2025年11月6日 05:36:44

相关推荐

  • 关于mysql的mycat中间件安装与使用详解

    mycat是mysql中间件,前身是阿里大名鼎鼎的cobar,cobar在开源了一段时间后,不了了之。于是mycat扛起了这面大旗,在大数据时代,其重要性愈发彰显。这篇文章主要是mycat的入门部署。 一,什么是mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代…

    2025年12月2日
    000
  • Mycat读写分离在MySQL主从复制基础上实现的实例

    今天,给大家带来一篇mycat在mysql主从复制的基础上实现读写分离,这里大家需要注意的是mysql的主从复制是依赖的mysql自己的主从复制机制,mycat不负责mysql的主从复制,有关mysql的主从复制配置,大家可以参考博文《mysql之——主从复制的配置》,好了,我们接下来进入今天的主题…

    2025年12月2日 数据库
    000
  • mysql 中间件mycat安装与使用方法实例分享

    本文主要和大家分享mysql 中间件mycat安装与使用方法实例,mycat是mysql中间件,前身是阿里大名鼎鼎的cobar,cobar在开源了一段时间后,不了了之。于是mycat扛起了这面大旗,在大数据时代,其重要性愈发彰显。这篇文章主要是mycat的入门部署。 一,什么是mycat 一个彻底开…

    2025年11月26日
    000
  • 如何进行MyCat的配置

    schema.xml 涵盖了mycat的逻辑库、表、分片规则、分片节点及数据源。 行者AI 行者AI绘图创作,唤醒新的灵感,创造更多可能 100 查看详情 <!– –><!– –><!– –> <!– –> select user()&…

    2025年11月6日
    000
  • 你们要的MyCat实现MySQL分库分表来了

    ❝ 借助MyCat来实现MySQL的分库分表落地,没有实现过的,或者没了解过的可以看看 ❞ 前言 在之前写过一篇关于mysql分库分表的文章,那篇文章只是给大家提供了一个思路,但是回复下面有很多说是细节问题没有提到。所以咔咔就在出了这篇文章。 本文只是针对其中的一个细节而已,比如如何落地MySQL的…

    2025年11月6日 数据库
    000

发表回复

登录后才能评论
关注微信