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

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