`

浅谈数据库事务

阅读更多
事务的四大特性(ACID)
原子性

原子性是指事务包含的所有操作要么全部成功,要么全部失败。
例小王要向小李转账200元。则账要么转账成功小王账户减200元,小李账户加200元,要么执行失败,两者账户都不动。

一致性

一致性是指事务执行之前和执行之后都必须处于一致性状态。

假设转账前小王和小李的余额之和是2000元,那么不管他们之间进行了多少次转账,他们的余额之和肯定还是2000元。

隔离性

隔离性是当多个事务并发操作数据库时,不能被其他事务的操作所干扰

例小王银行卡只有200元了,他要向小李转账200元时银行方面进行银行卡的年费扣除则这两个操作必定不可能都成功。

持久性

持久性是指一个事务一旦提交,那么对数据库中的数据的改变就是永久性的。

当小王和小李之间进行一次转账时,这笔转账记录便永久的保存在数据库里.

并发事务存在的问题

上方提到了数据库事务的隔离性,先看一下如果事务之间不进行隔离的话可能出现什么问题

脏读

脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。
  当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。同上方的例子:小王向小李转账200元,对应SQL命令如下

1
2
update account set balance=balance+200 where name=’小李’; 
update account set balance=balance-200 where name=’小王’;

当只执行第一条SQL时,小李查询余额发现确实钱已到账(此时即发生了脏读),而之后如果该事务不提交或者出现异常,则所有操作都将回滚,那么小李再次查看账户时就会发现钱其实并没有到账。

不可重复读

例如事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据就得到了不同的结果,这个时候就发生了不可重复读。

幻读

例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

幻读和不可重复读都是读取了另一条已经提交的事务,所不同的是不可重复读查询的是同一个数据项,而幻读针对的是一批数据。

事务的隔离级别

Read uncommitted (读未提交)最低级别,任何情况都无法保证。
Read committed (读已提交):可避免脏读的发生。
Repeatable read (可重复读):可避免脏读、不可重复读的发生。
Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
注意

上方隔离级别从低到高,隔离级别越高效率越低。
在MySQL数据库中,支持上面四种隔离级别,默认为Repeatable read
在Oracle数据库中,只支持Serializable和Read committed ,默认为Read committed级别



 

  • 大小: 171.6 KB
0
0
分享到:
评论

相关推荐

    浅谈数据库事务四大特性

    数据库事务是数据库操作的核心组成部分,它确保了数据库在多用户环境下的稳定性与可靠性。事务的四大特性,也被称为ACID属性,是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性...

    浅谈数据库中事务处理和并发控制技术

    浅谈数据库中事务处理和并发控制技术 数据库事务处理和并发控制是数据库管理系统(DBMS)中的核心技术, Guarantees 数据库的可靠性和一致性。本文将详细介绍数据库事务处理和并发控制技术的概念、特性和实现机制。...

    浅谈分布式事务实现技术及应用场景探讨.pdf

    "浅谈分布式事务实现技术及应用场景探讨" 分布式事务是指在分布式系统中,多个节点之间的数据访问和更新操作集合,需要保证事务的原子性、一致性、隔离性和持久性。随着软件系统支持用户数的不断提高,对其架构的...

    浅谈SQL数据库备份.pdf

    "浅谈SQL数据库备份.pdf" 本文将对SQL Server数据库备份进行详细介绍,包括根据数据库向导备份数据库、脚本备份数据库、通过数据库代 理服务器自动备份数据库及通过导出数据库结构和数据脚本备份数据库四种方法。 ...

    浅谈ORACLE数据库的性能优化.pdf

    数据缓冲区存储从数据文件读取的数据,日志缓冲区用于记录事务日志,而共享池则用于SQL和PL/SQL的解析、编译和执行,包括库缓存、数据字典缓存和用户全局区。 2. 初始参数调整 通过初始化参数如DB_BLOCK_SIZE可以...

    浅谈分布式数据库架构.pdf

    设计分布式数据库时,需要考虑如何有效地进行数据分片、副本控制、负载均衡、异步复制、事务管理等关键问题。 在实际应用中,分布式数据库系统如Apache Cassandra、Google Spanner、Amazon DynamoDB等,已逐渐成为...

    浅谈SQL Server数据库访问.pdf

    "浅谈SQL Server数据库访问" 本文主要介绍了Microsoft SQL Server数据库的基本概念和访问方法,讨论了三种常用的数据库访问接口DAO、ODBC和ADO,并提供了一些示例程序来访问SQL Server数据库。此外,本文还介绍了...

    浅谈分布式数据库系统架构.pdf

    3. 全事务支持:分布式数据库系统支持全事务管理,确保数据处理的一致性。系统采用全局事务管理集群来保证分布式事务的一致性,通过集群快照等新技术来解决分布式系统中数据一致性的问题。 分布式数据库系统架构...

    浅谈Oracle数据库安全策略.pdf

    2. 日志管理:Oracle数据库的重做日志(Redo Log)记录了所有的事务更改,是实现事务恢复和崩溃恢复的关键。归档日志(Archived Logs)则保存了已提交的事务,以备在需要时进行恢复。因此,保持日志的完整性和管理好...

    浅谈SpringBoot之事务处理机制

    浅谈SpringBoot之事务处理机制 SpringBoot之事务处理机制是Spring框架中的一种机制,用于管理事务。事务是指一系列的数据库操作,例如插入、更新、删除等,事务处理机制的目的就是为了确保这些操作的原子性、一致性...

    浅谈Oralce数据库的优化.doc

    本文主要探讨了12个关键的优化策略,针对Oracle数据库的SQL查询和事务处理进行了深入分析。 1. 表的顺序选择:在FROM子句中,应将记录条数最少的表放在最右边,以优化Oracle的解析过程。在多表连接查询中,基础表的...

    浅谈分布式数据库管理应用系统的开发.pdf

    此外,系统还需要处理全局事务,协调不同局部站点的数据库管理系统,以保证在整个共享平台上的操作一致性。数据并发控制机制是另一个关键点,它确保在多用户环境下数据的一致性和完整性。同时,系统还需要具备数据...

    浅谈Java技术中的数据库应用

    在Web环境中,Java可以无缝地集成到基于Servlet和JSP的Web应用框架中,如Spring框架,提供了一套完整的事务管理、数据访问和持久化策略,简化了数据库应用的开发和维护。 在Java 2及后续版本中,JDBC得到了进一步的...

    浅谈SQL Server数据库查询性能的优化.pdf

    首先,数据库系统性能的优劣可以通过多个度量标准来评估,包括SQL语句的响应时间、支持并发用户的能力以及系统每天处理的事务量等。影响数据库性能的因素主要包括以下几个方面: 1. SQL语句的设计不当。如果SQL语句...

    DB2 数据库调优浅谈

    ### DB2 数据库调优浅谈 #### 数据库调优的视角 在进行数据库调优时,不同的视角可能会带来不同的解决方案。通常来说,可以从以下几个方面考虑: - **应用优化**:针对应用程序本身的优化,比如查询逻辑、事务...

    浅谈分布式数据库的数据存储.pdf

    透明性体现在用户对数据存储位置的无知,数据的存储、查询和事务处理对用户来说是不可见的,而灵活性则表现在分布式数据库能够支持不同类型的存储需求和应用场景。 分布式数据库系统克服了传统集中式数据库的很多...

    浅谈Oracle数据库系统性能优化策略.pdf

    Oracle数据库系统性能优化是数据库管理中的重要环节,它涉及到数据库设计、硬件配置、操作系统设置、数据库参数调整以及应用程序优化等多个方面。在设计阶段进行性能优化是最经济且效果最佳的策略,因为一旦系统上线...

    浅谈Oracle数据库性能调优 (2).pdf

    【Oracle 数据库性能调优】 Oracle数据库性能调优是一个DBA(数据库管理员)的重要任务,其目的是提升数据库的运行效率,降低存储空间占用,并优化查询性能。本文将围绕Oracle数据库的性能优化方法展开讨论,主要关注...

Global site tag (gtag.js) - Google Analytics