美文网首页
数据读写机理小探之不丢数据

数据读写机理小探之不丢数据

作者: 淡淡的小番茄 | 来源:发表于2021-06-07 08:08 被阅读0次

由于机械磁盘的物理局限性,使得随机读写的性能不高。为了提升数据落盘性能,就需要顺序写。很多中间件为了提升吞吐,在数据落盘的时候,一般都先将数据写入内存(程序内部或者文件系统的Page Cache),然后定时刷新到磁盘上。

这样就引入一个新问题,因为数据存储到内存里是不安全的,机器断电重启后,内存里的数据就会丢失。然后怎么办呢?然后,引入了WAL,WAL 意为Write ahead log,预写日志。

就是存在两路写入,先预写日志。

比如mysql的redo log ,在写日志的时候,提供了三种写入方式(innodb_flush_log_at_trx_commit ):

1、设置为0:事物提交时,写到缓冲区内的 redo log buffe。

2、设置为1:事物提交的时候,redo log持久化到磁盘。

3、设置为2:事物提交的时候,redo log写入到page cache。

mysql是事务型的关系型数据库(ACID),想达到数据不丢失的效果,以redo log为例,需要将参数配置为1,在事物提交的时候,将redo log直接持久化到磁盘。另一方面,对于不支持事物的nosql数据库,没有事物的概念,他是如何保证数据的不丢失呢?

这个问题确实比较难弄,引入WAL其实已经是个双保险,减少了数据丢失概率,如果真正的想数据不丢失,也只能采用mysql的实现方式,这样一做也就支撑了事务性,性能自然是要下降很多的。

个人的一些理解,有错误的不准确的地方,欢迎指正。

相关文章

  • 数据读写机理小探之不丢数据

    由于机械磁盘的物理局限性,使得随机读写的性能不高。为了提升数据落盘性能,就需要顺序写。很多中间件为了提升吞吐,在数...

  • 数据读写机理小探之顺序读写

    如何磁盘读写能力 背景 由于机械磁盘的局限性,读写一条数据的时候,都会有寻址的过程,而此过程目前是通过机械运动来实...

  • Kafka实际案例问题

    kafka consumer防止数据丢失 Kafka学习之怎么保证不丢,不重复消费数据 1 消费者pull数据时,...

  • python 读写json数据

    6.2 读写json数据 使用json模块来读写json数据 其中json的dumps和loads函数就是借鉴了之...

  • MQ中间件-rabbitmq-生产者如何确保消息的不丢失(Spr

    消息的不丢失,在MQ角度考虑,一般有三种途径:生产者不丢数据MQ服务器不丢数据消费者不丢数据其余的方式是根据业务来...

  • 嵌入式系统中内存和flash的区别

    内存:断电丢数据。 flash:断电不丢数据。 flash:分为NOR和NAND, NOR:可直接进行...

  • A(10) Kafka丢不丢数据

    10 Kafka丢不丢数据Ack=0,相当于异步发送,消息发送完毕即offset增加,继续生产。Ack=1,lea...

  • Sharding-JDBC-Java配置

    JAVA配置 配置示例 数据分片 读写分离 数据分片 + 读写分离 数据分片 + 数据脱敏 治理 配置项说明 数据...

  • 数据湖小探

    数仓的建设总是离不开业务,一般来说都是业务驱动,我需要什么样的东西,有什么样的需求才开始去做相应的事情。 生活中也...

  • Sharding-JDBC-Yaml配置

    YAML配置 配置示例 数据分片 读写分离 数据分片 + 读写分离 数据分片 + 数据脱敏 治理 配置项说明 co...

网友评论

      本文标题:数据读写机理小探之不丢数据

      本文链接:https://www.haomeiwen.com/subject/aigzsltx.html