南大通用GBase 8c事务与锁之全局死锁解除

原文链接:

https://www.gbase.cn/community/post/3883

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

GBase 8c数据库具有死锁检测和自动解除机制。由多个CN和多个DN构成。就死锁发生的范围来讲,死锁可以发生在单个CN或单个DN里,也可以发生在多个CN或DN里。发生在单个CN或单个DN里的情况,称之为单机死锁;发生在多个CN或DN里的情况,称之为全局死锁,即数据库集群内多个CN、DN上的多个数据库进程间互相调用资源而出现循环等待的情况。本文主要论述分布式全局死锁解除内容。

如上图中所示,在T1这个时刻,事务1 开始(begin),在T2时刻,事务1 更新(update)了id=1行的t(列)值,同时事务2 开始(begin)。在T3时刻,事务2更新(update)了id=4行的t(列)值。然后在T4时刻,事务1想要更新id=4的t值,同时事务2想要更新id=1的t值,此时就会互相等待,形成全局死锁。

全局死锁检测算法主要分为两种,一种是集中式的算法一种是分布式的算法:

1.集中式:GTM节点(中心节点)负责收集集群其他节点的事务锁等待信息,来构建全局等待图-》查询死锁环(深度优先搜索算法、拓扑排序算法)并下发退出命令。这种算法会增加GTM节点负载,使其更容易成为集群性能瓶颈,并且一旦GTM节点有问题则死锁检测就失效了,不建议采用这种算法。

2.分布式:(GBase 8c当前采用的算法)每个CN都会发起死锁检测。探测消息沿着等待关系方向在节点事务处理进程/线程间转发,事务处理线程收到自己发送的探测消息则表名存在全局死锁,事务自己回滚从而解除全局死锁。

【举例】

当事务1发现要update的数据被其他锁住后,会将这个等待信息发送给锁住数据的那个节点,在这个例子里面就是发起事务2的CN2节点;然后同时事务2发现要update的数据被事务1锁住了,也会在等待超时时间以后,将这个等待信息发送给事务1所在的节点就是CN1。这样事务锁住的时候,后台首先等待一个预先设定的超时时间,当超过这个时间两个节点就发现了他们的等待环,那么首个发现环的节点会将自己的事务退出,从而解除全局死锁的这个问题。

【测试方法】

默认的死锁超时时间是1s,修改成20s:

show deadlock_timeout ;
alter system set deadlock_timeout=20;

创建测试表

create table test(id int,info text);
insert into test values(1,'Tom');
insert into test values(2,'Lane');

session1,执行更新

begin;
update test set info = 'test' where id = 1;

session2,执行更新

begin;
update test set info = 'test' where id = 2;

session1,执行更新

update test set info = 'test' where id = 2;  --卡住

session2,执行更新

update test set info = 'test' where id = 1;  --卡住

过20s后其中一个会话的事务检测到死锁被杀掉,另外一个会话提交成功。

原文链接:

https://www.gbase.cn/community/post/3883

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

 

南大通用 GBase 8c 数据库是一款具有多模多态特性的高性能企业级分布式数据库,支持多种存储模式,包括行存、列存和内存存储,同时支持多种部署形态,如单机、主备和分布式部署[^1]。该数据库产品旨在满足企业在不同场景下的数据处理需求,能够灵活适应从小型应用到大规模分布式系统的广泛场景。 ### 技术特性 1. **多模多态支持** GBase 8c 支持多种数据存储模式,包括行存、列存和内存存储,这种多模多态的特性使得数据库能够根据不同业务场景的需求进行灵活配置,从而优化性能和存储效率。 2. **高可用性可扩展性** 在分布式部署模式下,GBase 8c 提供了强大的数据一致性和高可用性保障,能够支持大规模并发访问,并且可以通过水平扩展来应对数据量和访问压力的持续增长。 3. **高性能数据处理** GBase 8c 具备高效的数据处理能力,能够支持复杂查询和大规模数据分析,满足企业对实时数据处理和快速响应的需求。 4. **安全性可靠性** 该数据库产品在安全性方面现突出,提供了多层次的安全机制,包括数据加密、访问控制和审计功能,确保数据在存储和传输过程中的安全。同时,其高可靠性设计保证了系统在高负载和复杂环境下的稳定运行。 5. **智能调优能力** 为了充分发挥数据库的性能潜力,GBase 8c 提供了丰富的调优手段,涵盖硬件配置、数据库设计、查询优化、日志优化以及日常维护等多个方面,帮助用户实现最佳性能[^3]。 6. **兼容性易用性** GBase 8c 支持标准 SQL,并兼容多种开发框架和工具,降低了学习和使用的门槛。此外,其安装包可从南大通用官网获取,方便用户快速部署和使用[^1]。 7. **数据迁移支持** GBase 8c 提供了强大的数据迁移解决方案,帮助企业降低迁移风险和成本,加速数字化转型过程[^2]。 8. ** AI 技术结合** GBase 8c 还可以 AI 技术结合,例如 DeepSeek 联合搭建 RAG 应用,利用其出色的向量数据库功能,提升本地知识库的构建效率和准确性[^5]。 ### 部署形态 GBase 8c 支持多种部署形态,包括单机、主备和分布式部署,用户可以根据实际业务需求选择合适的部署方式。单机和主备部署适用于对高可用性要求不高的场景,而分布式部署则适用于需要处理大规模数据和高并发访问的场景[^1]。 ### 适用场景 - **企业级应用**:适用于需要高可靠性和高性能的企业级业务系统。 - **大数据分析**:支持复杂查询和实时数据分析,适合用于大数据处理平台。 - **云环境部署**:由于其灵活的部署特性,GBase 8c 也非常适合在云环境中使用。 ### 示例代码 以下是一个简单的 SQL 查询示例,展示了如何在 GBase 8c 中执行基本的数据检索操作: ```sql SELECT * FROM employees WHERE department = 'Sales'; ``` 该查询语句将从名为 `employees` 的中检索所有属于 `Sales` 部门的员工记录。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值