2020-08-18 23:11发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,大家好 我试图同时运行一些... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,大家好
我试图同时运行一些脚本
这些脚本是HANA表和我们的表/视图上的"创建视图"
某些脚本会锁定其他指向相同HANA表/视图的脚本,但它们不会相互指向
为什么这些脚本相互锁定?
创建视图会导致锁定?
如何避免这种情况?
谢谢
不确定所描述情况的确切性质。
每当创建或更改表或视图时,都需要锁定相应的数据库目录条目。 否则,很可能会导致数据库目录不一致。
对于诸如视图之类的从属对象,必须在创建视图的过程中锁定所有引用的对象以防止结构更改 。
因此,如果您运行脚本以在表T_1上创建视图V_1,并且同时运行另一个脚本ALTER T_1,则这些脚本需要顺序执行。
该行为并非特定于HANA,而是可以在大多数SQL数据库中找到。
通常,这些锁应持续很长时间。
实际上,如果您没有专门关闭DDL的AUTOCOMMIT,那么在完成DDL命令后,更改/事务将被提交并释放所有锁。
因此,脚本确实会更改相互依赖的数据库对象,或者COMMIT已被延迟。 那就是我想要的。
---
我忘记的一件事:每当其他(非DDL)语句使用视图,表或任何其他数据库对象时 ,该对象上有一种共享锁。 此"共享"锁不会阻止任何其他命令也获得共享锁并使用它。
它的作用是防止任何DDL命令(例如,脚本中的命令)都获得排他锁。 这样做是为了使打开的事务确实具有稳定的数据库目录版本,例如,表看起来仍然与启动update/insert/select命令时的外观相同。
我要做什么 我的意思是,锁定情况的原因可能是共享锁。
最多设置5个标签!
不确定所描述情况的确切性质。
每当创建或更改表或视图时,都需要锁定相应的数据库目录条目。 否则,很可能会导致数据库目录不一致。
对于诸如视图之类的从属对象,必须在创建视图的过程中锁定所有引用的对象以防止结构更改 。
因此,如果您运行脚本以在表T_1上创建视图V_1,并且同时运行另一个脚本ALTER T_1,则这些脚本需要顺序执行。
该行为并非特定于HANA,而是可以在大多数SQL数据库中找到。
通常,这些锁应持续很长时间。
实际上,如果您没有专门关闭DDL的AUTOCOMMIT,那么在完成DDL命令后,更改/事务将被提交并释放所有锁。
因此,脚本确实会更改相互依赖的数据库对象,或者COMMIT已被延迟。 那就是我想要的。
---
我忘记的一件事:每当其他(非DDL)语句使用视图,表或任何其他数据库对象时 ,该对象上有一种共享锁。 此"共享"锁不会阻止任何其他命令也获得共享锁并使用它。
它的作用是防止任何DDL命令(例如,脚本中的命令)都获得排他锁。
这样做是为了使打开的事务确实具有稳定的数据库目录版本,例如,表看起来仍然与启动update/insert/select命令时的外观相同。
我要做什么 我的意思是,锁定情况的原因可能是共享锁。
一周热门 更多>