当前位置:网站首页>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 锁冲突错误。
边栏推荐
- 【LeetCode】22. 括号生成
- 【LeetCode】143. 重排链表
- Win10 environment phpstudy2016 startup failure record
- Acmstreamopen return value problem
- 文本关键词提取:ansj
- Hot and cold, sweet and sour, want to achieve success? Dengkang oral, the parent company of lengsuanling, intends to be listed on the main board of Shenzhen Stock Exchange
- Coinlist how to operate the middle lot number security tutorial
- UCLA | 用于黑盒优化的生成式预训练
- 论文笔记: 多标签学习 ESMC (没看懂, 还没写出来, 暂时放这里占个位置)
- PHP code audit 2 - these functions must be known and understood
猜你喜欢

论文阅读《LSD-SLAM: Large-Scale Direct Monocular SLAM》

DAP data scheduling function improvement description

Lecture record: history and development of strapdown inertial navigation solution

numpy np tips:使用opencv对数组插值放缩到固定形状 cv2.resize(res, dsize=(64, 64), interpolation=cv2.INTER_CUBIC)

Unit test coverage

Coinlist queuing tutorial to improve the winning rate

Where is the red area of OpenCV?

cnpm : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。

95% of programmers fish here

单元测试覆盖率
随机推荐
kenlm
【esp32学习之路6——flash加密】
Lecture record: history and development of strapdown inertial navigation solution
Laravel document sorting 3. CSRF protection
讲座记录《捷联惯导解算的历史及发展》
Lecture record: new application of inertial navigation - inertial measurement
【LeetCode】22. 括号生成
CMD operation MySQL in Windows
Synchronous and asynchronous functions (callback function, promise, generator, async/await)
Retrofit source code analysis
什么是存储引擎以及MySQL常见的三种数据库存储引擎
Laravel document sorting 8. Middleware
Laravel document sorting 9. Blade template
English Grammar - pronunciation rules
小白学习MySQL - 统计的'投机取巧'
JS arrow function
Laravel document sorting 10. Request life cycle
How to screen out words related to products and eliminate invalid words accurately
Watch out for the stolen face! So many risks of face recognition used every day?
Nodejs 通过Heidisql连接mysql出现ER_BAD_DB_ERROR: Unknown database 'my_db_books'