【问题标题】:Last update query count in amazon redshift亚马逊红移中的上次更新查询计数
【发布时间】:2017-01-04 09:59:44
【问题描述】:

有没有办法计算亚马逊红移中受 SQL 更新查询影响的最后行数?

类似于 PG_LAST_COPY_COUNT() 的函数来计算亚马逊红移中的最后一个复制计数。

感谢任何帮助。

【问题讨论】:

    标签: sql amazon-redshift


    【解决方案1】:

    这应该提供信息

    SELECT CASE
             WHEN d.relname IS NOT NULL THEN d.relname
             ELSE i.relname
           END TableName,
           CASE
             WHEN nvl (Deleted_Rows,0) = 0 THEN nvl (Inserted_Rows,0)
             ELSE 0
           END Inserted_Rows,
           CASE
             WHEN nvl (Deleted_Rows,0) = nvl (Inserted_Rows,0) THEN nvl (Inserted_Rows,0)
             ELSE 0
           END Updated_Rows,
           CASE
             WHEN nvl (Inserted_Rows,0) = 0 THEN nvl (Deleted_Rows,0)
             ELSE 0
           END Deleted_Rows
    FROM (SELECT query,
                 relname,
                 SUM(ROWS) Deleted_Rows
          FROM stl_delete sd
            JOIN pg_class t ON t.oid = sd.tbl
          GROUP BY query,
                   relname) d
      FULL JOIN (SELECT query,
                        relname,
                        SUM(ROWS) Inserted_Rows
                 FROM stl_insert si
                   JOIN pg_class t ON t.oid = si.tbl
                 GROUP BY query,
                          relname) i ON i.query = d.query
    WHERE CASE WHEN d.query IS NOT NULL THEN d.query ELSE i.query END = pg_last_query_id();
    

    【讨论】:

    • Updated_Rows 为何以及如何最终来自 stl_delete 和 stl_insert?
    • 在redshift中,后台没有更新操作。所有更新都作为删除要更新的记录并将更新的记录作为新记录插入
    • 我相信你的话,但是有没有官方文档提到这个主题?我找不到任何证据证明你说的是真的。我坚持这一点,因为我需要有证据支持我的流程。
    • 我已经根据经验验证了您所说的是真实的,但还是有一些备份文档会很好!
    • 查询有错误,不必获取SUM(ROWS)! redshift 为查询分配的每个切片记录几条记录,但 rows 列获取处理的总行数,因此您应该只取其中一个值而不是总和。
    【解决方案2】:

    您是对的,没有等效的 PG_LAST_COPY_COUNT() 用于从插入/更新/删除中捕获受影响行的最后数量,但是您可以通过使用系统表 STV_SESSIONSSTL_QUERY 和 @ 来实现这一点987654325@。有一篇很棒的博客文章 here 关于如何构建查询。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 2021-05-05
      • 2012-04-25
      相关资源
      最近更新 更多