最近遇到一个MySQL数据写入异常的问题, 由于之前踩过磁盘IO速度的坑, 所以这次也优先排查磁盘写入速度是否有问题, 废话少说, 上代码:
package main
import (
"os...SSD还是HDD, 都是1s不到, 这不符合预期, 想了一下, 应该是磁盘缓存的原因, 相当于并没有实际写入到磁盘,而是缓存在内存中
那么怎么办呢, 磁盘缓存肯定是有一个极限的, 可能几百M或者1/2G..., 不能再多了,这块没具体去研究, 想到这里就优化了一下测试方案, 改单次写入为持续写入, 修改后:
// 4M
for k:=0; k<4*1024;k++{
str...4G内容, 速度全程都是在 2-5ms/4M, 对磁盘写入速度的怀疑消除~~!...(str)
f.Sync()
它会要求系统立即将文件的缓存进行持久化,写入到磁盘…加上sync()之后测试, 结果也符合预期.