数据库原理实验(openGauss)事务与并发控制
Posted BkbK-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理实验(openGauss)事务与并发控制相关的知识,希望对你有一定的参考价值。
事务与并发控制
一、事务
(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)事务与并发控制的主要内容,如果未能解决你的问题,请参考以下文章