zoukankan      html  css  js  c++  java
  • MySQL事物

    MySQL

    1. ACID

    1. 原子性(atomicty):事务只能有要么提交成功与回滚失败
    2. 一致性(consistency):一个事务在执行之前和执行之后,数据库都必须处于一致性状态。若数据库运行过程中发生故障,未完成的事物不会写入数据库
    3. 持久性(durability):事务成功提交,数据会被持久化保存到数据库,之后发生操作系统故障或数据库宕机,重启数据库后,成功提交的数据仍然在数据库中
    4. 隔离性(isolation):并发环境中,并发的事务相互隔离。

    2. 设计思想

    1. Java 事务控制的基本单位:java.sql.Connection
    • 数据库本身与应用建立Connection 连接线程数量有限
    1. java.sql.Connection 重要特性
    • 线性操作 :操作时序 上,事务和事务间执行是线性依次排开执行
    • 不限执行SQL次数:建立连接后可以不限执行事物次数。连接池应用(执行完事务后不关闭事物,放进连接池)
    1. 如何执行线性操作
    • 多线程互斥访问,通过加锁 实现,一个线程中,一个事务有多个SQL操作时,要么全成功要么回滚(原子性)
    1. 连接池管理Connection
    • 管理一批Connection对象,一般会有连接数上限 设置;
    • 为每一个获取Connection请求做资源分配 ;如果资源不足,设置等待时间
    • 根据实际Connection的使用情况,为了提高系统之间的利用率,动态调整连接池中Connection对象的数量 ,如应用实际使用的连接数比较少时,会自动关闭掉一些处于无用状态的连接;当请求量大的时候,再动态创建。

    3. 隔离级别

    1. 锁库:一次只能有一个客户端对数据库访问
    2. 序列化读 (锁全表):
    • 一个客户端访问一张表时,必须在客户端对该表事务提交完成(回滚)后才能进行访问
    • 一个事务操作多张表时,任意一张表会被当作互斥资源访问
    1. 可重复读 (行级锁)
    • 同一张表同行 可以多个客户端访问
    • 幻读(insert) :一个客户端在事物执行过程中对表有插入操作 ,另一个客户端在同一个查询事物前后两次查询返回记录数不一致
    1. 读已提交(update) :读写分离的机制,读是共享锁 可以同时进行,写是互斥锁 ,同时只能有一个写资源的事务。
    • 弊端
      • 不可重复读 :有更新操作时,同一个事物内,相同的两次查询,结果不相同
      • 幻读:插入操作时,相同查询结果不同
    1. 读未提交
    • 弊端 :
      • 脏读 :客户端A读取到了客户端B要更新但还未提交的内容
      • 不可重复读:有更新操作时,同一个事物内,相同的两次查询,结果不相同
      • 幻读:插入操作时,相同查询结果不同
  • 相关阅读:
    Pentaho Data Integration (二) Spoon
    Pentaho Data Integration笔记 (一):安装
    透视纹理引发的对于插值的思考
    读取位图(bitmap)实现及其要点
    关于渲染流水线的几何变化
    关于C++中不同类之间的赋值问题——存疑
    uva 12284 直接判断
    uva 12549 最大流
    uva 12544 无向图最小环
    uva 12587 二分枚举
  • 原文地址:https://www.cnblogs.com/luckyCoder/p/12732773.html
Copyright © 2011-2022 走看看