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要更新但还未提交的内容
      • 不可重复读:有更新操作时,同一个事物内,相同的两次查询,结果不相同
      • 幻读:插入操作时,相同查询结果不同
  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/luckyCoder/p/12732773.html
Copyright © 2011-2022 走看看