`
xinklabi
  • 浏览: 1586372 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

事务的特征,隔离级别,并发环境的几种非法情况

 
阅读更多

 

事务:由一个或多个执行、完成的语句组成,以组的形式提交或回滚。当前事务结束,另一个事务开始。

在JDBC中,事务默认是自动提交的,即每执行一条语句,就是一个事务。

事务特性:ACID特征,Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)。

  • 原子性:指整个事务是不可以分割的工作单元。只有事务中所有的操作执行成,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该回到执行事务前的状态。
  • 一致性:指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对于银行转账事务,不管事务成功还是失败,应该保证事务结束后两个转账账户的存款总额是与转账前一致的。
  • 隔离性:指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
  • 持久性:指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

事务各个特征的实现手段:

  • 原子性:日志
  • 一致性:日志
  • 隔离性:锁机制
  • 持久性:日志

事务隔离级别(5级):

Oracle支持2种:2和8,默认为2.

并发环境中的几种情况:

  • 脏读:一个事务在提交前可以看到另一个事务的行为,则出现脏读。一个事务读到了其它事务没有提交的数据;
  • 不可重复读:一个事务通过SQL读取数据后,有其它事务立刻作了DML操作,并且提交了,然后第一个事务通过相同的SQL语句再次读取,所得的数据和第一次读取的数据不一致的情况。
    要点:同一个事务,同一语句,在多次读取过程中,所得到的结果不一致的情况。
    如何防止:在执行SELECT语句时加上for update子句
  • 幻(影)读:基本理解同不可重复读。
    区别:
    不可重复读:指某些列的值的不同,
    幻影读:指表的总记录数量上的不同。
    如何防止:锁表,代价很高。

使用如下方法控制连接的独立性等级:

conn.setTransactionIsolation(Connection.TRANSACTION_XXX);

 

事务的开始与结束:

首先,因为默认的JDBC事务是自动提交的,故我们在获取数据库连接后,应该将连接改为非自动提交模式:

conn.setAutoCommit(false); //标志着新事务的开始

conn.commit(); //提交

conn.rollback(); //回滚

 

在JDBC 3.0新增功能中,提供对事务commit和rollback的更好支持,在事务过程中,在两个操作间可以插入一个命名的存储点作为标记,因此可以将事务回滚到那个标记,保留标记有效前的所有操作。

示例:

conn.setAutoCommit(false);

Statement stmt = conn.createStatement();

 

stmt.executeUpdate(update1);

Savepoint point1 = conn.setSavepoint("point1");

 

stmt.executeUpdate(update2);

stmt.executeUpdate(update3);

 

conn.rollback(point1);

conn.commit();

分享到:
评论

相关推荐

    数据库原理及应用PPT学习教案.pptx

    SQL Server支持四种隔离级别:未提交读、已提交读、可重复读和序列化,每种级别对应不同的并发处理策略,以适应不同业务场景的需求。 综上所述,数据库原理及应用的学习涵盖了数据库安全基础、SQL Server的具体实现...

    CS平台数据库多操作模式

    3. **隔离级别**:为了平衡并发性能和数据一致性,数据库系统提供了不同的事务隔离级别,包括读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。...

    数据库安全在煤炭领域的研究

    本研究通过分析隐通道的产生机制,总结并提出了几种能够有效避免隐通道的算法。算法模拟的结果显示,这些算法能够消除低安全级事务对高安全级事务的依赖,从而避免了隐通道的产生。在这些算法的应用中,可以采取动态...

    数据库考试习题七答案.doc

    - **定义**:一个事务内部的操作及使用的数据对并发的其他事务是隔离的。 - **作用**:确保事务之间不会相互干扰,避免脏读、不可重复读等问题。 #### 持久性 - **定义**:事务一旦提交,对数据库的改变是永久的。 ...

    2014据库试卷41

    它违反了事务间的**隔离性**,通常可以通过事务隔离级别设置(如读未提交、读已提交、可重复读、串行化)来解决这个问题。 5. **数据库完整性与安全性**:数据库完整性是确保数据正确性的规则集合,包括实体完整性...

    oracle培训教程_2

    - **事务隔离级别**:定义了事务间数据可见性的不同级别,如读未提交、读已提交、可重复读和序列化。 - **乐观锁和悲观锁**:乐观锁假设冲突较少发生,而悲观锁则假设冲突较常见。 #### 四、数据库恢复 数据库恢复...

    Tuxedo全部资料

    2. **事务管理**:Tuxedo提供强大的事务处理能力,确保在分布式环境中的原子性、一致性、隔离性和持久性(ACID属性)。 3. **安全性**:Tuxedo支持认证和授权机制,保护系统资源不被非法访问。 4. **监控和管理**...

    银行调度(未参考张孝祥)

    【银行调度】是一种在金融行业中常见的系统设计问题,它的核心目标是高效、公平地处理大量并发的银行业务请求。在不参考张孝祥的视频情况下,我们可以基于对银行业务的理解和编程经验,探讨如何实现这样的调度系统。...

    MySql数据库设计技巧

    8. 适当的事务隔离级别:根据并发需求和应用性质,选择合适的事务隔离级别,如READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ或SERIALIZABLE,以平衡并发性和一致性。 9. 优化查询语句:避免全表扫描,尽量...

    达梦数据库_SQL语言手册

    性,它保证同一事务内的可重复读,为此提供用户多种手动上锁语句,和设置事务隔离级别 第1章结构化查询语言简介 语句 所支持的数据类型 数据类型是可表示值的集。值的逻辑表示是字值。值的物理表示依赖于实现。...

    2008年上半年全国软考数据库系统工程师试卷

    熟悉几种并发控制机制,如锁定协议(共享锁和排他锁)、多版本并发控制(MVCC)和时间戳排序算法。 7. 数据库性能优化:学习索引的类型和使用,以及如何通过索引来提升查询性能。理解查询优化器的工作原理,了解...

    数据库的安全与控制PPT优秀资料.ppt

    6. 并发控制:在多用户环境中,事务是确保数据一致性的重要机制。事务包括一系列数据库操作,必须以原子、一致、隔离和持久的方式执行。并发控制通过锁、两阶段提交等机制避免并发操作导致的数据不一致。 7. 数据库...

    电子政务-具有消息缓存及自动重传功能的电商系统.zip

    1. **消息缓存**:在高并发、大数据量的电商环境中,消息缓存是一种有效提升系统性能的技术。它通过存储并暂时保存用户请求或系统产生的消息,减少对数据库的直接访问,从而降低系统负载。常见的缓存技术包括Redis、...

    数据库的安全性——基于SQL SERVER.pdf

    并发性控制同样是数据库安全性的关键方面,DBMS通过锁机制和事务隔离级别来管理多个用户同时访问和修改数据的情况,以防止数据的不一致性和潜在冲突。 最后,数据库恢复是应对数据丢失和破坏的最终手段,DBMS需要...

    数据库试卷与答案解析.doc

    数据库还通过事务管理保证数据的一致性和完整性,事务必须具备原子性(不可分割的完整操作)、一致性(事务前后数据库状态一致)、隔离性(并发事务间无干扰)和持久性(事务一旦提交,结果就永久保存)。...

    ATM系统设计分析及java源代码

    Java作为一种跨平台的面向对象编程语言,以其优秀的可移植性和安全性,常被用于开发银行级别的软件系统。 ATM系统的架构通常分为前端用户界面和后端服务器两部分。前端负责与用户交互,提供友好的图形用户界面,如...

    2021年广东工业大学数据库考试考试重点

    基本的封锁类型有几种,简要说明它们的含义。** - **封锁**:事务在对某个数据对象进行操作前,向系统申请对该数据对象加锁,以确保事务在其执行期间不会被其他事务干扰。这种机制有助于保证事务的隔离性和一致性。...

    分布式操作系统

    9. **分布式事务处理**:为了确保数据一致性,分布式系统可能需要支持事务处理,包括ACID属性(原子性、一致性、隔离性和持久性)。 10. **网格计算与云计算**:分布式操作系统也是现代网格计算和云计算的基础,...

    java开发面试题文思

    对象的状态可以分为以下几种:创建、初始化、使用、销毁等阶段。其中,类的加载机制是确保对象正确创建和初始化的基础。 - **类加载机制**:Java中的类加载是由类加载器(ClassLoader)完成的。类加载过程主要包括...

    鲁棒的数据库持久层设计

    3. **事务管理**:支持多种事务隔离级别,满足不同的业务需求。 4. **安全性**:保护数据免受非法访问和修改。 5. **可扩展性**:能够轻松地添加新功能或支持新的数据库类型。 6. **兼容性**:支持多种数据库系统,...

Global site tag (gtag.js) - Google Analytics