在HANA上创建视图锁定?

2020-08-18 23:11发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,大家好 我试图同时运行一些...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,大家好

我试图同时运行一些脚本

这些脚本是HANA表和我们的表/视图上的"创建视图"

某些脚本会锁定其他指向相同HANA表/视图的脚本,但它们不会相互指向

为什么这些脚本相互锁定?

创建视图会导致锁定?

如何避免这种情况?

谢谢

1条回答
风早神人
2020-08-18 23:45

不确定所描述情况的确切性质。

每当创建或更改表或视图时,都需要锁定相应的数据库目录条目。 否则,很可能会导致数据库目录不一致。

对于诸如视图之类的从属对象,必须在创建视图的过程中锁定所有引用的对象以防止结构更改 。

因此,如果您运行脚本以在表T_1上创建视图V_1,并且同时运行另一个脚本ALTER T_1,则这些脚本需要顺序执行。

该行为并非特定于HANA,而是可以在大多数SQL数据库中找到。

通常,这些锁应持续很长时间。

实际上,如果您没有专门关闭DDL的AUTOCOMMIT,那么在完成DDL命令后,更改/事务将被提交并释放所有锁。

因此,脚本确实会更改相互依赖的数据库对象,或者COMMIT已被延迟。 那就是我想要的。

---

我忘记的一件事:每当其他(非DDL)语句使用视图,表或任何其他数据库对象时 ,该对象上有一种共享锁。 此"共享"锁不会阻止任何其他命令也获得共享锁并使用它。

它的作用是防止任何DDL命令(例如,脚本中的命令)都获得排他锁。
这样做是为了使打开的事务确实具有稳定的数据库目录版本,例如,表看起来仍然与启动update/insert/select命令时的外观相同。

我要做什么 我的意思是,锁定情况的原因可能是共享锁。

一周热门 更多>