【问题标题】:Redshift : create table like fails when there is AUTO sort key in source tableRedshift:当源表中有自动排序键时,创建表失败
【发布时间】:2021-03-28 16:36:38
【问题描述】:

我正在尝试使用 redshift 创建一个临时表

CREATE TABLE tmp_users (LIKE users);

这工作了一段时间。但最近我在生产中遇到了如下故障。

org.postgresql.util.PSQLException: ERROR: Invalid syntax: Create table sortkey auto with initial sortkeys.

在 CREATE TABLE 查询执行期间,我的源表没有提供排序键。因此,根据 redshift 文档,它们将具有默认的 AUTO SORTKEY。来自 SVV_TABLE_INFO

  table   | diststyle |  sortkey1         
--------------------------------------
  users   | AUTO(ALL) | AUTO(SORTKEY)

对上述源表架构执行 LIKE 查询不会导致任何问题。

但我在生产表中看到 sortkey1 更改为 usersAUTO(SORTKEY(c1)) 的列之一并在此架构上执行 LIKE 会导致上述异常。

我的问题是

  1. 作为自动性能调整的一部分,redshift 是否更改了排序键?
  2. 为什么 LIKE 在这种情况下会失败?如果是预期的.. 我该如何创建表格副本?

我提到了问题nvalid syntax: Create table sortkey auto with initial sortkeys,但在我的情况下,建议的删除排序键的解决方案是不可能的,因为表有数百万条记录。

【问题讨论】:

    标签: java amazon-redshift upsert


    【解决方案1】:

    我有同样的问题。 create table like 失败的原因是原始表具有自动排序键,而 Redshift 自动为该表生成了一些特定的排序键。

    显然,由于性能问题,无法删除 sortkey。

    这种情况下的解决方案是更改 sortkey 并强制它与 Redshift 自动生成的完全相同。

    缺点: Redshift 将不再自动更改此表的 sorkey,您必须监控此表的用例并手动应用最佳排序键。 优点: 您可以使用此表元数据创建其他表(create table like)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 2021-06-06
      • 2019-02-05
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多