请教大家数据库分表解决方案

忠平 发布于 2012/03/09 11:25
阅读 3K+
收藏 2

各位OSChina的兄弟姐妹,大家好:

现在小弟在开发中遇到这样个需求,请大家给点建议;

环境:Jdk1.6 +MySql5.0   框架:ofbiz

背景:现在MySql数据库中有一张日志表,这张表会频繁的进行读写操作;每天会产生2~3W条数据,每个月下来数据量会很大,一年下来单表数据量更是庞大,查询速度极其缓慢,严重影响系统性能;

现在要我重新对表进行分表和优化,感觉压力很大,先介绍下需求吧;

需求:1;每日一张表,当天数据写入当天表(按天分表);

          2;日志报表可以按天查询、按月查询、甚至按年查询,要求查询速度相当快;

          3;系统是客户自己维护,没有SQL知识之类的,简单的开服务关服务,意味着我们发布软件包的时候必须一次性把准备工作做好,包括一些初始脚本;

现在我做了这样的实验:

预先建立了一年的表(以日期为后缀的表名)实现了数据的按日期写入,并用MySql的MERGE引擎建立了一个这样的合并表用于查询数据,这样就对于程序改动较少,但是这样我个人觉得是太不灵活,而且不利于维护,对表分区也尝试过但也被否决了,需求坚持要按天分表!

小弟不是专业DBA,所以在这方面比较愚钝,请教大家还有一些什么好的方案或建议,不胜感激!

加载中
0
忠平
忠平
欢迎大家踊跃发言啊
0
匿名t3a
匿名t3a
查询会很复杂吗?还有单字段数据量有多大?
0
忠平
忠平
枯木,你好,查询不是很复杂,只是按照多条件和日期来进行查询,但是查询出来的结果需要做一个计算,单字段比较大,而且还是用的MySql的LONGBLOB大字段类型,谢谢!
0
鉴客
鉴客

一天2~3万,一年700万的数据,我觉得按年来分表就可以了。

做好索引来提升性能,实在够呛再按月分表

0
kakala
kakala
数量那么少?也难?根本不是问题
0
忠平
忠平
鉴客大哥好:我也想按月按年分表,需求非得按日分,需求搞死人啊
忠平
忠平
@ZhiWei : 提了建议,回复是每月数据量还是太多,还得按日分。
雷志伟
雷志伟
作为开发人员, 你应该也有提建议的权限吧.
0
忠平
忠平

引用来自“kakala”的答案

数量那么少?也难?根本不是问题
kakala,你好,能详细指点下一个思路么?谢谢你
kakala
kakala
哪找月份分或者每天分表,都可以,甚至不分也可以,数据太少了,几年下来都没什么数据,当然按月按天来分维护起来容易些。 问题的关键是,做好查询索引,这么小的数据,读取速度不是问题 不知道什么是索引的话,去查查相关的资料吧
0
匿名t3a
匿名t3a
单字段数据比较大的话 应该把大字段分出一个或N个表 经常查询或者用到的小字段一个表 这样可以把 经常查询的表按年分表 大数据表 看情况 大概多少条分成一个表就样就应该挺快了
0
飞晏
飞晏

2、3万数据查询就很慢了,Access笑了...

按年查询并行365张表坑爹呢

http://www.oschina.net/p/shard-query

mrg肯定会有很多不可预期的问题,不如drop。

我觉得,既然这麽不关心数据库,那就按年新建一个日志表,使用触发器ON INSERT把分表的内容复制过来。

关注这么坑爹的需求...

0
忠平
忠平

引用来自“飞晏”的答案

2、3万数据查询就很慢了,Access笑了...

按年查询并行365张表坑爹呢

http://www.oschina.net/p/shard-query

mrg肯定会有很多不可预期的问题,不如drop。

我觉得,既然这麽不关心数据库,那就按年新建一个日志表,使用触发器ON INSERT把分表的内容复制过来。

关注这么坑爹的需求...

是的,我个人觉得按月分表,一个月下来数据最多也就那么百来W条数据,做下索引后MySql还是速度应该还是顶得住的,怎么说也好过现在库中单表好几个G的数据量吧
返回顶部
顶部