注册 登录
编程论坛 SQL Server论坛

求助mysql存储大数据量一直增长问题

piqiuarm 发布于 2017-04-27 17:28, 2068 次点击
Hi,各位大侠

软件环境:MySql
数据库名称:BBS_WW (在mysql中创建数据库BBS_WW)

需求描述:
数据的存储形式是:数据将会一直存储数据到数据库BBS_WW,并且数据不会被定期删除和废掉。

需求分析:
数据不会被定期删除,会造成:
1.数据库中数据表中的数据只增不减,这样的后果会使数据表的操作变慢,影响效率;
2.数据库中数据表中的数据只增不减,等硬盘容量达到上限,就无法再继续存储数据;

请问这样的需求是否合理?



2 回复
#2
mywisdom882017-04-28 08:48
问题1,数据只增加不减少,时间长了,数据操作肯定会变慢。有的软件,在设计时,就会把某些在当前情况下,不能修改的数据,作为历史数据,存放在另外的1个数据库中,只提供以后查询。比如,把2年前的数据,定义为历史数据。。。
问题2,现在的硬盘容量不断增大,这个不成问题。

[此贴子已经被作者于2017-4-28 08:50编辑过]

#3
piqiuarm2017-04-28 09:24
回复 2楼 mywisdom88
你好, mywisdom88
非常感谢你的相助

问题1,数据只增加不减少,时间长了,数据操作肯定会变慢。有的软件,在设计时,就会把某些在当前情况下,不能修改的数据,作为历史数据,存放在另外的1个数据库中,只提供以后查询。比如,把2年前的数据,定义为历史数据。。。

1.“数据只增加不减少,时间长了,数据操作肯定会变慢。”
针对这个问题,我在数据库中使用了分表的设计,将分表的名称通过union命令到总表
这样查询的时候到分表查询,速度会快一些。
例如:总表 totaldb; 分表是 detable0,detable1.....
执行:ALTER TABLE totaldb ENGINE= MRG_MYISAM UNION=(detable0,detable1) INSERT_METHOD=LAST AUTO_INCREMENT=1

疑问:发现在UNION=(detable0,detable1.....)的时候,随着分表数量的增多,所有分表名称加起来的总长度占空间太大,
即使使用malloc来分配空间,也满足不了“(detable0,detable1.....)”字符串所占空间
这种分表方式合理吗?有没有其他更好的分表策略呢?

1