加入收藏 | 设为首页 | 会员中心 | 我要投稿 阳江站长网 (https://www.0662zz.cn/)- 办公协同、云通信、区块链、物联平台、高性能计算!
当前位置: 首页 > 站长资讯 > 动态 > 正文

唯快不破的秘密

发布时间:2021-01-27 12:16:48 所属栏目:动态 来源:互联网
导读:2020年是物联网浪潮奔涌的一年,5G+IoT的爆发迎来诸多智能商业场景的落地。在这其中,操作系统作为物联网的「大脑」发挥了不可或缺的作用。 物联网操作系统是新一代信息技术的重要组成部分。其英文名称是IoT(Internet of Things),顾名思义,「物联网就是万

2020年是物联网浪潮奔涌的一年,5G+IoT的爆发迎来诸多智能商业场景的落地。在这其中,操作系统作为物联网的「大脑」发挥了不可或缺的作用。

物联网操作系统是新一代信息技术的重要组成部分。其英文名称是IoT(Internet of Things),顾名思义,「物联网就是万物相连的互联网」。与传统的个人计算机或个人智能终端(智能手机、平板电脑等)上的操作系统不同,物联网操作系统有其独特的特征。这些特征是为了更好的服务物联网应用而存在的,运行物联网操作系统的终端设备,能够与物联网的其它层次结合的更加紧密,数据共享更加顺畅,能够大大提升物联网的生产效率。

在本文中,我们特地盘点、汇总了2020年最受关注的十大物联网操作系统,一起来认识下都有哪些?

Andorid Things

Android Things是Google推出的平台,旨在帮助Android开发者打造物联网设备。这个平台还支持强大的应用,例如视频与音频处理以及通过TensorFlow进行板载机器学习。它继承Brillo的功能外,还增加了Android API和Google服务的支持,以及一些Android Things的支持库。
 

首先,更新数据还是会判断数据是否存在于Buffer Pool中,不存在则加载。上面我们提到了回滚的问题,在更新Buffer Pool中的数据之前,我们需要先将该数据事务开始之前的状态写入Undo Log中。假设更新到一半出错了,我们就可以通过Undo Log来回滚到事务开始前。

然后执行器会更新Buffer Pool中的数据,成功更新后会将数据最新状态写入Redo Log Buffer中。因为一个事务中可能涉及到多次读写操作,写入Buffer中分组写入,比起一条条的写入磁盘文件,效率会高很多。
 

这个过程看似没啥问题,实则不讲武德。假设我们修改Buffer Pool中的数据成功,但是还没来得及将数据刷入磁盘MySQL就挂了怎么办?按照上图的逻辑,此时更新之后的数据只存在于Buffer Pool中,如果此时MySQL宕机了,这部分数据将会永久的丢失;

再者,我更新到一半突然发生错误了,想要回滚到更新之前的版本,该怎么办?那不完犊子吗,连数据持久化的保证、事务回滚都做不到还谈什么崩溃恢复?

Redo Log & Undo Log

而通过MySQL能够实现崩溃恢复的事实来看,MySQL必定实现了某些骚操作。没错,这就是接下来我们要介绍的另外的两个关键功能,Redo Log和Undo Log。

这两种日志是属于InnoDB存储引擎的日志,和MySQL Server的Binlog不是一个维度的日志。

Redo Log 记录了此次事务「完成后」的数据状态,记录的是更新之「后」的值

Undo Log 记录了此次事务「开始前」的数据状态,记录的是更新之「前」的值

所以这两种日志有明显的区别,我用一种更加通俗的例子来解释一下这两种日志。

Redo Log就像你在命令行敲了很长的命令,敲回车执行,结果报错了。此时我们只需要再敲个↑就会拿到上一条命令,再执行一遍即可。

Undo Log就像你刚刚在Git中Commit了一下,然后再做一个较为复杂的改动,但是改着改着你的心态崩了,不想要刚刚的改动了,于是直接git reset --hard $lastCommitId回到了上一个版本。

实现日志后的更新流程

有了Redo Log和Undo Log,我们再将上面的那张图给完善一下。

(编辑:阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读