mysql 分表平滑扩展_Mycat(5):聊天消息表数据库按月分表实践,平滑扩展

1,业务需求

比方一个社交软件,比方像腾讯的qq。能够进行群聊天(gid),也能够单人聊天。

数据量按月添加须要按月进行数据库拆分。

比方依照2015年进行12个月拆分,同一时候能够配合gid进行水平拆分,也能够利用mysql分区。

mycat官方也推荐这样使用。这样能够添加单机单数据库的数据量。由于文件分开了。

2,按月分表方案

首先将消息表拆分成12个月表。同一时候每个月表能够拆分成100个分区表。mysql分区运行起来灵活。按月分表能够随时间一直分下去,一次创建好一年的分表。基本上不须要数据迁移。

相比数据库的分区最大的优点就是能够跨多个数据库进行分区。能够做到吞吐量是单机的N倍。扩展性好。数据库能够是一个实体机器,也能够一个实体机器多个数据库,配置灵活。全然在mycat配置不须要client改动。

26831defc1a05b36567a79218a517da8.gif

mysql数据库创建语句:

CREATE TABLE `msg` (

`id` bigint(20) NOT NULL,

`gid` bigint(20) DEFAULT NULL COMMENT '群id。mysql分区字段',

`content` varchar(4000),

`create_time` datetime DEFAULT NULL COMMENT '创建时间',

`create_date` int(8) DEFAULT NULL COMMENT '按月分表字段。不能为空。',

PRIMARY KEY (`id`,`gid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8

PARTITION BY KEY(`gid`)

PARTITIONS 100;

当中规则xml的配置例如以下:依照自然月进行分区。分区字段是create_date

create_date

sharding-by-month

yyyyMMdd

20150101

schema.xml配置:

writeType="0" dbType="mysql" dbDriver="native">

select 1

说明:这里按自然月分区须要使用1.4的版本号。里面包含规则类。或者把这个类复制到1.3的jar里面也行。

4,总结

使用mycat能够大大提高数据库的存储能力,对于每月自然增长的数据,按月存储是最好的办法。同一时候每个组使用自己的id自增策略,都从1開始计算,这样在查询历史数据的适合也按月进行迭代查询,当然全部牵扯到查询的sql都要改动,改动成按月进行查询。把日期參数传入。

数据库的扩展性增强了,能够支持数据持续增长的业务了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值