• 数据库事务


    数据库隔离级别

    ReadCommitted
     在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。
     
    ReadUncommitted
     可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。
     
    RepeatableRead
     在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。
     
    Serializable
     在DataSet上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。
     

    SQL 事务处理模型事务有三种模型:
    1.隐式事务是指每一条数据操作语句都自动地成为一个事务,每个事务都有显式的开始和结束标记。
    2.显式事务是指有显式的开始和结束标记的事务,事务的开始是隐式的,事务的结束有明确的标记。
    3.自动事务是系统自动默认的,开始和结束不用标记。
    并发控制
    1. 数据库系统一个明显的特点是多个用户共享数据库资源,尤其是多个用户可以同时存取相同数据。
    串行控制:如果事务是顺序执行的,即一个事务完成之后,再开始另一个事务
    并行控制:如果DBMS可以同时接受多个事务,并且这些事务在时间上可以重叠执行。
    2.并发控制概述
    事务是并发控制的基本单位,保证事务ACID的特性是事务处理的重要任务,而并发操作有可能会破坏其ACID特性。
    DBMS并发控制机制的责任:
    对并发操作进行正确调度,保证事务的隔离性更一般,确保数据库的一致性。
    如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。由于并发操作带来的数据不一致性包括:丢失数据修改、读”脏”数据(脏读)、不可重复读、产生幽灵数据。
    (1)丢失数据修改
    当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。
    (2)读“脏”数据(脏读)
    读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被除撤消,而此时T1把已修改过的数据又恢复原值,T2读到的数据与数据库的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
    ( 3)不可重复读
    在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。

    (4)产生幽灵数据
    按一定条件从数据库中读取了某些记录后,T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失; T1按一定条件从数据库中读取某些数据记录后,T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。

  • 相关阅读:
    devel包
    Tomcat性能调优
    详述Oracle RAC的五大优势及其劣势
    Oracle实例内存(SGA和PGA)调整
    ubuntu upstart启动流程分析
    Python爬虫示例
    Tcp连接的七次握手浅析
    Apache的prefork模式和worker模式
    减少mysql主从数据同步延迟
    Ubuntu14.04 64bit安装Android-Studio
  • 原文地址:https://www.cnblogs.com/davidwang/p/2888348.html
Copyright © 2020-2023  润新知