数据库底层存续还是通过文件,那修改字段值,映射到文件是怎么操作的?

文件中如果我要修改某一个字段,貌似我记得修改文件中间某一行的值需要重写整个文件,因为文件只能追加写,无法中间插入吧,Mysql这块是怎么优化的呢,采用什么策略,也是重写整个文件嘛


翻阅古今
浏览 569回答 2
2回答

ITMISS

一个数据库几个GB甚至几百GB、更大的几个TB以上,重写整个数据文件要多大的IO速度?“修改文件中间某一行的值” 可能只是更新数据文件里面的一小块数据而已。可能是利用 文件随机读写 的方式实现的,在磁盘上的数据都是有结构的(比如说数据表有数据表的结构、每一个列、行都有固定的大小),首先先计算好要更新的数据块的偏移地址和数据块的大小,然后通过 seek 移动指针 和 write 实现覆盖更新文件的数据。

慕桂英3389331

数据存储除了文件,还有裸设备、Oracle ASM等等。具体可以看各家的文档,有结构的基本说明。不过更深就是人家的独家秘方了。
打开App,查看更多内容
随时随地看视频慕课网APP