当前位置:网站首页>GBase 8s的封锁技术的基本介绍
GBase 8s的封锁技术的基本介绍
2022-06-25 03:59:00 【八珍豆腐】
一. 封锁的基本概念
封锁的对象是数据库中的数据对象,如关系型数据库中的表、记录、属性、索引等,
对数据对象加锁的时机是在事务对其进行操作之前,向系统发出加锁请求。加锁后事务 T就取得了对该数据对象的控制,在事务 T 释放它的锁之前,其他事务不能对此数据对象进行任何操作。封锁是一种排队机制,将并行任务按锁的先后顺序排队,把并行任务变成串行任务。
二. 锁的类型
按照锁的行为模式,可以将数据库中的锁分成:共享锁、排它锁和提升锁三种类型。
1.共享锁
共享锁简称 S 锁,可以防止其他用户对记录进行修改。若事务 T 对数据对象 R 加上 S锁,则事务 T 只能对数据对象 R 进行读操作或者确定修改记录意图的操作,而不能对 R进行写操作,其他任何事务只能再对 R 加 S 锁或 U 锁(提升锁),而不能加 X 锁(排它锁);当事务 T 释放 R 上的 S 锁后,其他事务才可以对 R 加 X 锁,这就保证了对于加 S 锁的数据 R 可以被其他事务读,但不能够对 R 进行写操作。
2.排它锁
排它锁简称 X 锁,用来管理并行更新,排它锁又称为独占锁,若事务 T 对一个对象 R加了排它锁,则只允许 T 对 R 进行读写操作,不允许其他任何事务再对 R 加任何类型的锁,当事务 T 释放 R 上的 X 锁后,其他事务才能够对 R 进行加锁。这样,在事务 T 释放加在 R 上的锁之前,任何事务都不能对 R 进行读写或者确定修改记录的意图操作。同时,若试图在一个已经加了 S 锁或者 U 锁的对象上加 X 锁,则也会冲突。
3.提升锁
提升锁简称 U 锁,U 锁是意向锁,表示事务有修改记录的意图。U 锁是一种过渡锁,当要对 U 锁所锁定的对象进行更新操作时,需要将 U 锁提升为 X 锁。若事务 T 对数据对象 R 加了 U 锁,则只允许 T 有对 R 进行修改意图的权限,其他事务只能再对 R 加 S 锁而不能加 U 锁或者 X 锁。
三. 封锁的粒度
封锁粒度也称锁对象或者锁范围,表示封锁的作用范围,例如,一条记录上的锁只作
用于该记录,一个关系上的锁作用于该关系中的所有记录。可见,不同封锁粒度涉及封锁
的数据量是不同的,封锁对象的级别越高,涉及的数据量越大。封锁粒度越大,如对整个
数据库进行封锁,则将会对数据库中的全部关系、记录进行封锁,系统处理单个事务的能
力要强一些,系统开销相对小一些,但是,系统的并发度就会减小,处理并发事务的能力
就会减弱;反之,封锁粒度越小,如对单个表或记录进行封锁,系统的并发度就会高一些,
系统开销也就越大。
1.数据库级锁(Database-Ievel Locks)
在我们通过 CONNECT DATABASE 或者 CREATE DATABASE 语句访问数据库时,
系统都将自动在该数据库上加上一个共享(S)锁,这样可以防止其他用户删除数据库或
者在该数据库上加排它(X)锁。
2.表级锁(Table-Ievel Locks)
表级锁就是指锁定的对象是一个表,可以通过如下语句显式地对表加锁和释放锁:
BEGIN WORK;
LOCK TABLE tab1 IN EXCLUSIVE MODE;
LOCK TABLE tab2 IN SHARE MODE;
UNLOCK TABLE tab1;
在执行如下一些 DDL 语句时,会自动对表进行加锁,如 ALTER FRAGMENT、
ALTER INDEX、ALTER TABLE、CREATE INDEX (如果没有使用 ONLINE 模式)、DROP
INDEX(如果没有使用 ONLINE 模式)、RENAME COLUMN、RENAME TABLE。
在整个表或者表中的大部分数据需要更新时,使用表级锁的效率高。
3.页级锁(Page Locks)
数据库物理上把多行记录存放在数据页(Page)上,页级锁指锁的对象是一个数据
页,当采用页级锁访问记录时,会自动对访问的数据页进行加锁。当按物理顺序
访问和更新多条记录时,使用页级锁的效率较高。
可以通过如下方式指定页级锁模式:
ALTER TABLE tab1 LOCK MODE (PAGE);
CREATE TABLE tab1(...) LOCK MODE PAGE ;
CREATE TABLE 时若不指定锁模式,则将采用 ONCONFIG 参数 DEF_TABLE_LOCKMODE 来指定表的锁模式。
4.行级锁(Row Locks)
关系型数据库的数据是按行来管理的,所以行级锁很容易理解。在 OLTP 系统中行级锁的使用很广泛,只需要锁定所访问的少数记录情况,使用行级锁的效率较高。
可以通过如下方式指定行级锁模式:
ALTER TABLE tab1 LOCK MODE (ROW);
CREATE TABLE tab1(...) LOCK MODE ROW ;
CREATE TABLE 时若不指定锁模式,则将采用 ONCONFIG 参数 DEF_TABLE_LOCKMODE 来指定表的锁模式。
5.锁(Index key)
索引采用 B+树的存储结构,所以对索引的锁管理就是管理索引的 Key 值。数据库采用开、闭区域的方式进行索引的锁管理,示例如下:
Create table tab1 (c1 int,c2 int) lock mode row;
Create unique index idx_tab1 on tab1(c1);
Insert into tab1 values(1,2);
Insert into tab1 values(2,2);
Insert into tab1 values(3,2);
假设表中只有如上 3 行记录,当执行 update tab1 set c1=0 where c1>=3;语句时,将对索引 key 值为 3 的记录进行闭区间加锁,意味着此时不能新增 key 值大于 3 的记录。若此时执行 insert into tab1 values(4,2),则会提示 Index 锁冲突错误。
边栏推荐
- Cesium loading display thermal diagram
- 马斯克发布人形机器人,AI对马斯克为什么意义重大?
- Flutter FittedBox组件
- MySQL order by
- IntStream API介绍
- Leetcode points to the leetcode road of offering II 091 house painting [dynamic planning] heroding
- Mathematical analysis_ Notes_ Chapter 3: limits
- Laravel document sorting 11. System architecture
- SEO的5大关键指标:排名+流量+会话+停留时长+跳出率
- 升级cmake
猜你喜欢
数字时代的“文艺复兴”?起底数字藏品,让人欢喜让人愁
DAP data scheduling function improvement description
MySQL插入过程报错1062,但是我没有该字段。
Simple integration of client go gin 11 delete
Where is the red area of OpenCV?
95% of programmers fish here
Error 1062 is reported during MySQL insertion, but I do not have this field.
Cesium graphic annotation circle, square, polygon, ellipse, etc
Watch out for the stolen face! So many risks of face recognition used every day?
1. first knowledge of chromatic harmonica
随机推荐
无法安装redis接口
Retrofit 源码分析
Laravel document sorting 10. Request life cycle
Summary of various problems encountered by cocos2d-x
mongodb集群
Upgrade cmake
Laravel document sorting 11. System architecture
openmmlab-环境配置
Laravel document sorting 7. View
论文阅读《LSD-SLAM: Large-Scale Direct Monocular SLAM》
sql_ mode=only_ full_ group_ By's pit
"How to carry out industrial positioning" in local / Park industrial planning
Failed to install redis interface
Finereport (sail soft) handling the problem that the histogram data label is blocked
PHP code audit 1 - php Ini
Acmstreamopen return value problem
数字时代的“文艺复兴”?起底数字藏品,让人欢喜让人愁
2. play the chromatic harmonica
【esp32学习之路6——flash加密】
单元测试覆盖率