云数据库 GAUSSDB-LOCK:示例

时间:2024-11-13 14:45:53

示例

  • 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 SHARE锁。
    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/centralized-devg-v8-gaussdb/gaussdb-42-0655.html