zoukankan      html  css  js  c++  java
  • 什么是事务,事务的特性,事务的并发问题,事务的隔离级别

    (1)     什么是事务?

    事务就是被绑定在一起,作为一个逻辑工作单元的sql语句组。

    (2)     事务的特性(ACID)

    ①    原子性:是一个逻辑工作单元,要么都成功,要么都失败。如果事务执行过程当中,有任意一个sql语句出现异常,则整个事务回滚。

    ②    一致性:数据库数据必须从一个一致状态到另外一个一致状态,逻辑上不能出现错误。

         例如转账 张三给李四转100块钱。 如果事务成功,那么张三一定减一百,李四一定加一百。如果事务失败,张三扣的一百一定会滚到原状态。

    ③    隔离性:一个事务与另外一个事务之间不能相互干扰。通常数据库可以设定不同的事务隔离级别。

    ④    持久性:事务一旦提交,对数据的修改是永久的。

    (3)     事务的并发问题

    在多线程的情况下,多个用户同时对一条数据做操作,那么就可能导致数据库操作结果不正确。常见的问题有三个:

    ①    脏读:A事务读取到了B事务没有提交的数据,如果B事务回滚啦,那么A事务读取到的就是脏数据。我们称之为脏读。

    ②    不可重复读:在同一个事务中,对同一份数据多次读取的结果不一致。原因在于读取期间,其他事务修改了该数据。事务并发修改导致。

    ③    幻读:在同一个事务中,多次同样的查询返回的记录条数不同。原因在执行期间,其他事务对记录进行了增加和删除操作。

    (4)     为了解决并发问题,数据库提供了事务的隔离级别的设定。主要的隔离级别有四个:

    ①    读未提交:级别最低,事务能够读取到另外一个事务没提交的内容,不能解决任何并发问题。

    ②    读已提交:可以避免脏读。

    ③    可重复读:可以避免脏读和不可重复读。

    ④    串行化:最高级别。可以避免脏读,不可重复读,和幻读。但是效率低。

    Oracle中只有读已提交和串行化两种事务隔离级别。默认是读已提交。

  • 相关阅读:
    2006百度之星
    使用StretchBlt之前一定要用SetStretchBltMode(COLORONCOLOR)
    算法学习建议(转)
    让ARM开发板上SD卡里的程序开机自动运行
    我的Dll(动态链接库)学习笔记
    WinCE 应用程序开机自动运行的又一种方法
    讲讲volatile的作用
    用Platform builder定制WinCE系统
    MFC如何高效的绘图
    利用c语言编制cgi实现搜索
  • 原文地址:https://www.cnblogs.com/xie-qi/p/12879207.html
Copyright © 2011-2022 走看看