首页 > 解决方案 > AWS Redshift - 如何查找计入集群限制的所有表?

问题描述

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走了。

临时表也很重要,但在抛出异常时我们甚至还没有接近 1,000 个临时表。

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

标签: amazon-web-servicesamazon-redshiftlimitquota

解决方案


SVV_DISKUSAGE如文档所述,该视图仅计算永久表;它不计算在事务中创建的临时表。STV_TBL_TRANS跟踪事务期间创建的临时表。

或者,count(distinct table)STV_BLOCKLIST

但是,您真的希望不断执行查询来跟踪集群中的表数量吗?特别是考虑到临时表将取决于活动事务的数量,这似乎是错误的方法。

相反,我会查看TotalTableCount CloudWatch 指标。在此创建警报也会更容易。需要注意的是,您可能需要在 95% 时发出警报,因为该指标的分辨率可能较低。


推荐阅读