iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >数据库事务
  • 823
分享到

数据库事务

2024-04-02 19:04:59 823人浏览 薄情痞子
摘要

事务的四个特性 (ACID) ,分别是原子性( Atomicity), 一致性( Consistency), 隔离性( Isolation), 持久性( Durability)。一致性是事务的目的,原子性,

事务的四个特性 (ACID) ,分别是原子性( Atomicity), 一致性( Consistency), 隔离性( Isolation), 持久性( Durability)。一致性是事务的目的,原子性,隔离性,持久性是一致性的必要条件。

隔离性:多个并发事务之间要相互隔离,对于两个并发的事务T1和T2,T1和T2的开始有先后顺序,这样每个事务都感觉不到有其他事务在并发地执行。

隔离级别有四种:

1、串行Serializable :最严格的级别,事务串行执行,资源消耗最大。

2、可重复读REPEATABLE READ :保证了事务T1不会修改事务T2未提交的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。

3、读取已提交READ COMMITTED :保证了事务T1不会读到事务T2未提交的数据,避免了“脏读取”。

4、读取未提交Read Uncommitted :读取过程中会读取到非法数据。

脏读、幻读、不可重复读的区别:

脏读是T1读取了T2未提交的数据。

不可重复读则是读取了前一事务提交的数据,在某些情况下,不可重复读并不是问题,以最终查询的结果为准。

不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。

四种隔离级别与读取事务和写事务:

读取未提交,读不会阻塞任何事务,写只阻塞写,会导致读出现脏读、不可重复读、幻影读。

读取已提交,读不会阻塞任何事务,写阻塞读、写,因为写阻塞读,排除“脏读” 问题,但是读还是不阻塞写,不可重复读、幻影读会出现。

可重复读,读只阻塞写,写阻塞读、写,读阻塞写避免了“不可重复读”的问题,但是读事务并没有阻塞对数据库的插入操作,所以此 时“幻影读”问题照样存在。

Serializable 数据库系统会保证执行此种隔离级别事务的效果和顺序执行的效果一致。


默认的隔离级别:

Mysql:可重复读。

oracle:只支持串行化和读已提交这两种级别,默认:读已提交。


并发控制:

在每个读的数据行上加上共享

此时我们一般采用READ COMMITTED的隔离级别,然后再结合以下几种并发控制的锁定策略:

* 乐观所 版本号重试

* 悲观锁 for update

* 乐观离线锁

* 悲观离线锁

事务常用的两个属性:readonly和timeout,设置事务的超时时间,防止大事务的发生。


事务模型解析

平面事务模型:本地事务和JTA 事务。

事务管理涉及到的几个参与者:

1 资源管理器( Resource Manager) :资源管理器一般是数据库管理系统。

2 分布式事务协调者( Distributed Transaction Coordinator,DTC):此功能一般是由我们所用的 JavaEE 应用服务器实现,比如 jboss,WEBsphere,weblogic 等。这个角色只有在 JTA 事务中才会存在。

3 事务管理器 (Transaction manager) :每一个事务管理器都与相应的资源管理器所关联,它负责对分布式事务进行提交或者回滚。

4 应用程序( Application)

以上四者的关系可以用以下的图形来形象的表述:

数据库事务


在日常的系统开发中,我们一般都会使用数据资源(比如数据库)来对系统的状态进行保存,那么我们根据系统涉及的数据资源的多少,将事务分为RESOURCE-LOCAL事务或者JTA全局分布式事务。

1 RESOURCE-LOCAL事务

 RESOURCE-LOCAL事务是指只有一个资源管理(RM) 的事务,事务操作都是对同一个数据库进行操作。

 此时事务协调着和事务管理器的作用就有底层的资源管理器来实现了。比如目前我们在采用spring来管理事务的时候,其实spring并没有事务功能,它仅仅是封装了底层数据库的事务操作而已。

2 全局事务或者JTA事务

国际上提出了一种分布式事务解决方案的标准OTS(Object Transaction Service),JavaEE 对OTS 做了实现,即JTS(Java Transaction Service ),java 又提供了操作JTS 的上层接口 JTA (Java Transaction api

全局事务是涉及多个资源管理器,此时需要引入事务协调者(可以理解为全局事务管理器,可基于可靠消息实现)来进行调节

通信协议:

1、应用服务器与事务管理器通过TX协议通信。

2、事务管理器与资源管理器通过XA协议通信。

3、事务管理器之间通过XA+(XA协议超集)协议通信。

提交过程:

两阶段提交协议2PC(two phase commit) 

第一阶段:事务协调者发送“准备提交”消息给事务所涉及的所有的事务管理器,然后事务管理器又分送此消息给相应的资源管理器,然后事务管理器又将资源管理的响应情况告诉分布式事务协调着(DTC). 只有此阶段顺利完成后(既所有的资源管理器都同意提交事务),才会进入第二阶段。

第二阶段:当第一个阶段顺利完成后,事务协调者告诉事务管理器去提交事务

分布式最终一致性理论:

CAP理论:

C(一致性)在分布式环境下多个节点数据是否一致;

A(可用性)服务一直保持可用的状态;

P(分区容忍性)在分布式应用中,可能因为一些分布式的原因导致系统无法运转,好的分区容忍性,使应用虽然是一个分布式系统,但是好像一个可以正常运转的整体

BASE理论:

BA: Basic Availability 基本业务可用性;

S: Soft state 柔性状态;

E: Eventual consistency 最终一致性;


您可能感兴趣的文档:

--结束END--

本文标题: 数据库事务

本文链接: https://www.lsjlt.com/news/48093.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库事务
    事务的四个特性 (ACID) ,分别是原子性( Atomicity), 一致性( Consistency), 隔离性( Isolation), 持久性( Durability)。一致性是事务的目的,原子性,...
    99+
    2024-04-02
  • Django数据库--事务及事务回滚
    数据库的读写操作中,事务在保证数据的安全性和一致性方面起着关键的作用,而回滚正是这里面的核心操作。Django的ORM在事务方面也提供了不少的API。有事务出错的整体回滚操作,也有基于保存点的部分回滚。本文将讨论Django中的这两种机制...
    99+
    2023-01-30
    事务 数据库 Django
  • 数据库 事务的特性ACID
    事务(Transaction)是并发控制的基本单位。    所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个...
    99+
    2024-04-02
  • 达梦数据库事务管理
    1.事务介绍   数据库中由用户自定义发起的一些列操作集合简称事务。只要可以连接数据库中进行一组操作序列都可以称为事务。   COMMIT 操作会将该语句所对应事务对数据库的所有更新持久化(即写入磁盘),数据库此时进入一个新的一致性状态,同...
    99+
    2023-09-24
    数据库 java mysql
  • 数据库中事务的定义
    这篇文章主要介绍“数据库中事务的定义”,在日常操作中,相信很多人在数据库中事务的定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库中事务的定义”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
  • MySQL数据库索引和事务
    目录1. 索引 1.1 概念 1.2 作用 1.3 索引的原理 1.3.1 减少磁盘的访问次数是构建索引的核心思想 1.3.2 B+ 树适用实现索引的底层 1.4 适用场景 1.5 ...
    99+
    2024-04-02
  • Spring学习JdbcTemplate数据库事务参数
    目录Spring JdbcTemplate数据库事务参数一、propagation1. REQUIRED2. REQUIRES_NEW3. SUPPORTS4. NOT_SUPPOR...
    99+
    2024-04-02
  • 数据库事务隔离的级别
    本篇内容介绍了“数据库事务隔离的级别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 概述与背景这是数据库...
    99+
    2024-04-02
  • 【MySQL数据库 | 第十五篇】事务
        目录    前言:  介绍事务:  控制事务:  事务四大特性:  并发事务问题:  事务隔离级别: 总结:    前言: 这章我们将进入到MySQL基础篇的最后一章:事务,希望大家可以坚持下去,跟着我一起走完MySQL的学...
    99+
    2023-09-03
    数据库 mysql java
  • MySQL数据库事务的示例分析
    小编给大家分享一下MySQL数据库事务的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!事务特点:ACID从业务角度出发,...
    99+
    2024-04-02
  • 数据库事务的特性有哪些
    这篇文章将为大家详细讲解有关数据库事务的特性有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。数据库四大特性分别是:原子性、一致性、分离性、持久性原子性 ...
    99+
    2024-04-02
  • 分析sqlserver2008跨数据库事务测试
    本篇内容介绍了“分析sqlserver2008跨数据库事务测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • spring学习JdbcTemplate数据库事务管理
    目录spring JdbcTemplate数据库事务管理一、spring 中的事务管理二、spring 事务管理 API三、使用事务管理1. 配置文件2. 类上添加事务注解sprin...
    99+
    2024-04-02
  • MySQL数据库事务原理及应用
    目录1 事务的使用1.1 事务概念1.2 事务的提交1.3 事务的常见操作2 事务隔离2.1 事务并发时出现的问题2.2 事务隔离级别1 事务的使用 1.1 事务概念 事务就是一组DML语句组成,这些语句在逻辑上存在相关...
    99+
    2023-04-27
    MySQL数据库事务 MySQL数据库事务管理
  • 数据库事务的有哪些特征
    这篇文章给大家分享的是有关数据库事务的有哪些特征的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。数据库事务的四个特征是:1、原子性,事务是数据库的逻辑工作单位,事务中的操作要么全做...
    99+
    2024-04-02
  • MySQL数据库的触发器和事务
    目录一、触发器概念二、 触发器的操作触发器的增删改操作触发器的查看删除操作三、事务概念四、事务的操作基本流程基础操作事务的提交方式事务的隔离级别隔离操作一、触发器 概念 触发器是SQ...
    99+
    2022-11-13
    MySQL数据库触发器 MySQL数据库事务
  • 怎么进行数据库事务管理
    数据库事务管理是通过以下步骤来进行的: 开启事务:在执行数据库操作之前,首先要开启事务。可以使用BEGIN TRANSACTIO...
    99+
    2024-03-07
    数据库
  • 阿里云数据库大事
    简介 阿里云数据库大事是指阿里云在数据库领域所取得的重大成就和突破。阿里云作为全球领先的云计算服务提供商之一,一直致力于为用户提供高效、安全、可靠的数据库解决方案。本文将介绍阿里云数据库大事的几个重要方面。1. 阿里云数据库产品线的丰富和多...
    99+
    2024-01-30
    阿里 数据库
  • 数据库事务隔离级别常见问题解答:帮你轻松理解数据库事务机制
    1. 数据库事务隔离级别有哪些? 数据库事务隔离级别通常包括以下四种: 未提交读(Read Uncommitted):事务可以读取其他事务未提交的数据,但这些数据可能最终不会被提交,因此存在脏读的风险。未提交读通常用于对数据一致性要求...
    99+
    2024-02-10
    数据库 事务 隔离级别 并发控制 ACID
  • 数据库中分布式事务是什么
    这篇文章给大家分享的是有关数据库中分布式事务是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。事务什么是事务?这个作为后端开发,日常开发中只要与数据库有交互,肯定就会使用过事务...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作