当前位置:网站首页>GBase 8s 锁的分类
GBase 8s 锁的分类
2022-06-25 04:00:00 【八珍豆腐】
锁的对象是数据库中的数据对象,如关系型数据库中的表、记录、属性、索引等, 对数据对象加锁的时机是在事务对其进行操作之前,向系统发出加锁请求。加锁后事务就取得了对该数据对象的控制,在事务释放它的锁之前,其他事务不能对此数据对象进 行任何操作。封锁是一种排队机制,将并行任务按锁的先后顺序排队,把并行任务变成串 行任务。 GBase8s 采用全局管理的封锁机制,在共享内存中分配一块内存集中标记锁的使用情况,在每个锁结构中保存锁的拥有者、锁定的对象(是表、记录、还是行)、锁的类型等。 在GBase8s中每个锁占用 128 Byte。
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 语句时,GBase8t 会自动对表进行加锁,如 ALTER FRAGMENT、 ALTER INDEX、ALTER TABLE、CREATE INDEX (如果没有使用 ONLINE 模式)、DROP INDEX(如果没有使用 ONLINE 模式)、RENAME COLUMN、RENAME TABLE。
在整个表或者表中的大部分数据需要更新时,使用表级锁的效率高。
3.页级锁(Page Locks)
GBase8t 物理上把多行记录存放在数据页(Page)上,页级锁指锁的对象是一个数据 页,当采用页级锁访问记录时,GBase8t 会自动对访问的数据页进行加锁。当按物理顺序 访问和更新多条记录时,使用页级锁的效率较高。
可以通过如下方式指定页级锁模式:
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;语句时,GBase8t 将对索引 key 值为 3 的记录进行闭区间加锁,意味着此时不能新增 key 值大于 3 的记录。 若此时执行 insert into tab1 values(4,2),则会提示 Index 锁冲突错误。
边栏推荐
- 论文笔记: 多标签学习 ESMC (没看懂, 还没写出来, 暂时放这里占个位置)
- Cesium graphic annotation circle, square, polygon, ellipse, etc
- PostgreSQL数据库WAL——RM_HEAP_ID日志记录动作
- 讲座记录《多种空间大地测量技术的数据处理方法和应用》
- 95% 程序员都在这里摸鱼……
- [proteus simulation] Arduino uno key controls the flashing increase / decrease display of nixie tube
- English Grammar - pronunciation rules
- Introduction to intstream API
- 【LeetCode】22. bracket-generating
- 【LeetCode】143. Rearrange linked list
猜你喜欢

Finereport displays and hides column data according to conditions

Unit test coverage

文本关键词提取:ansj

UCLA | generative pre training for black box optimization

Read lsd-slam: large scale direct monolithic slam

i. Max development board learning record

What is the storage engine and the three common database storage engines for MySQL

Coinlist how to operate the middle lot number security tutorial

Exercise: how difficult is it to simulate the blessing lottery two-color ball - China 500W grand prize? Just run the code.

MySQL插入过程报错1062,但是我没有该字段。
随机推荐
"Renaissance" in the digital age? The bottom digital collection makes people happy and sad
2021.4.15 note the difference between let, const and VaR in ES6
Text keyword extraction: ansj
Laravel document sorting 6. Response
UCLA | generative pre training for black box optimization
Shutter fittedbox component
Mysql的order by
A detailed summary of TCP connection triple handshake
Upgrade cmake
1、项目第二阶段——用户注册和登陆
NFT insider 63: the sandbox reached a cooperation with Time magazine, and YGG established Spain's subdao
升级cmake
讲座记录《惯性导航的新应用——惯性测量》
[kubernetes series] installation and use of Helm
LabVIEW开发气体调节器
OBS Browser+浏览器的基本使用
Uniapp makes mobile app programs, using uni Choosevideo record video, video playback is fuzzy, and the resolution is low
Vigilance against over range collection of privacy - ten mobile app violations
SQL注入详解
What is data persistence?