最近遇到一个MySQL数据写入异常的问题, 由于之前踩过磁盘IO速度的坑, 所以这次也优先排查磁盘写入速度是否有问题, 废话少说, 上代码:
package main
import (
"os..., 相当于并没有实际写入到磁盘,而是缓存在内存中
那么怎么办呢, 磁盘缓存肯定是有一个极限的, 可能几百M或者1/2G, 不能再多了,这块没具体去研究, 想到这里就优化了一下测试方案, 改单次写入为持续写入..., 对磁盘写入速度的怀疑消除~~!...写完这篇文章后, 留着一个关于系统磁盘缓存的问题, 网上查了一下, 发现其实我的第一段测试代码有一个比较好的优化方案, 只需要调用os.File.Sync()就可以了, 如下:
f.WriteString...(str)
f.Sync()
它会要求系统立即将文件的缓存进行持久化,写入到磁盘…加上sync()之后测试, 结果也符合预期.