首页 > 数据库 >GaussDB数据库事务介绍

GaussDB数据库事务介绍

时间:2023-06-05 21:32:05浏览次数:49  
标签:事务 隔离 GaussDB 提交 操作 数据库

前言

随着大数据和互联网技术的不断发展,数据库管理系统的作用越来越重要,实现数据的快速读写以及保证数据的安全性和完整性成为企业在选择数据库技术时最为关注的问题之一。事务是保证数据一致性和完整性的关键机制之一,因此事务管理在数据库技术中占据了极为重要的位置。在这里我们将着重介绍华为云数据库GaussDB对事务的支持及管理,包括事务应用场景、事务管理、事务语句、事务隔离、事务监控等内容。

GaussDB事务的定义及应用场景

事务是数据库系统中的一个重要概念,通俗来讲,事务就是一组数据库操作看成一个整体,这个整体要么全部执行成功,要么全部撤销。

事务可以应用在并发访问数据库时,保持数据的一致性。一些常见的应用场景包括转账操作、订单修改、银行交易等。在这些场景中,事务的功能是保证操作的原子性,即要么全部执行成功,数据库的值正确地更新,即处于一个“一致状态”,要么出现异常或系统故障,全部回滚至操作前的状态,以保证数据的准确性和完整性。

GaussDB数据库事务介绍_回滚

GaussDB支持ACID事务,即原子性、一致性、隔离性和持久性。在GaussDB中,事务是指一组数据库操作,这些操作要么全部成功,要么全部失败。当一个事务提交时,所有的修改都会被永久保存。如果事务失败,则所有的修改都会被回滚,数据库状态会被还原到事务开始前的状态。GaussDB还支持分布式事务(集群事务),可以涉及到多个节点的事务(本次不做重点介绍)。

· 原子性(Atomicity):事务是数据库的逻辑工作单位,事务中的操作,要么都做, 要么都不做。

· 一致性(Consistency):事务的执行结果必须是使数据库从一个一致性状态转到另一 个一致性状态。

· 隔离性(Isolation):数据库中一个事务的执行不能被其他事务干扰。即一个事务 的内部操作及使用的数据对其他事务是隔离的,并发执行的 各个事务不能相互干扰。

· 持久性(Durability):事务一旦提交,对数据库中数据的改变是永久的。提交后的 操作或者故障不会对事务的操作结果产生任何影响。

GaussDB数据库事务介绍_数据_02

GaussDB事务的管理

事务管理是指在使用数据库系统时,对事务的开启、提交、回滚、保存点、分布式事务等进行管理:

· 

启动事务:GaussDB通过START TRANSACTION和BEGIN语法启动事务

· 

· 

设置事务:GaussDB通过SET TRANSACTION或者SET LOCAL TRANSACTION语法设置事务

· 

· 

提交事务:GaussDB通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作

· 

· 

回滚事务:回滚是在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销

· 

存储过程本身就处于一个事务中,开始调用最外围存储过程时会自动开启一个事务,在调用结束时自动提交或者发生异常时回滚。除了系统自动的事务控制外,也可以使用COMMIT/ROLLBACK来控制存储过程中的事务。在存储过程中调用COMMIT/ROLLBACK命令,将提交/回滚当前事务并自动开启一个新的事务,后续的所有操作都会在此新事务中运行。


示例1:启动一个事务

GaussDB数据库事务介绍_数据库_03

示例2:设置事务     

GaussDB数据库事务介绍_数据_04

示例3:支持在PLSQL的存储过程内使用COMMIT/ROLLBACK。   

GaussDB数据库事务介绍_回滚_05

运行结果:

GaussDB数据库事务介绍_回滚_06

在GaussDB中,控制管理事务可以采用两个方法:原子性和隔离性。原子性指一组操作要么全部执行,要么全部不执行。隔离性指一个事务的操作不受其他事务干扰,保证并发执行时数据的一致性。       

更多事务管理过程中的使用场景(支持/不支持调用的上下文环境),请参见官网示例:

https://support.huaweicloud.com/centralized-devg-v2-opengauss/devg_03_0713.html

GaussDB事务语句  

事务语句可以看作是在事务中执行的一组语句,常见的事务语句有insert、update、delete等。       

GaussDB支持事务语句,事务语句组合成一组原子性、隔离性和一致性的操作。例如,下面的所有查询都包含在同一个事务小片中。如果有任何一个查询失败,整个事务将回滚。以下是事务语句的例子:

GaussDB数据库事务介绍_数据库_07

GaussDB数据库事务介绍_回滚_08

GaussDB事务隔离

GaussDB支持的事务隔离级别包括:Read Uncommitted(读未提交)、Read Committed(读提交)、Repeatable Read(重复读)、Serializable(序列化,Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不建议使用)。

语法:

GaussDB数据库事务介绍_回滚_09

1. Read Uncommitted 隔离级别:最低的隔离级别,它允许提交了但尚未被写入磁盘的事务修改的数据被其他事务所读取。

GaussDB数据库事务介绍_数据_10

2. Read Committed 隔离级别:这个级别保证一个事务所见到的数据,要么是提交事务所修改的(已经将数据更新至磁盘),要么就是其他提交事务所修改的。         

GaussDB数据库事务介绍_回滚_11


3. Repeatable Read 隔离级别:保证在一个事务内重复执行的查询返回的结果集是一样的。特别地,在这个级别的情况下,在事务中第一次读表时就会自动获取到所有被查询记录的共享锁,直到关闭连接为止。  

GaussDB数据库事务介绍_数据_12


4. Serializable 隔离级别:这个级别最高,实现方法是对数据进行锁定,以保证在写操作(INSERT、DELETE 和 UPDATE 等)期间数据不会被访问。

GaussDB数据库事务介绍_回滚_13

事务监控是指对事务进行实时的监控,包括事务的状态、执行时间、执行语句、执行结果等。

GaussDB事务监控   


事务监控可以对数据库操作进行记录和追踪,包括事务开始和结束的时间、事务中执行的语句、事务提交或回滚的状态等。可以通过这些信息来监控事务的执行情况,优化性能和调整配置。

华为云数据库GaussDB支持ACID事务,事务隔离级别支持读已提交、可重复读、序列化三种,并具有分布式事务支持功能。在实际应用中,GaussDB的事务机制可适用于金融账务、电商订单、物流管理等多种场景。

例如,在电商订单场景中,可以在一个事务中包含插入订单、更新库存、生成支付信息等相关操作,确保这些操作全部成功或全部失败,而不会出现其中某个操作提交,其他操作失败的情况。        

而在日常开发中,要注意对事务的合理使用,避免在一个事务中执行过多的操作,尽可能缩小事务的范围,减少事务的执行时间,从而提高系统的并发性能。

事务监控可以对数据库操作进行记录和追踪,包括事务开始和结束的时间、事务中执行的语句、事务提交或回滚的状态等。可以通过这些信息来监控事务的执行情况,优化性能和调整配置。以下是事务监控的示例:

1. 查看活动事务信息(PG_PREPARED_XACTS视图显示当前准备好进行两阶段提交的事务的信息)

GaussDB数据库事务介绍_数据库_14

2. 查看事务状态(PG_STAT_ACTIVITY视图显示和当前用户查询相关的信息。)   

GaussDB数据库事务介绍_数据_15

总结 

事务是保证数据一致性和完整性的核心机制之一,对于一个数据库来说,事务的支持和管理是必须的。GaussDB通过支持手动和自动管理事务、事务隔离级别以及事务监控等功能,满足了企业对数据一致性和完整性的需求。在日常开发中,需要特别注意事务的控制和隔离,以保证事务的正确执行,从而提高数据的可靠性和安全性。



本文介绍到此结束,更多操作可在实际应用中参考官方文档。


标签:事务,隔离,GaussDB,提交,操作,数据库
From: https://blog.51cto.com/u_16102901/6419322

相关文章

  • 再识华为云数据库——GaussDB
    前言华为云数据库GaussDB是一款拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。同时具有PB级海量数据存储、实时高效访问、自动化运维等特点,广泛应用于金融、电信、物流、电商、政体......
  • 数据库习题一
    8.数据库管理系统的功能主要有哪些方面?有效地组织、存取和维护数据数据的定义功能数据的操纵功能数据库的事务管理和运行管理数据库的建立和维护功能9.调查业界常用的数据库管理系统软件,简要叙述其中1~2个产品的情况。Oracle;sqlServer;人大金仓kingbase;达梦DMsqlServ......
  • 亿级 GPS 数据处理用 NoSQL、MySQL 还是 HBase?数据库选型看这里
    在车联网场景下,GPS产生的时序数据量级通常都达到了亿级,高效写入、存储和快速查询是最基本的数据处理要求,但在具体实践上这却不是一件容易实现的事情。最近某企业就遇到了这样一个问题:服务端接收存储GPS相关数据,按1次/30秒的上传频率,一天的数据条数估计在1.2亿条,其想要实......
  • 数据库分库分表操作——假如用户注册人数过亿
    如果用户注册人数过亿,数据信息量大。此时就需要考虑分库分表单库分表垂直拆分和水平拆分垂直拆分       拆分列 水平分表——常见    本质把大表拆分小表——Id取模分表数据迁移问题:如果一开始将数据预估量很大。建议根据id范围分表。——多用于分......
  • 近万条儿童科普知识大全ACCESS\EXCEL数据库
    仍然从昨天采集的儿童教育网站中采集了上万条的儿童科普知识,因为其分类和内容都比较符合儿童(很多大人也都不知道哦),对儿童的教育、对儿童的知识面会起到很好的作用,用处也广只要是儿童教育方面的都可以使用。分类情况统计:暴风雪里的夏天(25)、地球家园(211)、动物(314)、海洋技术(41)、健......
  • GaussDB存储过程介绍
    前言华为云数据库GaussDB是一款高性能、高安全性的云原生数据库,在数据库领域处于领先地位。而在GaussDB中,存储过程是一个不容忽视的重要功能。本文将深入介绍GaussDB存储过程的使用场景、使用优缺点、示例及示例解析、调用方法等方面,为读者提供全方位的指导与帮助。存储过程是一个......
  • GaussDB如何给世界一个更优选择?
    华为云CEO张平安11月7日,华为全联接大会2022第一天,华为云CEO张平安在主题演讲中,专门有一页PPT谈到了GaussDB信息量很大,不仅特别强调“GaussDB云原生交易数据库,给世界一个更优选择”,同时,还分享了2个案例和一些数据。华为云特别强调“云原生交易数据库”而非常规的“云原生数据......
  • GaussDB数据类型介绍
    GaussDB数据库GaussDB是华为基于openGauss自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数值、字符、日期等。在使用GaussDB时,可能需要进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍一些常见的数据类型转换方法等。     数据类型......
  • java通过实体类生成数据库表 并生成注释
    java通过实体类生成数据库表并生成注释 方式一   使用A.C.Table A.C.Table是对Mybatis做的增强功能,实现了mybatis自动建表的能力官方地址:https://gitee.com/sunchenbin/mybatis-enhance文档地址:https://www.yuque.com/sunchenbin/actable/ag3y1y 项目结构 ......
  • 002 数据库学习笔记
    约束:规定表中的数据规则的一种方式。数据必须规范,如果违法约束行为,则无法被执行。注:建表前,建表后,都可以创建约束。约束分类:主键、外键、Unique约束、Check约束、Default约束主键:Primarykey约束;唯一、非空、不可修改;外键:Foreiignkey约束,加强两张表中的一列或多列数据......