专栏首页云计算与大数据数据库|基于内存的持久性

数据库|基于内存的持久性

内存数据库系统在磁盘上维护备份,以提供持久性并防止易失性。有些数据库只在内存中存储数据,没有任何持久性保证。

数据库在认定操作完成之前,必须先将其结果写入一个顺序日志文件。为了避免在启动过程中或奔溃后重放完整的日志内容,内存数据库维护了一个备份副本。该备份副本使用一个基于磁盘且已排序的数据结构。并且对该结构的修改通常是异步(与客户端请求解耦)且分批处理的。这样可以减少I/O操作数量。在恢复过程中,数据库可以从备份和日志还原数据库内容

日志数据通常用于批量备份,在处理该批日志数据之后,备份将持有截止到这一特定时间点的数据库快照。因此可以丢弃之前的日志内容。这个过程称为生成检查点(checkpointing). 它会更新磁盘上点数据库快照使其更接近最新的日志条目,从而缩短恢复时间,且备份过程不会阻塞客户端请求。

使用页缓存在内存里,序列化格式和数据布局也会使磁盘数据库产生额外的开销,而不会达到与内存数据库相同的优化程序

pagecache

Page Cache的机制如上图所示,具体来说,当应用程序读文件时,系统先检查读取的文件页是否在缓存中;如果在,直接读出即可;如果不在,就将其从磁盘中读入缓存,再读出。此时如果内存有足够的内存空间,该页可以在page cache中驻留,其他进程再访问该部分数据时,就不需要访问磁盘了。

同样,在写文件之前,系统先检查对应的页是否已经在缓存中;如果在,就直接将数据写入page cache,使其成为脏页(drity page)等待刷盘;如果不在,就在缓存中新增一个页面并写入数据(这一页面也是脏页)。真正的磁盘I/O会由操作系统调用fsync等方法来实现,这一调用可以是异步的,保证磁盘I/O不影响文件读写的效率。

dirty_background_ratio
// 触发文件系统异步刷脏的脏页占总可用内存的最高百分比,当脏页占总可用内存的比例超过该值,后台回写进程被触发进行异步刷脏。

dirty_ratio
// 触发文件系统同步刷脏的脏页占总可用内存的最高百分比,当脏页占总可用内存的比例超过该值,生成新的写文件操作的进程会先执行刷脏。

dirty_background_bytes & dirty_bytes
// 上述两种刷脏条件还可通过设置最高字节数而非比例触发。如果设置bytes版本,则ratio版本将变为0,反之亦然。

dirty_expire_centisecs
// 这个参数指定了脏页多长时间后会被周期性刷脏。下次周期性刷脏时,脏页存活时间超过该值的页面都将被刷入磁盘。

dirty_writeback_centisecs 
// 这个参数指定了多长时间唤醒一次刷脏进程,检查缓存并刷下所有可以刷脏的页面。该参数设为零内核会暂停周期性刷脏。

分布式|如何通过事务消息保障抢购业务的分布式一致性?

数据库|京东智联云新一代分布式数据库TiDB架构揭秘

http://mysql.taobao.org/monthly/2020/09/01/

https://lwn.net/ml/linux-fsdevel/20191210162454.8608-1-axboe@kernel.dk/

https://web.cs.iastate.edu/~prabhu/Tutorial/title.html

http://www.howardhuang.us/teaching/cs232/24-Cache-writes-and-examples.pdf

https://man7.org/tlpi/code/online/dist/filebuff/direct_read.c.html

https://linux.die.net/man/2/open

本文分享自微信公众号 - 黑洞日志(heidcloud),作者:砥砺前行不负韶华

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-02-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 持久性内存将颠覆数据库

    我在1999年开始上大学,那一年我学习SQL。我还记得设想在一台服务器上开发一个小小的应用程序,一行SQL触发了一连串惊人的操作。这种查询语言向磁盘控制器发出了...

    matinal
  • Oracle 20c 新特性:持久化内存数据库 - Persistent Memory Database

    导读:随着硬件技术的不断进步,PMEM (Persistent Memory)已经足够成熟,开始进入到数据库加速领域,在 DRAM 和 Flash 之间提供能更...

    数据和云
  • 一个基于平组合的不易失性内存持久堆栈(cs.DC)

    扁平组合(FC)是一种同步范式,在这种范式中,一个持有全局锁的线程收集多个线程的请求,以访问并发的数据结构,并将它们的组合请求应用于该数据结构。尽管FC是顺序的...

    用户8078797
  • 老司机出品——数据持久化之基于FMDB的ORM数据库设计

    这次呢,我们来说说iOS中数据持久化的几种方案。说到iOS中的数据存储,无非有4中方式:

    老司机Wicky
  • Flutter持久化存储之数据库存储(sqflite)详解

    数据库存储是我们常用的存储方式之一,对大批量数据有增、删、改、查操作需求时,我们就会想到使用数据库,Flutter中提供了一个sqflite插件供我们用于大量数...

    砸漏
  • 持久内存上的数据结构原语:评估(Emerging Technologies)

    持久内存(PM),如已经可用的Intel Optane DC持久内存,代表了一个非常有前景的,下一代的内存解决方案,其也对数据库结构有很大的影响。这种新技术的数...

    用户6869393
  • 持久内存+RDMA让远程数据不再远-总结

    第一届「中国云计算基础架构开发者大会」(以下简称 CID)将在 2020 年 10 月 25 日举办。会中看到有新硬件PM结合RDMA的议题,这是数据库方面前沿...

    yzsDBA
  • Mesos:数据库使用的持久化卷

    直到最近,Mesos都仅仅能够运行无须向磁盘存储数据的服务。这是因为没有方法预留所需的磁盘块。从Mesos 0.23版本开始,可以预留磁盘了。

    博文视点Broadview
  • PHP中的数据库连接持久化

    数据库的优化是我们做web开发的重中之重,甚至很多情况下其实我们是在面向数据库编程。当然,用户的一切操作、行为都是以数据的形式保存下来的。在这其中,数据库的连接...

    硬核项目经理
  • 关系型数据库的ACID(原子性、一致性、隔离性与持久性)

    Coxhuang
  • Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探

    Zookeeper数据的组织形式为一个类似文件系统的数据结构,而这些数据都是存储在内存中的, 可以认为 Zookeeper是一个基于内存的小型数据库 .

    小小工匠
  • Android基础总结(5)——数据存储,持久化技术

    瞬时数据:指那些存储在内存当中,有可能会因为程序广播或其他原因导致内存被回收而丢失的数据。 数据持久化:指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机...

    mukekeheart
  • 利用英特尔® 傲腾™ 持久内存,优化企业数据库性能 | 傲腾大师声音

    采用合适的存储解决方案是打造高效数据库的基础。在传统的数据库存储金字塔结构中,DRAM时延低,速度快,有利于加快计算速度,但价格相当昂贵且容量有限。块存储虽然容...

    用户5498443
  • Docker最全教程——数据库容器化之持久保存数据(十一)

    上一节我们讲述了SQL Server容器化实践(注意,SQL Server现在也支持跨平台),本节将讲述如何持久保存数据,并且接下来将逐步讲解其他数据库(MyS...

    雪雁-心莱科技
  • Docker最全教程——数据库容器化之持久保存数据(十二)

    上一节我们讲述了SQL Server容器化实践(注意,SQL Server现在也支持跨平台),本节将讲述如何持久保存数据,并且接下来将逐步讲解其他数据库(MyS...

    心莱科技雪雁
  • Docker的持久化存储和数据共享(四)

    有些容器会自动产生一些数据,为了不让数据随着container的消失而消失,保证数据的安全性。例如:数据库容器,数据表的表会产生一些数据,如果我把contain...

    蒋老湿
  • 非易失性内存技术及数据库

    “2013年开始这个项目的研究,当时不确定非易失性内存技术是否可商用。2019年Intel商用了NVM产品,NVM对下一代数据库系统的影响吸引了广大研究者”--...

    yzsDBA
  • 非易失性内存技术及数据库

    “2013年开始这个项目的研究,当时不确定非易失性内存技术是否可商用。2019年Intel商用了NVM产品,NVM对下一代数据库系统的影响吸引了广大研究者”--...

    yzsDBA
  • 基于数据库的库存服务会有哪些坑?

    业界对于库存敏感的业务往往通过数据库进行库存方案的设计,那么基于数据库库存系统会有哪些坑呢?

    春哥大魔王

扫码关注云+社区

领取腾讯云代金券