如何检查一个表是否正在被AWS Redshift上的某个过程或视图使用



我正在使用AWS Redshift。我在一个模式中有100多个表,其中一些表的数据每天都会刷新,而有些表根本不会刷新。我已经找出了数据不刷新的表。在删除它们之前,我想检查它们当前是否被相同模式或任何其他模式的任何函数/过程/视图使用。有办法在红移上查看吗?

我在网上找到了这个代码,不记得在哪里,所以我很抱歉我不能赊账…

我建议将其保存为视图,以便您可以随时轻松运行。

如果你的视图使用了你想删除的某些表,你可以在视图的末尾使用WITH NO SCHEMA BINDING。这样,即使有一个视图正在使用这个表,它也可以被删除。

代码:

SELECT DISTINCT 
srcobj.oid AS src_oid
,srcnsp.nspname AS src_schemaname
,srcobj.relname AS src_objectname
,tgtobj.oid AS dependent_viewoid
,tgtnsp.nspname AS dependent_schemaname
,tgtobj.relname AS dependent_objectname
FROM
pg_catalog.pg_class AS srcobj
INNER JOIN
pg_catalog.pg_depend AS srcdep
ON srcobj.oid = srcdep.refobjid
INNER JOIN
pg_catalog.pg_depend AS tgtdep
ON srcdep.objid = tgtdep.objid
JOIN
pg_catalog.pg_class AS tgtobj
ON tgtdep.refobjid = tgtobj.oid
AND srcobj.oid <> tgtobj.oid
LEFT OUTER JOIN
pg_catalog.pg_namespace AS srcnsp
ON srcobj.relnamespace = srcnsp.oid
LEFT OUTER JOIN
pg_catalog.pg_namespace tgtnsp
ON tgtobj.relnamespace = tgtnsp.oid
WHERE tgtdep.deptype = 'i' --dependency_internal
AND tgtobj.relkind = 'v' --i=index, v=view, s=sequence
and src_schemaname <> 'pg_catalog' and src_schemaname <> 'information_schema';