AWS Redshift-如何查找所有计入群集限制的表?

发布时间:2020-07-07 17:15

Quotas and limits in Amazon Redshift定义“大型群集节点类型的表的限制为9,900 ”。

该限制已在群集中达到。

SQL ERROR [500310] [XX000]: [Amazon](500310) Invalid operation: 1040
Details:
Maximum tables limit exceeded. The maximum number of tables per cluster is 9900 for this instance type. The limit includes permanent and temporary tables. (pid: xxxxx)

为了知道我们是否要在集群中再次解决此问题,DevOps希望设置警报,但是我们无法找到一个简单的查询来识别所有计入该限制的表。

与该查询最接近的是svv_diskusage

SELECT COUNT(DISTINCT d.tbl) FROM svv_diskusage d;

总共返回了8,825。我们1,075不在。

临时表也算在内,但在抛出异常时,我们甚至还没有超过1000个临时表。

还有其他想法不包括连接到集群的每个数据库以计数表吗?

回答1

根据记录,SVV_DISKUSAGE视图仅计算永久表;它不计算在事务内创建的临时表。 STV_TBL_TRANS跟踪事务期间创建的临时表。

或者,STV_BLOCKLIST中的count(distinct table)

但是,您是否真的要不断执行查询以跟踪集群中表的数量?尤其是考虑到临时表将取决于活动事务的数量,这似乎是错误的方法。

相反,我将看看TotalTableCount CloudWatch metric。在此上创建警报也将更加容易。需要警告的是,可能有95%的警报,因为该指标的分辨率可能较低。