Closed kekobin closed 4 years ago
大佬,想问下manager那里建表是基于什么考虑,设计了那么多张同结构的表呢? 1.process_x,x:01-31 2.osinfo_x,x:01-31 2.alarm_x,x:01-31
在process、osinfo、alarm表中各添加一个type去区分不行么?
XX 代表天数,因为数据库单表存储进程信息的话性能比较差(这部分数据量比较大),所以数据按天切割,而且这样可以定时清理整个表,默认保留 7 天数据
换言之,现在这套模型下,你可以通过修改配置最长保留 30 天内的数据,绝大部分情况下足够了
换言之,现在这套模型下,你可以通过修改配置最长保留 30 天内的数据,绝大部分情况下足够了
哦,看到做了定时去清理:
await this.logsQuery(`DELETE FROM ${table}`);
await this.logsQuery(`OPTIMIZE TABLE ${table}`);
按天建表感觉优点时比较清晰,操作简单。不过个人感觉如果dba有资源限制,也可以增加时间字段,根据时间的维度在单表中处理。
换言之,现在这套模型下,你可以通过修改配置最长保留 30 天内的数据,绝大部分情况下足够了
哦,看到做了定时去清理:
await this.logsQuery(`DELETE FROM ${table}`); await this.logsQuery(`OPTIMIZE TABLE ${table}`);
按天建表感觉优点时比较清晰,操作简单。不过个人感觉如果dba有资源限制,也可以增加时间字段,根据时间的维度在单表中处理。
单表清理数据量很大时候会影响写入。按天分割就没这个问题了
这里最佳的方案是 log 类用类似阿里云 table store 的方式存储,但是这里为了开发者部署简单,选用了只依赖 mysql 的方式。
换言之,现在这套模型下,你可以通过修改配置最长保留 30 天内的数据,绝大部分情况下足够了
哦,看到做了定时去清理:
await this.logsQuery(`DELETE FROM ${table}`); await this.logsQuery(`OPTIMIZE TABLE ${table}`);
按天建表感觉优点时比较清晰,操作简单。不过个人感觉如果dba有资源限制,也可以增加时间字段,根据时间的维度在单表中处理。
单表清理数据量很大时候会影响写入。按天分割就没这个问题了
也是,忘记考虑这种因素了。线上这类log的量还是挺大的,读写都很频繁。
大佬,想问下manager那里建表是基于什么考虑,设计了那么多张同结构的表呢?
1.process_x,x:01-31
2.osinfo_x,x:01-31
2.alarm_x,x:01-31
在process、osinfo、alarm表中各添加一个type去区分不行么?