关于 SAP HANA 数据库的死锁问题(deadlock)

简介: 关于 SAP HANA 数据库的死锁问题(deadlock)

一个朋友在我的知识星球里提问:


hana数据库发生死锁后,会自动解开吗?还是会等着自动超时后报错。



笔者在 15 年的 SAP 开发生涯中对 HANA 数据库接触得比较少,这里只能根据网络上搜索出的一些材料来回答。


首先,如果是 ABAP 服务器,当 SQL 语句执行时出现死锁,会立即出现运行时异常,终止当前程序的执行:



关于 ABAP 死锁的介绍,参考笔者这篇文章:ABAP面试题系列:写一组会出现死锁(Deadlock)的ABAP程序。


回到 HANA 数据库的死锁介绍。


这篇文章采取了和 Jerry 上述文章里类似的思路,在 HANA 数据库里刻意制造一个死锁。


在这个 SAP Note 1999998 - FAQ: SAP HANA Lock Analysis 里提到,





死锁是两个或多个事务相互交叉锁定的情况,因此任何事务都无法继续进行。 通常死锁是由应用程序设计缺陷引起的,但在主键约束的上下文中也可能存在更多的技术死锁(这种情况请参考 SAP note 2429521)。


当 HANA 数据库出现死锁时,实际行为取决于死锁类型:


SQL error 133: transaction rolled back by detected deadlock


这种行为不同于 Oracle 等其他数据库,后者的死锁只会终止当前的 DML 操作,而不是终止整个事务。


  • Internal Lock: 基于内部锁的死锁(详情查看 SAP Note 2304201)被视为 SAP HANA 的 issue,只能通过重启来解决。


可以使用 HANA hdbcons 死锁检测器功能检查某些(但不是全部)internal lock,如 SAP Note 2222218 中所述:


hdbcons ‘deadlockdetector wg -w -o <file_name>.dot’





相关文章
|
5月前
|
开发者 数据处理 数据管理
SAP HANA 的不同类型
SAP HANA 的不同类型
SAP HANA 的不同类型
|
5月前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
|
2月前
|
SQL 关系型数据库 MySQL
遇到mysql数据库死锁,你会怎么排查?
遇到mysql数据库死锁,你会怎么排查?
107 0
|
2月前
|
Oracle 关系型数据库 MySQL
Mysql和Oracle数据库死锁查看以及解决
【8月更文挑战第11天】本文介绍了解决MySQL与Oracle数据库死锁的方法。MySQL可通过`SHOW ENGINE INNODB STATUS`查看死锁详情,并自动回滚一个事务解除死锁;也可手动KILL事务。Oracle则通过查询V$LOCK与V$SESSION视图定位死锁,并用`ALTER SYSTEM KILL SESSION`命令终止相关会话。预防措施包括遵循ACID原则、优化索引及拆分大型事务。
|
3月前
|
Oracle 关系型数据库 数据库
关系型数据库Oracle死锁
【7月更文挑战第16天】
33 3
|
4月前
|
SQL 存储 监控
达梦数据库死锁排查与解决
达梦数据库死锁排查与解决
1070 0
|
5月前
|
存储 安全 数据库
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
|
5月前
|
数据库
什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移
什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移
|
5月前
|
数据库 存储 安全
使用 SAP HANA Cloud 的一些优势
使用 SAP HANA Cloud 的一些优势
使用 SAP HANA Cloud 的一些优势
|
5月前
|
SQL 数据库 数据安全/隐私保护
修改SAP数据库用户密码的参考
修改SAP数据库用户密码的参考
85 0
下一篇
无影云桌面