mycat操作笔记

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章