AWS Redshift - 如何找到所有计入集群限制的表?
AWS Redshift - How to find all tables that count towards the limit on a cluster?
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
远了。
临时表也算在内,但在抛出异常时我们甚至没有超过 1,000 个临时表。
还有其他不包括连接到集群的每个数据库以对表进行计数的想法吗?
如文档所述,SVV_DISKUSAGE
视图仅计算永久表;它不计算在事务中创建的临时表。 STV_TBL_TRANS 跟踪事务期间创建的临时表。
或者,count(distinct table)
来自 STV_BLOCKLIST。
但是,您真的希望不断执行查询来跟踪集群中的表数吗?特别是考虑到临时表将取决于活动事务的数量,这似乎是错误的方法。
相反,我会查看 TotalTableCount
CloudWatch metric。对此创建警报也会更容易。需要注意的是,您可能希望在 95% 时发出警报,因为该指标的分辨率可能很低。
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
远了。
临时表也算在内,但在抛出异常时我们甚至没有超过 1,000 个临时表。
还有其他不包括连接到集群的每个数据库以对表进行计数的想法吗?
如文档所述,SVV_DISKUSAGE
视图仅计算永久表;它不计算在事务中创建的临时表。 STV_TBL_TRANS 跟踪事务期间创建的临时表。
或者,count(distinct table)
来自 STV_BLOCKLIST。
但是,您真的希望不断执行查询来跟踪集群中的表数吗?特别是考虑到临时表将取决于活动事务的数量,这似乎是错误的方法。
相反,我会查看 TotalTableCount
CloudWatch metric。对此创建警报也会更容易。需要注意的是,您可能希望在 95% 时发出警报,因为该指标的分辨率可能很低。