各位大神好,小弟不才,遇到个需求如下:
目前有20000台仪器(将来会越来越多,可能达到60w),每个仪器平均每天会产生720条数据,要存储到mysql数据库中。那每天表中就会新增14400000条数据,这样要不了多久,这个表的查询就会特别慢,所以就做了分表处理,每台仪器对应一张表。现在单表的速度是提升了,但管理起来特别麻烦,首先workbench操作会特别卡特别慢,然后如果对表做字段变更的时候,就需要对20000张表做变更。这太疯狂了。所以想请教一下大神,我这样的情况该怎么处理呢
想不到什么好办法,就是调节表的数量和表中记录的数量,使其达到一个比较好的情况,比如mysql的瓶颈可能在100万,那就保证每个表最多放100万,然后根据这个数值见新表
这么多数据量只能分库分表方式处理 然后就是表设计的时候尽量注意扩展性。减少将来表发生修改
做分区表,按照日期,每天一张表。一张表1440万记录再考虑做优化查询。
尝试搭建一个10台机器的hadoop集群直接将数据放到hive里面。
综合上面的考虑就好:
1、根据需要,按照时间分区,小时或者天; 不要按照仪器分区,
2、使用NOSQL,数据放到HIVE里面处理。 使用定时器按需处理一定数据放到MYSQL用于业务处理。
按照你现在的情况来分析,大概想到以下几点吧:
1、管理工具尝试navicat看速度相比会不会好点;
2、按规则分库;
3、按规则分表;
4、查询:按规则查询指定设备的数据;写入、统一查询使用数据库中间件,如MyCat(可以定义mycat 分库分表规则,读写分离,主从热备);
5、集群部属自动化脚本/工具,对表做字段变更的话定制自动化变更同步脚本/工具;这个按理应该已经有人做了,搜索看看有没有类似的开源项目;
分库,根据数据进行分类,然后根据情况进行存取。
按时间分库是很好的选择。还可以试试看数据能不能优化和合并。最后就是换更好的服务器。