我要跟踪设备的运行情况,所以我有很多日志信息要写到本地磁盘上,之前我是将其放到一个文件中的,但是随着设备越来越多,设备的标签信息就变得非常的冗余,现在我一个日志文件1.5G+,大部分都是重复的标签信息,打都打不开了,我只能写了个解析工具去解析展示,但是依然很慢,于是我就想要按照每个设备单独给他们写一个日志文件,这样就可以大幅度降低日志的大小,但是我记得之前学习计算机的时候好像说过,磁盘IO的读写代价是很大的,之前我写文件是用FileStrem以流的形式顺序读写的,那么现在如果我分成1000个文件来回写文件,磁盘的不停的来回寻址肯定会消耗额外的资源,我自己写了段测试代码进行了测试判断,发现确实写多个文件要比写一个文件慢很多,但是有的时候10倍的差距,有的时候2倍的差距,有的时候又差不多(估摸着是异步的问题)。。。有没有大佬帮忙分析下啊
标签:
FileStrem应该也不是顺序的吧,底层文件的写入应该没有顺序这一说,而且FileStrem并不会立即写入磁盘的,先写入缓冲区的,寻道时间比你刷入大量数据的处理时间快多了
你自己拷贝小文件或者同时多个文件拷贝...这不都是明显的低于单文件的效能吗。磁盘是块设备,队列方式处理,每次处理要寻址,你那么搞明显降低进一步拉低速率。你可以按照尺寸拆文件,策略也可以多样,那么你可以内存缓存100MB(或者进一步分块,比如迅雷你能看到类似这个设置,就是这个意思)然后写文件...等等方式。
”每个设备单独给他们写一个日志文件“,这个方案也会随着时间文件会越来越大,
可以按每天一个文件这样写,比如每天按日期新建文件 ‘log_2021-01-08’ 这样所有设备一天的日志写入一个文件
如果日志很多,也可以按每小时一个文件
一天1.5G大小还好吧。挺小的。本地磁盘没问题,只是查看的时候可能要借助工具了
你把日记写道数据库不行吗?又方便看,又方便记录
可以按照固定大小分文件