mysql分表分区方案实测:MyISAM引擎分表 or mysql表分区

如题,两种数据分割方案哪种更好呢?关于这两种分割方案的基本概念请参照官方文档,我们这里只做方案性能测试:


1.创建表(这里有个无效的冗余索引user_id,历史因素这里先不管,两个表都有):

CREATE TABLE `rank_access_log_range` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL,
  `model_name` varchar(30) NOT NULL COMMENT '访问模块',
  `channel` varchar(20) DEFAULT NULL COMMENT '渠道',
  `channel_keywords` varchar(560) DEFAULT NULL COMMENT '渠道搜索关键字',
  `refer_id` varchar(64) DEFAULT NULL,
  `ip` varchar(128) DEFAULT NULL,
  `begin_time` datetime NOT NULL COMMENT '开始运行时间',
  `run_time` int(11) NOT NULL COMMENT '运行时间',
  `http_status` smallint(6) DEFAULT NULL COMMENT 'http错误码',
  `error_code` varchar(20) DEFAULT NULL COMMENT '业务错误码',
  `error_msg` json DEFAULT NULL,
  `request_params` varchar(500) DEFAULT NULL COMMENT '请求参数',
  PRIMARY KEY (`id`,`begin_time`),
  KEY `begin_time` (`begin_time`) USING BTREE,
  KEY `rank_access_log_user_id_index` (`user_id`) USING BTREE,
  KEY `ix_user_id_model_name` (`user_id`,`model_name`) USING BTREE,
  KEY `ix_channel_refer_id` (`channel`,`refer_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13320661 DEFAULT CHARSET=utf8 COMMENT='访问日志'
/*!50500 PARTITION BY RANGE  COLUMNS(begin_time)
(PARTITION p201604 VALUES LESS THAN ('2016-05-01') ENGINE = InnoDB,
 PARTITION p201605 VALUES LESS THAN ('2016-06-01') ENGINE = InnoDB,
 PARTITION p201606 VALUES LESS THAN ('2016-07-01') ENGINE = InnoD

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值