mysql怎么处理数据的 mysql 数据处理( 四 )


事务中的操作是一个整体,要么整体完成,要么全部不做 。从而保证了数据的完整性 。
Mysql中,MyISAM存储引擎不支持事务 , InnoDB支持 。
两者都是数据库中非常重要的知识 。
5. 有关数据库最基本最基础知识
一 事务处理介绍 事务是这样一种机制,它确保多个SQL语句被当作单个工作单 元来处理 。
事务具有以下的作用: * 一致性:同时进行的查询和更新彼此不会发生冲突,其他 用户不会看到发生了变化但尚未提交的数据 。* 可恢复性:一旦系统故障 , 数据库会自动地完全恢复未完 成的事务 。
二 事务与一致性 事务是完整性的单位,一个事务的执行是把数据库从一个一 致的状态转换成另一个一致的状态 。因此,如果事务孤立执行时 是正确的,但如果多个事务并发交错地执行,就可能相互干扰,造成数据库状态的不一致 。
在多用户环境中,数据库必须避免同 时进行的查询和更新发生冲突 。这一点是很重要的,如果正在被 处理的数据能够在该处理正在运行时被另一用户的修改所改变,那么该处理结果是不明确的 。
不加控制的并发存取会产生以下几种错误: 1 丢失修改(lost updates) 当多个事务并发修改一个数据时,不加控制会得出错误的结 果,一个修改会覆盖掉另一个修改 。2 读的不可重复性 当多个事务按某种时间顺序存取若干数据时,如果对并发存 取不加控制 , 也会产生错误 。
3 脏读(DIRDY DATA),读的不一致性 4 光标带来的当前值的混乱 事务在执行过程中它在某个表上的当前查找位置是由光标表 示的 。光标指向当前正处理的记录 。
当处理完该条记录后 , 则指 向下一条记录 。在多个事务并发执行时,某一事务的修改可能产 生负作用 , 使与这些光标有关的事务出错 。
5 未释放修改造成连锁退出 一个事务在进行修改操作的过程中可能会发生故障,这时需 要将已做的修改回退(Rollback) 。如果在已进行过或已发现错 误尚未复原之前允许其它事务读已做过修改(脏读),则会导致 连锁退出 。
6 一事务在对一表更新时,另外的事务却修改或删除此表的 定义 。数据库会为每个事务自动地设置适当级别的锁定 。
对于前面 讲述的问题:脏读、未释放修改造成的连锁退出、一事务在对一 表更新时另外的事务却修改或删除此表的定义,数据库都会自动 解决 。而另外的三个问题则需要在编程过程中人为地定义事务或 加锁来解决 。
三 事务和恢复 数据库本身肩负着管理事务的责任 。事务是最小的逻辑工作 单元 , 在这个工作单元中,对数据库的所有更新工作,要么必须 全部成功,要么必须全部失败(回退) 。
只要应用程序指定了某 段程序为一个事务并做了相应的处理(提交或回退) , 数据库系 统会自动维护事务本身的特性 。四 ORACLE数据库的事务定义 ORACLE事务从MIT、ROLLBACK、连接到数据库或开始第一 条可执行的SQL语句时开始,到一条MIT、ROLLBACK语句或退出 数据库时结束 。
如果在一个事务中包含DDL语句 , 则在DDL语句的 前后都会隐含地执行MIT语句,从而开始或结束一个事务 。如果一个事务由于某些故障或者由于用户改变主意而必须在 提交前取消它,则数据库被恢复到这些语句和过程执行之前的状 态 。
利用ROLLBACK语句可以在MIT命令前随时撤消或回退一个 事务 。可以回退整个事务,也可以会退部分事务 , 但是不能回退 一个已经被提交的事务 。
回退部分事务的ROLLBACK命令为: ROLLBACK to savepoint 存储点名 存储点是用户放入事务中的标记,用来表示一个可被回退的 位置 。存储点通过在事务中放入一个SAVEPOINT命令而 *** 入 。

推荐阅读