数据库存储一

磁盘上文件中的数据

磁盘可以分为易失性存储和非易失性存储,什么叫易失性存储,也就是供电完全断开时,数据不会持续存在,而非易失性存储是不需要稳定的能量就能持久存储的。 而数据库是永久性,组织性,共享性的。假如数据库管理性系统是面向磁盘的。这意味着,每次我们执行查询时,所要访问的数据都不在内存中。我们需要进入磁盘,并取得该数据
在这里插入图片描述
如图描述,Disk里面包含了数据库文件,我们通过不同的块或者页面来表示这些东西。 在内存中我们有一个成为buffer缓存池的东西,一些查询引擎之类的,去向buffer缓存池进行请求,并表示想要的page内容。当想要的page不在内存中,就要去磁盘上的page目录中进行查找,page目录中,我们有page列表,找到了page之后,放入内存,然后再交给执行引擎。–虚拟内存

如何管理内存以及硬盘间来回移动数据

内存映射文件

内存映射文件,本质上从磁盘上获取文件,然后告诉操作系统将文件页面映射到我的进程的地址空间,可以对这些内存地址进行读写,最终让操作系统写出,通过执行sync并将其写回到磁盘上,我们放弃了数据在内存以及硬盘上来回移动的控制权,而是让操作系统来帮我们管理这些。
在这里插入图片描述
在磁盘文件,我们有一些page,在内存中,操作系统有它自己的虚拟内存页面表以及物理内存,应用去表示要去读取page1,它就会去虚拟内存中进行查找,会出现缺页异常,将它取出来,并放到物理内存页面,然后更新我们的page表让它去指向该内存地址。当把物理存储满时,虚拟存储想要的page不在物理存储时,需要移除内存中的page,再重新移进想要的page页。虚拟内存通过mmap来映射到文件,无需自己控制,交给操作系统

如果将操作系统来操作,会存在一个问题?
如果操作系统并不知道某些page必须要在其他page之前先到内存刷到磁盘中
解决该问题的方法:

  1. madvise
  2. mlock
  3. msync
    虚拟内存中mmap听上去不错,实际上并没有多少系统使用mmap。数据库能比操作系统做得更好,对于数据的控制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值