MySQL-mysql 处理大量数据
做了个后台系统,之前图方便将所有的日志都扔到数据库里
time,id,parameter1,parameter2,....
这种格式
一张表放
CREATE TABLE log
(id
bigint(20) NOT NULL AUTO_INCREMENT,logid
int(11) NOT NULL,time
bigint(20) NOT NULL}
另外一张表
CREATE TABLE logparam
(id
bigint(20) NOT NULL,--对应log的logidposition
int(11) NOT NULL,pvale
varchar(300) DEFAULT NULL}
这样处理之后一条日志在logparam里面就要存和parameter数量一样数量的条数的数据了
因为数据量本身就大(300W/天),所以插入到库里之后进行连接查询的时候特别慢
还有优化的余地么?求解答呀~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
优化join的方法就是不要join,合成一张表。如果每次用的时候都要join的话,分开存有何意义?
其次是为主键添加索引
设计增量式的统计算法吧,而且你每次操作如果都要操作数据库记录日志的话,本身记录也是很慢的,我是放在队列里做的,这样成异步的了,提升挺显著的
其实数据量大,可以根据你的id来做一下partition的,每天定时运行一个脚本来维护分区,同时再加一下索引,访问速度可以提升很多的
最简单的方式,按照天进行分表,你在每天的凌晨在插入表的时候建立一张新表,这样每张表的数据都保持在300W,查询就不会慢,存储引擎选择InnoDB。
如果是用于统计,可以分时间段进行统计,之前统计的数据存储在临时表中,每次查询只需要对最近的进行统计,然后合并展示
处理这么大的数据量……
用mysql集群吧