事务的特性

事务的特性,第1张

事务的四大特性ACID

1.原子性:事务中所有 *** 作是不可在分割的原子单元。事务中所有 *** 作要么

都执行成功,要么都执行失败。

2.一致性:事务前后数据的完整性必须保持一致

3.隔离性:隔离性是指在并发 *** 作中,不同事务之间应该隔离开来,使每个

并发中的事务不会互相干扰

4.持久性:是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使

数据库发送故障也不应该对其有任何影响。

3.不考虑隔离性会产生的三个问题

脏读:一个事务处理过程中读取另一个未提交的事务中的数据

不可重复读:一个事务两次读取同一行数据,结果不同状态的结果,中间正好

另一个事务更新了该数据,两次结果相异,不可被信任。

幻读:一个事务执行两次查询,第二次结果集包含第一次中没有或某行已经被删除

的数据,造成两次结果不一致,只是另一个事务在这两次查询中间插入或删除了数据造成的。

4.解决办法:四种隔离级别

1.Read Uncommitted(读取未提交内容)

读未提交,一个事务可以读取另一个未提交事务的数据,但是读未提交产生了脏读,采用读提交可以解决脏读问题

2.Read Committed(读取提交内容)

读提交,一个事务等待另一个事务提交后才能读取数据。读提交,若有事务对数据进行更新(update) *** 作时,读 *** 作事务要等待这个更新 *** 作事务提交后才能读取数据,可以解决脏读问题。

3.Repeatable Read(重复读)

重复读,就是在开始读取数据(事务开启)时,不再允许修改 *** 作。重复读可以解决不可重复读问题。不可重复读对应的是修改,即update *** 作。但是可能还会有幻读问题。幻读问题对应的是插入insert *** 作。

4.Serializable(可串行化)

Serializable是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。凡是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。

MySQL事务基本上都有四大特点:1.原子性:每个事务都是一个整体,不可分割。2.一致性:一个事务要么全部提交,要么全部回滚。3.隔离性:事务直接不能相互影响。4.永久性:事务一旦提交,数据永久存在与磁盘中。

事务通常由高级数据库 *** 纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begintransaction和endtransaction语句(或函数调用)来界定

特性:原子性,一致性,隔离性,持续性。

原子性:事物是数据库的逻辑工作单位,事物中包括的 *** 作要么都做,要么都不做。

一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

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

持续性:也称永久性,只一个事物一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其它 *** 作或故障不应该对其执行结果有任何影响。


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

原文地址: http://outofmemory.cn/sjk/6662824.html

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

发表评论

登录后才能评论

评论列表(0条)

保存