android 数据库 回滚事务是什么意思

android 数据库 回滚事务是什么意思,第1张

事务就是一系列对数据库的 *** 作,这些 *** 作要么全部正确执行,一旦有一个 *** 作执行失败,就要让全部 *** 作都执行失败,也就是已经执行成功的 *** 作需要撤销掉。将一系列相关的 *** 作封装为事务是为了保证数据库的一致性。

将一个事务的所有 *** 作对数据库所作出的改变全部撤销的过程就是回滚事务。事务的回滚会在出现事务 *** 作执行失败时自动发生,也可以使用命令显式的让任何事务提交或者回滚。

回滚的作用就是,当有一个SQL语句执行时,条件不符合要求,比如你要插入一个数据,但是插入的数据要有条件的,这时候你就可以用回滚,如果条件成功就COMMIT提交的意思,不然就ROLLBACK回滚,也就是说插入不成功

当启动Binlog后,事务会产生Binlog Event,这些Event被看做事务数据的一部分。因此要保证事务的Binlog Event和InnoDB引擎中的数据的一致性。所以带Binlog的CrashSafe要求MySQL宕机重启后能够保证:

- 所有已经提交的事务的数据仍然存在。

- 所有没有提交的事务的数据自动回滚。

- 所有已经提交了的事务的Binlog Event也仍然存在。

- 所有没有提交事务没有记录Binlog Event。

这些要求很好理解,如果重启后数据还在,但是Binlog Event没有了,就没办法复制到其他节点上了。如果重启后,数据没了,但是Binlog Event还在,那么不存在的数据就会被复制到其他节点上,从而导致主从的不一致。

为了保证带Binlog的CrashSafe,MySQL内部使用的两阶段提交(Two Phase Commit)。

2 - MySQL的Two Phase Commit(2PC)

在开启Binlog后,MySQL内部会自动将普通事务当做一个XA事务来处理:

- 自动为每个事务分配一个唯一的ID

- COMMIT会被自动的分成Prepare和Commit两个阶段。

- Binlog会被当做事务协调者(Transaction Coordinator),Binlog Event会被当做协调者日志。

想了解2PC,可以参考文档:

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库 *** 纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。

事务的提交是指事务里的所有 *** 作都正常完成。

事务的回滚是指程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。

扩展资料:

事务的特征:

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

1、原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸 *** 作要么都做,要么都不做。

2、一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的 *** 作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

4、持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他 *** 作或故障不应该对其有任何影响。

参考资料来源:百度百科-事务

参考资料来源:百度百科-回滚

1、将数据关闭 svrmgrl >Shutdown abort 2、修改初始化参数文件 $ vi $Oracle_HOME/dbs/init< sid >ora 添加以下参数 rollback_segments=(system) _corrupted_rollback_segments=(r01,r02,r03,r04) _allow_resetlogs_corruption=ture 3、重新装载数据库svrmgrl >Startup mount 4、从数据库的控制文件中将回滚段表空间rbs的数据文件离线并去掉。 svrmgrl >recover database using backup controlfile; ---- 此时屏幕上可能会出现: ORA_00280 Change #### for thread# is in sequence# specify log:[< RET > for suggestedAUTOfrom logsourcecancel] 输入cancel(不要输入其他命令) svrmgrl >alter database open resetlogs; 5、 重建新的回滚段 ---- 将旧回滚段及回滚表空间删除。 svrmgrl >connect internal svrmgrl >create rollback segment ro tablespace system; svrmgrl >alter rollback segment ro online; svrmgrl >create tablespace rbs datafile ##/##/rbs01dbf’ size ##k; svrmgrl >create rollback segment r01 tablespace rbs; svrmgrl >create rollback segment r02 tablespace rbs; svrmgrl >create rollback segment r03 tablespace rbs; svrmgrl >create rollback segment r04 tablespace rbs; svrmgrl >alter rollback segment r01 online; svrmgrl >alter rollback segment r02 online; svrmgrl >alter rollback segment r03 online; svrmgrl >alter rollback segment r04 online; svrmgrl >Shutdown abort $ vi $ORACLE_HOME/dbs/init< sid >ora rollback_segments=(r01,r02,r03,r04) 将参数_corrupted_rollback_segment _allow_resetlogs_corruption=true去掉 svrmgrl >Startup normal

比如说你的事务未提交进程意外终止(

掉线

啊,点击

叉叉

退出连接啊)未提交的数据全部

回滚

。或者在你的事务提交过程中,数据违反约束条件,事务内部出现错误被终止,则该事务中所有 *** 作也被自动回滚。还有其他一些情况,这两个是主要的。

其实回滚简单理解就是之前 *** 作的反向 *** 作,在addtable1中定义了插入方法,与之相反,回滚的话就是定义一种删除方法,把之前插入的数据删掉就好了。这个你应该可以做到的吧!

还有给你个忠告,以后做数据库 *** 作的时候,最好先备份数据库,这是防止这种情况发生的最简便的方法。

另外,当你要对数据库进行相应的 *** 作的时候,提前分析好回滚 *** 作,特别是逻辑,回滚很容易因为逻辑关系似的数据库面目全非,因为对数据库的 *** 作很多是在 *** 作时候是1-〉2->3->4这样的逻辑,回滚的时候就要进行2->1->4->3这样的逻辑。

如果不行的话再给我留言

1 游标是什么 游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据。通俗理解就是将受影响的数据暂时放到了一个

2 作用是什么 1,大家都知道数据库中的事物可以回滚,而游标在其中起着非常重要的作用,由于对数据库的 *** 作我们会暂时放在游标中,只要不提交,我们就

3 类型: 1,隐式游标:增删改等 *** 作Oracle都会自动

以上就是关于android 数据库 回滚事务是什么意思全部的内容,包括:android 数据库 回滚事务是什么意思、SQL回滚的作用什么、mysql命令行下怎样实现数据的回滚 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9509217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存