事务与并发控制

文章目录

  • 事务与并发控制
    • 一、事务
      • (1)事务的ACID特性
      • (2)事务管理
      • (3)事务实例
        • 1.未提交的事务
        • 2.已提交的事务
    • 二、并发控制
      • (1)加锁语法
      • (2)加锁实例

一、事务

(1)事务的ACID特性

  • 原子性(Atomicity):原子事务是一系列不可分割的数据库操作。在事务完成之后,这些操作要么全部发生,要么全部不发生。

  • 一致性(Consistency):事务结束后,数据库处于一致状态,保留数据完整性。

  • 隔离性(Isolation):事务之间不能相互干扰。

  • 持久性(Durability):即使发生崩溃和失败,成功完成(提交)的事务效果持久保存。

(2)事务管理

openGauss数据库支持的事务管理命令有启动、设置、提交、回滚事务。

  • 启动事务(START TRANSACTION | BEGIN)

    START TRANSACTION[   {ISOLATION LEVEL {READ COMMITTED | READ UNCOMMITTED  | SERIALIZABLE | REPEATABLE READ} | {READ WRITE | READ ONLY}} [, ...] ];
    
  • 设置事务(SET TRANSACTION)

    { SET [ LOCAL ] TRANSACTION | SET SESSION CHARACTERISTICS AS TRANSACTION }
    { ISOLATION LEVEL
    {READ COMMITTED | READ UNCOMMITTED  | SERIALIZABLE | REPEATABLE READ} |
    {READ WRITE | READ ONLY}}
    [, ...];
    
  • 提交事务

    { COMMIT | END } [ WORK | TRANSACTION ];
    
  • 回滚事务

    ROLLBACK [ WORK | TRANSACTION ];
    

(3)事务实例

1.未提交的事务

  • 启动事务

    START TRANSACTION;
    

  • 插入数据

    INSERT INTO Students
    VALUES ('201905001', 'BK','男', '2000-01-01','2019',' 计算机','CS');
    

    SELECT * FROM Students;
    

  • 回滚事务

    ROLLBACK;
    

    SELECT * FROM Students;
    

2.已提交的事务

  • 启动事务

    START TRANSACTION;
    

  • 插入数据

    INSERT INTO Students
    VALUES ('201905001', 'BK','男', '2000-01-01','2019',' 计算机','CS');
    

  • 提交事务

    COMMIT TRANSACTION;
    

    SELECT * FROM Students;
    

二、并发控制

(1)加锁语法

LOCK [ TABLE ] {[ ONLY ] name [, ...]| {name [ * ]} [, ...]}[ IN {ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE} MODE ][ NOWAIT ];

(2)加锁实例

  • 创建测试表

    CREATE TABLE TestLock(test CHAR(5));
    

  • 开启事务

    START TRANSACTION;
    

  • 加锁

    LOCK TestLock;
    

  • 查看所有锁

    SELECT  * FROM pg_locks ;
    

  • 提交事务

    COMMIT TRANSACTION;
    

  • 再次查看所有锁

    SELECT  * FROM pg_locks ;
    

【数据库原理实验(openGauss)】事务与并发控制相关推荐

  1. 【数据库原理实验(openGauss)】实验报告

    <数据库系统原理实验>报告 文章目录 <数据库系统原理实验>报告 一.实验课程性质和教学目标 二.实验课程教学基本要求 三.实验教学内容 实验一 认识DBMS系统 (一)实验目 ...

  2. 【数据库原理实验(openGauss)】金融场景化实验

    金融场景化实验 文章目录 金融场景化实验 一.金融数据模型 1.E-R图 2.关系模式 3.物理模型 Client(客户)表 bank_card(银行卡)表 finances_product(理财产品 ...

  3. 【数据库原理实验(openGauss)】交互式SQL语句

    交互式SQL语句 文章目录 交互式SQL语句 一.数据准备 (1)向Departments中写入数据 (2)向Teachers中写入数据 (3)向Students中写入数据 (4)向Courses中写 ...

  4. 【数据库原理实验(openGauss)】 使用JDBC连接数据库

    使用JDBC连接数据库 文章目录 使用JDBC连接数据库 一.准备连接环境 1.修改数据库的pg_hba.conf文件 2.登陆数据库授权退出 3.修改数据库监听地址 4.下载Java驱动包导入工具 ...

  5. 【数据库原理实验(openGauss)】数据库的备份与恢复

    数据库的备份与恢复 文章目录 数据库的备份与恢复 一.物理备份和恢复 实验准备: (1)物理备份 (2)物理备份恢复 二.逻辑备份和恢复 实验准备: (1)gs_dump备份 1.gs_dump备份示 ...

  6. 【数据库原理实验(openGauss)】视图

    视图 文章目录 视图 一.创建视图 二.基于视图的查询 三.基于视图的更新 四.删除视图 五.对视图的理解 一.创建视图 CREATE VIEW CS_Students AS SELECT Sno, ...

  7. 【数据库原理实验(openGauss)】认识DBMS系统

    认识DBMS系统(openGauss) 文章目录 认识DBMS系统(openGauss) 一.openGauss安装目录 (1)集群openGauss安装目录 (2)集群openGauss数据目录 ( ...

  8. 【数据库原理实验(openGauss)】 安全性控制

    安全性控制 文章目录 安全性控制 一.用户及角色 (1)用户 (2)角色 二.权限设置及回收 1.将系统权限授权给用户或者角色 2.将数据库对象授权给角色或用户 3.将用户或者角色的权限授权给其他用户 ...

  9. 【数据库原理实验(openGauss)】创建数据库、表和索引

    创建数据库.表和索引 文章目录 创建数据库.表和索引 一.创建数据库 二.创建与删除模式 三.创建与修改表 (1)创建表 (2)修改表 四.创建与删除索引 (1)创建索引 (2)删除索引 一.创建数据 ...

最新文章

  1. 浅谈Chatbot的架构模型和响应机制
  2. 适用于WIFI Hacking的无线网卡推荐
  3. 【MM模块】 Goods Issue 发货
  4. 11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?
  5. tomcat的url-pattern的源码分析
  6. 买硬盘需要知道哪些知识?
  7. 基于VHDL的交通灯设计(实训要求)
  8. 小米mix2的Android9好久更新,官方确认 小米6/MIX2/Note 3升级Android 9
  9. 请设置注册表项HKLMSoftwareMicrosoft.NETFrameworkInstallRoot,指向.NET Framework安装位置(写给我自己备份的免得以后找不到)
  10. 百度刘捷:数据驱动,AI赋能助力城市数字化转型
  11. 过滤树形结构数组的方法
  12. ESP32开发环境的搭建和 ESP-IDF支持以下调试方法
  13. vue中enter回车键事件
  14. [蓝桥杯]校内培训交流会总结
  15. 程序员常见英文缩写及其意义
  16. 宝宝小暑吃什么,祛湿健脾,温补阳气
  17. Java序列化与反序列化(一)
  18. 查看服务器的文件夹,远程查看服务器文件夹内的文件夹
  19. 打灰太狼oc核心代码实现
  20. 数据库应用——MySQL函数

热门文章

  1. 目标检测相关概念:IOU,precision, recall, AP, mAP
  2. linux动态库路径生效,Linux下如何解决动态库的链接问题
  3. 开源私有云盘python_用Seafile不花钱搭建高安全性局域网私有云盘
  4. mysql中的substring()截取字符函数
  5. matlab录音函数怎么保存在哪里,利用matlab 录音
  6. sap 中migo收货自动打印smartform_EWM MES/ERP集成 生产收货的几种方式
  7. php查询近期数据,thinkphp中如何查询当天,本周的,本月的,本年的数据
  8. java sdk他edk de区别_最低SDK版本/目标SDK版本与编译SDK版本之间有什么区别?
  9. php中mysql_affected_rows()更新记录返回0_php中mysql_affected_rows()返回-1帶來的“陷阱” | 學步園...
  10. win10 mfc 连接mysql_win10下使用c语言连接mysql