首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于COW (复制即写)的原子提交在主流数据库中广泛使用吗?

基于COW (复制即写)的原子提交在主流数据库中广泛使用吗?
EN

Database Administration用户
提问于 2021-08-26 02:21:25
回答 1查看 130关注 0票数 0

数据库不是像文件系统那样的平面结构,通常有三到四个级别的索引级别。如果您只使用COW,那么每次修改叶节点时都会有明显的写放大。

主流数据库是如何使用牛的?在何种情况下将使用牛?牛的书写放大有优化吗?

EN

回答 1

Database Administration用户

发布于 2021-08-26 06:43:37

根据我的经验,OS是在操作系统级别完成的。数据库(至少MySQL)不知道也不关心它。

奶牛的一种用途是通过LVM。当您获取磁盘(整个分区)的“快照”时,它开始使用COW有效地拥有整个磁盘的两个副本。第二个拷贝会随着块的修改而增长,所以明智的做法是从驱动器上复制副本,并迅速摆脱额外的音量。

是的,数据库给磁盘写了很多东西。另一方面,由于磁盘I/O通常是最耗时的任务,因此数据库引擎努力避免执行额外的写操作。这可以包括通过在基于RAM的缓存中保存内容来延迟写操作,只要实际情况如此。

另一方面,数据库引擎将不得不做额外的写,以确保"ACID“。在某种程度上,这需要将所有内容写入磁盘两次。(当然,它避免了真正做2倍的工作。

牛每个街区只踢一次。快照结束后,有两组指针指向所有文件中的所有块。当一个块被修改时,奶牛会启动并复制该块,从而更改其中一个指针。在此之后,将不再复制该块。同时,数据库认为它正在更新分配给它的磁盘上的一个特定块。数据库忽略了另一个磁盘卷。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/298577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档