文件中如果我要修改某一个字段,貌似我记得修改文件中间某一行的值需要重写整个文件,因为文件只能追加写,无法中间插入吧,Mysql这块是怎么优化的呢,采用什么策略,也是重写整个文件嘛
2 回答
ITMISS
TA贡献1871条经验 获得超8个赞
一个数据库几个GB甚至几百GB、更大的几个TB以上,重写整个数据文件要多大的IO速度?
“修改文件中间某一行的值” 可能只是更新数据文件里面的一小块数据而已。
可能是利用 文件随机读写 的方式实现的,在磁盘上的数据都是有结构的(比如说数据表有数据表的结构、每一个列、行都有固定的大小),首先先计算好要更新的数据块的偏移地址和数据块的大小,然后通过 seek 移动指针 和 write 实现覆盖更新文件的数据。
- 2 回答
- 0 关注
- 568 浏览
添加回答
举报
0/150
提交
取消