云数据库 GAUSSDB-LOCK:示例
时间:2025-10-17 14:32:09
示例
- SHARE ROW EXCLUSIVE
--创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建表tpcds.reason。 gaussdb=# CREATE TABLE tpcds.reason ( r_reason_sk INTEGER NOT NULL, r_reason_id CHAR(16) NOT NULL, r_reason_desc INTEGER ); --向表中插入多条记录。 gaussdb=# INSERT INTO tpcds.reason VALUES (1, 'AAAAAAAABAAAAAAA', '18'),(5, 'AAAAAAAACAAAAAAA', '362'),(7, 'AAAAAAAADAAAAAAA', '585'); --创建一个新表reason_t1。 gaussdb=# CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason; --开启事务。 gaussdb=# START TRANSACTION; --使用SHARE ROW EXCLUSIVE MODE锁模式锁表。 gaussdb=# LOCK TABLE tpcds.reason_t1 IN SHARE ROW EXCLUSIVE MODE; --在另一个终端执行DELETE操作会发现阻塞。 gaussdb=# DELETE FROM tpcds.reason_t1 WHERE r_reason_sk = 7; --结束事务,释放锁。 gaussdb=# COMMIT;
- ROW EXCLUSIVE
--开启事务。 gaussdb=# START TRANSACTION; --执行update语句后,在被引用的表上请求一个ROW EXCLUSIVE锁。 gaussdb=# UPDATE tpcds.reason_t1 SET r_reason_desc=180 WHERE r_reason_sk=1; --在另外一个终端alter table语句,出现阻塞。 gaussdb=# ALTER TABLE tpcds.reason_t1 ADD r_reason_asc int; --结束事务,释放锁。 gaussdb=# COMMIT;
- AC CES S EXCLUSIVE
--开启事务。 gaussdb=# START TRANSACTION; --执行TRUNCATE语句后,在被引用的表上请求ACCESS EXCLUSIVE锁。 gaussdb=# TRUNCATE tpcds.reason_t1; --在另一个终端执行select语句,出现阻塞。 gaussdb=# SELECT * FROM tpcds.reason_t1; --结束事务,释放锁。 gaussdb=# COMMIT; --删除表tpcds.reason_t1。 gaussdb=# DROP TABLE tpcds.reason_t1; --删除表tpcds.reason。 gaussdb=# DROP TABLE tpcds.reason; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds CASCADE;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0646.html
下载云数据库 GAUSSDB用户手册完整版