向包含数十亿条记录的现有HANA DB表中添加新列的影响分析?

2020-08-20 12:13发布

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

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


我们想在现有表中添加一些其他列,这是我们的关键表之一,其中包含数十亿行。 我们想进行影响分析。 是否有任何工具或实用程序可用于此类活动的影响分析?

谢谢

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

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


我们想在现有表中添加一些其他列,这是我们的关键表之一,其中包含数十亿行。 我们想进行影响分析。 是否有任何工具或实用程序可用于此类活动的影响分析?

谢谢

付费偷看设置
发送
4条回答
SKY徐
1楼-- · 2020-08-20 13:07

没有标准的影响分析工具可以通过添加新列来显示和记录所有受影响的对象和过程。

这意味着您必须手动执行此操作并在 具有相似数据量的非生产实例。

基于对带有ca的表的快速测试。 150Mio。 记录和永久运行的INSERT语句,我可以分享以下观察结果:

  • 几乎没有时间添加新列(具有默认值和NOT NULL约束)。
    实际上 讲,HANA只需添加两个字典条目(默认值和NULL),并为每个记录分配一个指向默认条目的指针。
    这与现有列无关。
  • 长时间运行 在表上保留锁的insert/update语句将阻止ALTER TABLE命令。
  • 一旦创建了新列,就会触发增量合并。 在这里,将应用与通常相同的锁定效果和保存点活动。
  • 插入并选择未指定受影响/计划的列的语句将在创建新列后失败或产生不同的输出。

就像Oracle将更改实际存储块直到下一次更新一样,SAP HANA首先在目录中执行更改,然后将IO的重要部分推迟到异步增量合并/保存点。 处理。

总而言之,在SAP HANA中添加列相对没有麻烦。

要考虑的一件事是,如果要添加多个列,请在单个ALTER中执行 TABLE命令可最大程度地减少等待表锁所花费的总时间。

宇峰Kouji
2楼-- · 2020-08-20 13:17

使用ECC和Oracle,只要在DDIC Type中未定义新列使其具有( ABAP)"初始值"。 如果他们必须具有初始值,那么这肯定会产生影响。 由于Oracle和数百万甚至更多的大量记录,这可能需要很长时间。 这些字段或整个记录都有更新。

我假设它对于HANA来说是相同的,但不确定HANA能够为这些列设置初始值的速度有多快,这可能还取决于 关于将表设置为基于列还是基于行。

宇峰Kouji
3楼-- · 2020-08-20 13:15

非常感谢Lars。

确实可以提供信息。

是否可以确定对性能的影响? 由于我们的表很大,因此我们担心添加一些额外的列将使其比我们已经拥有的更糟。

此致

VJ

太Q了
4楼-- · 2020-08-20 13:05

如果您担心查询性能将如何受到影响,那么答案是:

-如果查询不使用新列,则没有影响

-如果使用新列,则取决于它们的用途。

尤其是对于后一种情况,测试是确定的唯一方法。

一周热门 更多>