GaussDB(DWS)中表级锁的持锁单位是事物,语句触发持锁动作之后,会一直持有锁,一直到触发锁的语句所在的事物提交
GaussDB(DWS)中执行语句的方式默认是autocommit,即每条语句都是一个事物。
如果客户端传过来一个存储过程调用,那么存储过程中的所有语句都在一个事物里面。
| 锁名称 | 级别 | 互斥锁级别 | 持锁动作 | 备注 |
| ACCESS SHARE | 1 | >=8 | SELECT | |
| ROW SHARE | 2 | >=7 | SELECT FOR UPDATE/SHARE | |
| ROW EXCLUSIVE | 3 | >=6 | UPDATE/DELETE/INSERT/UPSERT/MERGE INTO | |
| SHARE UPDATE EXCLUSIVE | 4 | >=4 | VACUUM(不带FULL选项)/ANALYZE | |
| SHARE | 5 | >=4 | CREATE INDEX时候对目标表加锁 | |
| SHARE ROW EXCLUSIVE | 6 | >=3 | 无 | |
| EXCLUSIVE | 7 | >=2 | VACUUM FULL/CLUSTER/INSER OVERWRITE执行过程中 | 执行过程中加7级锁,在执行结束的瞬间会把锁升级到8级 |
| ACCESS EXCLUSIVE | 8 | >=1 | INSER OVERWRITE/ALTER/DROP/TRUNCATE/VACUUM FULL/REINDEX CLUSTER TABLE |
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317253.html