浅析mysql redis rocketmq的持久化机制

触类旁通

  • 据我的学习经验,优秀的源码里面无非就是一些通用经验,通用设计模式,通用算法,通用操作系统知识,通用数据结构的组合。既然是,其实大可以触类旁通,就看其组装的怎么样了,组装得好就是3A佳作,组装得不好甚至用地摊货就是泰坦陨落(仙6风评被害)。
  • 误杀(翻拍自误杀瞒天记)电影里面有一句话是:如果你看过1000部电影,就会知道这世界本没有什么离奇的事情。我觉得可以说:如果你看过1000份优秀源码,就会知道这世界并没有什么难懂的源码。------虽然我阅历尚浅,并未看过多少源代码,只是一个练习时长两年半的非科班生。

浅浅

我们先身在第一层,其持久化机制,

  • mysql:可以简单的说,mysql的持久化机制(在这里我们只讨论innodb,后文也是)是通过redolog实现的,其redolog又是先写入redolog缓冲区,再写入redologfile,再写入磁盘文件三步来实现的。
  • redis:而redis是通过rdb或者aof来实现其持久化的
  • rocketmq: rocketmq是通过commitLog来实现其持久化的

那么我们到了第二层

  • mysql:
    • 每次事务提交之前会保证对数据页的修改写入redolog缓冲区,然后这里存在异步同步刷盘策略(设计模式),写入缓冲区后何时写入redolog file,这里提供了innodb_flush_log_at_trx_commit参数。
      • 0:事务提交不进行写入redolog操作,由主线程来将buffer写入redolog,每秒钟做一次redolog的fsync落盘redolog file。(mysql宕机即丢失数据)
      • 1:事务提交时必须调用fsync将redolog落盘
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值