您现在的位置是:主页 > 数据库技术 > 数据库技术

Trafodion事务管理怎么理解

IDCBT2021-12-23服务器技术人已围观

简介这篇文章主要介绍“Trafodion事务管理怎么理解”,在日常操作中,相信很多人在Trafodion事务管理怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大

这篇文章主要介绍“Trafodion事务管理怎么理解”,在日常操作中,相信很多人在Trafodion事务管理怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Trafodion事务管理怎么理解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Trafodion这个词的本意是“事务”,可见项目组对事务处理的重视程度。

事务主要用来防止和处理数据出现不一致的错误。首先理解什么是数据一致性,给出具体的定义实在太为难笔者。还是举个例子吧。笔者年轻时大家都知道“香港四大天王”,他们是刘德华,张学友,黎明和郭富城。我定义这四个名字是“一致的”,而“刘学友”或者“张德华”就不是一致性的数据。或者在介绍的时候不全:比如“香港四大天王是:刘德华,”,其他天王要不高兴了。另外,刘德华唱过《忘情水》,如果数据库查询得到刘德华唱了《吻别》,也是不一致的数据。

造成数据不一致主要有两种因素,分别用两种事务技术解决。在Trafodion中,一个技术是日志;另一个技术是多版本并发控制MVCC。

日志

第一种造成数据不一致的因素是不可预知的故障。故障会导致正在处理数据的过程异常中断,比如数据正在往磁盘中写入的时候系统断电,那么结果就是未知的,有可能写入了不完整的数据。比如应该写入”张学友”覆盖原本的”刘德华”,却只写了”张”,剩下两个字节没来得及写入,所以还是老数据,于是磁盘数据变成“张德华”,造成数据了不一致,从来没有这个天王;或者说正在顺序写入四个人的名字,断电了,只写了刘德华,其他人都没写,也是不一致,要么4位全写,要么全都不写,写一个漏掉其他算是什么意思,看不起其他天王么?

处理这类错误的方法是WAL日志,write ahead log。即每次写入数据之前,先将变化写入日志,再写数据。这样,如果有错误发生,通过查询日志,就可以进行恢复。比如前面的例子,在将“张学友”写入数据文件之前,先写入日志。这样即便发生了故障,也不会有问题,如果故障发生在写日志的过程中,那么数据文件中依然是“刘德华”。如果故障发生在写数据文件的过程中,那么虽然数据文件中是“张德华”,但是WAL日志中却是正确的数据“张学友”,我们将日志replay一下,用“张学友”覆盖“张德华”即可。
如果遇到写中断错误,则可以利用日志将做过的操作全部撤销,比如写入了刘德华,然后出错了,查询日志,发现已经写了刘德华,那么rollback就是把“刘德华”删除掉。
通过日志,保证了在任何错误情况下,事务的一致性,即ACID中的A和D。

传统的日志技术包括Redo,undo, redo/undo等。和所有其他数据库一样,Trafodion采用redo/undo日志。

标签:

很赞哦! ()

本栏推荐