MySQL中事务的概述ACID了解

事务可由一条非常简单的SQL语句组成,也可以有一组复杂的SQL语句组成。事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中操作,要么都做修改,要么都不做,这就是事务的目的,也是事务模型区别与文件系统的重要特征之一

对于InnoDB而言,其默认的事务隔离级别为RR,完全遵循和满足事务的ACID特性

A(atomicity)原子性,在计算机系统中,每个人都将原子性视为理所当然,例如在C语言中调用SQRT函数,其要么返回正确的平方根值要么返回错误的代码。

然而在数据库事务中实现调用操作的原子性,就不是那么理所当然了。例如用户在ATM机前取款的过程称为原子性操作,要么都做,要么都不做,不能用户钱未从ATM取得,但是银行卡的钱已经扣除了,而通过事务模型,可以保证操作的的原子性

原子性是指整个数据库事务是不可分割工作单位,只有使事务中所有的数据库操作都执行成功,才算整个事务成功。事务中任何一个SQL语句执行失败,已经执行成功的SQL语句必须撤回,数据库状态应该退回执行事务前的状态

如果事务中的操作是只读,要保持原子性是很简单的,一旦发生任何错误,要么重试,要么返回错误代码。因为只读操作不会改变系统中任何相关部分,但是当事务中的操作需要改变系统中的状态时,例如插入记录或更新记录,那么情况可能就不像只读操作那么简单了。如果操作失败,很有可能引起状态的变化,因此必须保证保护系统中并发用户访问受影响部分数据

C(consistency)一致性 一致性是指事务将数据库从一种状态转变为下一种一致的状态,在事务开始之前和事务结束以后,数据库的完整性约束并没有被破坏。例如,表中有一个字段为姓名,为唯一约束,即在表中中姓名不能重复。如果一个事务对姓名字段进行了修改,但是在事务提交或事务操作发生回滚后,表的姓名变得非唯一了,这就破坏了事务的一致性要求,即事务将从一种状态变为一种不一致的状态,因此事务是一致性的单位,如果事务中的某个动作失败了,系统可以自动撤销事务---返回初始化状态

I(isolation)隔离性。隔离性还有其他称呼,如并发控制(concurrency control)、可串行化(serializability)、锁(locking)等。事务的隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离,即该事务提交对其他事务是不可见的,通常这使用锁来实现。当前数据库系统中提供了一种粒度锁(granular lock)的策略,允许事务锁住一个实体对象的自己,以此来提高事务之间的并发度

D(durability)持久性事务一旦提交,其结果是永久性的,即发生宕机扥故障,数据库也能将数据恢复。需要注意的是,只能从事务本身的角度来保证结果永久性。例如,在事务提交后,所有的变化都是永久的。即使当数据库因为崩溃而需要恢复时,也能保证恢复后提交的数据都不会丢失。但若不是数据库本身发生故障,而是一些外部原因,如RAID卡损坏、自然灾害等原因问题导致数据库发生问题,那么所有提交的数据都有可能会丢失。因此持久性保证事务系统的高可靠性(High Reliability),而不是高可用性(High Aavilability)。对于高可用性的实现,事务本身并不能保证,需要一些系统共同配合来完成

时间: 2024-10-26 02:16:04

MySQL中事务的概述ACID了解的相关文章

『浅入深出』MySQL 中事务的实现

在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇文章中,我们将对事务的实现进行分析,尝试理解数据库是如何实现事务的,当然我们也会在文章中简单对 MySQL 中对 ACID 的实现进行简单的介绍. 事务其实就是并发控制的基本单位:相信我们都知道,事务是一个序列操作,其中的操作要么都执行,要么都不执行,它是一个不可分割的工作单位:数据库事务的 ACID 四大特性是事务的基础,了解了 AC

mysql中事务隔离级别可重复读说明

mysql中InnoDB引擎默认为可重复读的(REPEATABLE READ).修改隔离级别的方法,你可以在my.inf文件的[mysqld]中配置: transaction-isolation = {READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE} 用户可以用SET TRANSACTION语句改变单个会话或者所有新进连接的隔离级别.它的语法如下: SET [SESSION | GLOBAL] TRANSACT

MySQL 中事务详解

1.事务的概念 2.在MySQL中哪些存储引擎(表类型)支持事务哪些不支持 3.事务的四个属性 4.mysql事务的创建与存在周期 5.mysql行为 6.事务的孤立性和性能 7.mysql的伪事务 一.事务的概念 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的.而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚.所有受到影响的数据将返回到事物开始以前的状态:如果单元中的所有SQL语句均执行成功,则事物被

深入解析Mysql中事务的四大隔离级别及其所解决的读现象

本文详细介绍四种事务隔离级别,并通过举例的方式说明不同的级别能解决什么样的读现象.并且介绍了在关系型数据库中不同的隔离级别的实现原理. 在DBMS中,事务保证了一个操作序列可以全部都执行或者全部都不执行(原子性),从一个状态转变到另外一个状态(一致性).由于事务满足久性.所以一旦事务被提交之后,数据就能够被持久化下来,又因为事务是满足隔离性的,所以,当多个事务同时处理同一个数据的时候,多个事务直接是互不影响的,所以,在多个事务并发操作的过程中,如果控制不好隔离级别,就有可能产生脏读.不可重复读.

JAVA中事务的属性ACID;

原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消.在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态. 一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束).在完成了一个成功的事务时,数据应处于一致的状态.换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态.举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束. 隔离性(ISOLATION):

mysql中事务的四大特性

原子性(Atomicity) 事务就像“原子”一样,不可被分割,组成事务的DML操作语句要么全成功,要么全失败,不可能出现部分成功部分失败的情况. 一致性(Consistency) 一旦事务完成,不管是成功的,还是失败的,整个系统处于数据一致的状态. 隔离性(Isolation) 一个事务的执行不会被另一个事务所干扰.比如两个人同时从一个账户从取钱,通过事务的隔离性确保账户余额的正确性. 持久性(Durability) 也称为永久性,指事务一旦提交,对数据的改变就是永久的,不可以再被回滚. My

MYSQL中事务的应用,结合PHP连接数据库

<?php require './conn.php'; $sql1="update products set store=store-10 where id=1"; //正确 $sql2="update products set stores=store+10 where id=2"; //字段错误,执行错误 mysqli_autocommit($link,false);//表示事务开始 $b1=mysqli_query($link,$sql1); // 正确

MySQL的事务与事务隔离

MySQL中自从引入InnoDB引擎后,在MySQL中就支持事务,事务就是一组原子性的查询语句,也即将多个查询当作一个独立的工作单元,平时通过提交工作单元来完成在事务中的相应的查询或修改,在能支持事务的数据库中必须要满足ACID测试,即事务的四个特性: A:Atomicity,原子性(都执行或者都不执行) C:Consistency,一致性(从一个一致性状态转到另外一个一致性状态) I:Isolaction,隔离性(一个事务的所有修改操作在提交前对其他事务时不可见的) D: Durability

MySQL的事务

MySQL的事务 1.事务:事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行. 2.事务具备的四个特性(简称为ACID性): (1)原子性(Atomicity): 事务是应用中最小的执行单位,具有不可再分的特征,事务是应用中最小的逻辑执行体: (2)一致性(Consistency): 事务执行的结果必须使数据库从一个一致性状态转变到另一个一致性的状态.当数据库只包含事务成功提交的结果时,数据库处于一致性状态.如果系统运行发生中断,某个事务尚未完成而