当前位置 博文首页 > 高远的博客:mycat操作笔记

    高远的博客:mycat操作笔记

    作者:[db:作者] 时间:2021-09-06 22:43

    mycat+mysql+jdbc实现根据手机号尾号分库分表存储以及效率对比

    关键字

    • 手机号分割
    • mycat
    • 水平分库分表
    • 大数据

    测试环境

    • jdk1.7+mysql5.5+mycat1.5+myeclise10.7

    建表建库

    • 建立四个数据库 A组:db1、db2、db3;B组:db;
    • 前三个属于mycat操作的数据库,db属于对于的不同数据库。
    • 在上述数据库中均创建user表,包括id、name、password、phone、post(手机尾号);

    需求

    1. 插入20条数据,根据手机尾号,尾号为0、1、2的存入到db1;3、4、5存入到db2;其它存入到db3; db存入所有手机号。
    2. 插入20条数据,结果要求:1:对比A组和B组插入时间效率。
    3. 在A组和B组插入100w条数据,对比效率。
    4. 分根据分区字段查询中间数据,对比查询效率。
    5. 不根据分区字段查:查询中间数据,对比查询效率。
    6. 根据分区字段和不是分区字段一起查,查看效率。

    sql

    • sql

      SET FOREIGN_KEY_CHECKS=0;
      
      -- ----------------------------
      -- Table structure for `user`
      -- ----------------------------
      DROP TABLE IF EXISTS `user`;
      CREATE TABLE `user` (
        `id` varchar(255) NOT NULL,
        `name` varchar(255) DEFAULT NULL,
        `password` varchar(255) DEFAULT NULL,
        `phone` varchar(255) DEFAULT NULL,
        `post` varchar(255) DEFAULT NULL,
        PRIMARY KEY (`id`),
        KEY `id` (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      
      -- ----------------------------
      -- Records of user
      -- ----------------------------
      

    测试结果

    1. 分区成功;
    2. 20条数据:A组:总时长:826ms;B组:总时长:556ms;

      • 插入20w条时间:A组:总时长:1231524ms;B组:直接崩溃,错误原因:MESSAGE: No buffer space available (maximum connections reached?): connect
      • 插入2w条时间:A组:总时长:总时长:116931ms;B组:总时长:105410ms
    3. 2w条数据查询中间数据:A组:总时长:273ms;B组:总时长:258ms[注:查询是根据id查询的,分区字段是post]

    4. 2w条数据查询中间数据:A组:总时长:总时长:269;B组:总时长:503ms[注:查询是根据post查询的,分区字段是post]

    5. 2w条数据查询中间数据:A组:总时长:264ms; B组:总时长:总时长:280ms[注:查询是根据post和手机号查询的,分区字段是post]

    操作代码【已测试成功】

    http://download.csdn.net/detail/wgyscsf/9620006

    cs