zoukankan      html  css  js  c++  java
  • Java基础——事务

    一、事务

    简单点说,事务就是一件事情。所有与事务相关的内容都是围绕这一件事情展开的。

    二、事务的特性:ACID

    A:Atomicity(原子性),事务必须是一个不可分割的整体。

    C:Consistency(一致性),执行完数据库操作后,数据不会被破坏。如:从 A 账户转账到 B,要保证 A 账户扣钱后,B 账户能增加对应的钱数。

    I:Isolation(隔离性),多个人对同一条数据同时进行操作时,若不加以控制,会产生非常大的麻烦。而这个控制就是指隔离性。

    D:Durability(持久性),若执行一条 insert 语句,数据库必须保证一条数据永久地存放到数据库中。

    事务的 ACID 特性,都是为了保证数据的一致性。隔离性是保证事务一致性的手段。

    三、事务的隔离级别(Transanction Isolation Level)

    上面说过,事务的隔离性。所说的控制,就是指这里的隔离级别。

    (1)READ_UNCOMMITED:读未提交

    (2)READ_COMMITED:读已提交

    (3)REPEATABLE_READ:可重复读

    (4)SERIALIZABLE:

    从上往下,并发性越来越差,安全性越来越高。

    四、事务中存在的问题

    (1)脏读——事务 A 读取了事务 B 未提交的数据,并在这个基础上又做了其他操作。

    (2)不可重复读——事务 A 读取了事务 B 已提交的更改数据。

    (3)幻读——事务 A 读取事务 B 已提交的新增的数据。

    不论是在什么情况下,脏读都是不被允许的。

    五、事务的隔离级别与事务中存在的问题的对应关系

    其实事务的隔离级别的存在本身就是为了解决事务中出现的问题。

    MySQL 默认的隔离级别为 READ_COMMITED。

    需要提醒的是,这里所说的事务隔离级别规范是 JDBC 提出来的。

    到数据库级,隔离级别是通过锁来控制的,当插入数据时,锁定表,叫“锁表”。当更新数据时,锁定行,叫“锁行”。

    六、总结为一张图

  • 相关阅读:
    仰视源代码,实现strcmp
    Wicket实战(一)概述
    在弱网传输的情况下,是怎么做到节约流量的(面试小问题,Android篇)
    nRF52832之硬件I2C
    Android开源项目SlidingMenu的学习笔记(一)
    MVC设计模式
    报表应用结构优化之数据分库存储
    extern "C" 的含义:实现C++与C及其他语言的混合编程
    phpstorm改变文件编码由utf变为gbk
    mysql database 格式的查看和改变
  • 原文地址:https://www.cnblogs.com/solverpeng/p/5720306.html
Copyright © 2011-2022 走看看