• 使用MyCat分表分库原理分析


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

    主从复制是MySQL自带的哈~

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

    使用MyCat分表分库原理分析

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

     

    比如:

    在查询 select * from user_info

    发送三个db请求

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

    转换成为:

    select * from db1.user_info

    select * from db2.user_info

    select * from db3.user_info

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

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

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

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

     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随机一条

  • 相关阅读:
    技术管理之路三、团队建设:怎么带队伍?
    技术管理之路五、管理沟通:管理的必修课!
    职场工作方法论:计划安排,时间管理的“四象限法则”
    职场工作方法论:目标管理SMART原则
    激励方法论1、马斯洛需求模型
    mybatis PageHelper 分页组件优化
    async 和 await
    spring cloud 负载均衡 平滑上下线
    vue 重新渲染组件
    spring cloud 超时整理
  • 原文地址:https://www.cnblogs.com/toov5/p/10332382.html
Copyright © 2020-2023  润新知