首页 > 解决方案 > 当我们向其中添加列时,HANA 会锁定整个表吗?

问题描述

我正在使用 HANA 的列存储来实现动态表结构,例如执行以下 SQL 在运行时添加新列:

ALTER TABLE test_table ADD (new_field1 VARCHAR(32));

我想知道在执行此 SQL 以衡量此操作的性能影响时是否会锁定整个表。

适合任何想法。

标签: lockinghana

解决方案


这取决于 HANA 版本。使用 HANA 2 SPS 04 及更高版本时,ADD COLUMN不会锁定表(更准确地说:这是一个在线操作,允许在添加列时在表上写入事务)。

但即使没有这个,添加列也不会设置持久的锁定,因为这实际上是对 DB 目录的更新和新列的空内存存储结构的微小设置。这导致锁定等待的主要情况是表上已经有打开的事务反过来阻止ADD COLUMN继续进行。


推荐阅读