首页 > 数据库 >openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例

openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例

时间:2023-12-27 19:01:38浏览次数:28  
标签:INSERT 事务 运维 示例 T2 开启 T1 openGauss 执行

openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例

本章节以表test为例,分别介绍相同表的INSERT和DELETE并发,相同表的并发INSERT,相同表的并发UPDATE,以及数据导入和查询的并发的执行详情。

CREATE TABLE test(id int, name char(50), address varchar(255));

175.1 相同表的INSERT和DELETE并发

事务T1:

START TRANSACTION;
INSERT INTO test VALUES(1,'test1','test123');
COMMIT;

事务T2:

START TRANSACTION;
DELETE test WHERE NAME='test1';
COMMIT;

场景1:

开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后,执行事务T2的DELETE,此时显示DELETE 0,由于事务T1未提交,事务2看不到事务T1插入的数据;

场景2:

  • READ COMMITTED级别

    开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后,提交事务T1,事务T2再执行DELETE语句时,此时显示DELETE 1,事务T1提交完成后,事务T2可以看到此条数据,可以删除成功。

  • REPEATABLE READ级别

    开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后,提交事务T1,事务T2再执行DELETE语句时,此时显示DELETE 0,事务T1提交完成后,事务T2依旧看不到事务T1的数据,一个事务中前后查询到的数据是一致的。

175.2 相同表的并发INSERT

事务T1:

START TRANSACTION;
INSERT INTO test VALUES(2,'test2','test123');
COMMIT;

事务T2:

START TRANSACTION;
INSERT INTO test VALUES(3,'test3','test123');
COMMIT;

场景1:

开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后,执行事务T2的INSERT语句,可以执行成功,读已提交和可重复读隔离级别下,此时在事务T1中执行SELECT语句,看不到事务T2中插入的数据,事务T2中执行查询语句看不到事务T1中插入的数据。

场景2:

  • READ COMMITTED级别

    开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后直接提交,事务T2中执行INSERT语句后执行查询语句,可以看到事务T1中插入的数据。

  • REPEATABLE READ级别

    开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后直接提交,事务T2中执行INSERT语句后执行查询语句,看不到事务T1中插入的数据。

175.3 相同表的并发UPDATE

事务T1:

START TRANSACTION;
UPDATE test SET address='test1234' WHERE name='test1';
COMMIT;

事务T2:

START TRANSACTION;
UPDATE test SET address='test1234' WHERE name='test2';
COMMIT;

事务T3:

START TRANSACTION;
UPDATE test SET address='test1234' WHERE name='test1';
COMMIT;

场景1:

开启事务T1,不提交的同时开启事务T2,事务T1开始执行UPDATE,事务T2开始执行UPDATE,事务T1和事务T2都执行成功。更新不同行时,更新操作拿的是行级锁,不会发生冲突,两个事务都可以执行成功。

场景2:

开启事务T1,不提交的同时开启事务T3,事务T1开始执行UPDATE,事务T3开始执行UPDATE,事务T1执行成功,事务T3等待超时后会出错。更新相同行时,事务T1未提交时,未释放锁,导致事务T3执行不成功。

175.4 数据导入和查询的并发

事务T1:

START TRANSACTION;
COPY test FROM '...';
COMMIT;

事务T2:

START TRANSACTION;
SELECT * FROM test;
COMMIT;

场景1:

开启事务T1,不提交的同时开启事务T2,事务T1开始执行COPY,事务T2开始执行SELECT,事务T1和事务T2都执行成功。事务T2中查询看不到事务T1新COPY进来的数据。

场景2:

  • READ COMMITTED级别

    开启事务T1,不提交的同时开启事务T2,事务T1开始执行COPY,然后提交,事务T2查询,可以看到事务T1中COPY的数据。

  • REPEATABLE READ级别

    开启事务T1,不提交的同时开启事务T2,事务T1开始执行COPY,然后提交,事务T2 查询,看不到事务T1中COPY的数据。

标签:INSERT,事务,运维,示例,T2,开启,T1,openGauss,执行
From: https://blog.51cto.com/shuchaoyang/9003322

相关文章

  • openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作
    openGauss学习笔记-174openGauss数据库运维-备份与恢复-导入数据-管理并发写入操作174.1事务隔离说明openGauss基于MVCC(多版本并发控制)并结合两阶段锁的方式进行事务管理,其特点是读写之间不阻塞。SELECT是纯读操作,UPDATE和DELETE是读写操作。读写操作和纯读操作之间并不会发......
  • LinkSLA管家式运维:为企业打造定制化 IT 支持体系
    引言在数字化转型的浪潮中,企业信息系统繁多,涉及人员复杂,且企业经营管理活动对IT系统的依赖程度越来越高。传统的运维模式已经不能满足企业对运维工作全面性、灵活性、稳定性和安全性的需求。管家式运维作为一种新型服务模式,以其个性化和全面性的服务理念,为企业带来了更为精细和高效......
  • JWT 简介与 C# 示例
    〇、什么是JWT?JWT,即JSONWebToken,是一种基于JSON的开放标准(RFC7519),主要用于在网络应用环境间安全地传递声明。这种声明被进行了数字签名,可以验证和信任,因此,它适用于各种需要信息安全性和无状态的应用。在具体加密过程中,客户端会使用RSA算法生成JWT串,这里用到了私钥“......
  • 智能变电站协议系列-1、GOOSE、SV、MMS协议简介及GOOSE示例运行问题(IEC61850)
    文章目录一、前言二、资料准备三、智能变电站自动化系统架构四、GOOSE、MMS、SV协议以及其他协议1、GOOSE(通用面向对象变电站事件)协议2、MMS(制造消息规范)协议3、采样值(SV)协议4、数字化变电站中使用的其他协议遗留协议五、IEC61580的开源C库GOOSE协议示例运行问题1、协议栈选择......
  • 监控易:精细化运维工单与知识库管理系统
       在当今数字化时代,运维管理作为企业运营的核心环节,其高效性和智能化越来越受到重视。我们针对这一需求,监控易推出的运维管理工具——工单与知识库管理系统,旨在帮助企业实现更智能、更高效的运维管理。 一、工单管理:全面掌握运维任务状态   监控易工单与知识库管理系......
  • 监控易:网络设备运维,助力企业集中统一监控
       监控易作为一款卓越的运维管理工具,始终秉持以设备为核心的监控管理理念,帮助企业实现对各类设备的全面、高效、可靠的监控管理。以下是监控易在设备运维管理方面的核心理念和优势功能的详细介绍。一、设备接入与管理   监控易支持将各类设备(如服务器、应用和业务、网......
  • 【flink番外篇】6、flink的WaterMark(介绍、基本使用、kafka的水印以及超出最大允许延
    Flink系列文章一、Flink专栏Flink专栏系统介绍某一知识点,并辅以具体的示例进行说明。1、Flink部署系列本部分介绍Flink的部署、配置相关基础内容。2、Flink基础系列本部分介绍Flink的基础部分,比如术语、架构、编程模型、编程指南、基本的datastreamapi用法、四大基......
  • Linux openEuler(欧拉系统)无公网实现ssh远程连接(高效运维!)
    欧拉操作系统(openEuler,简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘openEuler是面向数字基础设施的操作系统,支持服务器、云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于提供安全、稳定、易用的操作系统Cpolar是一种安全的内网穿透云服务,......
  • openGauss学习笔记-172 openGauss 数据库运维-备份与恢复-导入数据-分析表172.1 分析
    openGauss学习笔记-172openGauss数据库运维-备份与恢复-导入数据-分析表执行计划生成器需要使用表的统计信息,以生成最有效的查询执行计划,提高查询性能。因此数据导入完成后,建议执行ANALYZE语句生成最新的表统计信息。统计结果存储在系统表PG_STATISTIC中。172.1分析表ANALYZE......
  • openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM
    openGauss学习笔记-173openGauss数据库运维-备份与恢复-导入数据-对表执行VACUUM如果导入过程中,进行了大量的更新或删除行时,应运行VACUUMFULL命令,然后运行ANALYZE命令。大量的更新和删除操作,会产生大量的磁盘页面碎片,从而逐渐降低查询的效率。VACUUMFULL可以将磁盘页面碎片恢......