amazon-web-services - 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 个临时表。
还有其他不包括连接到集群的每个数据库来计算表的想法吗?
解决方案
SVV_DISKUSAGE
如文档所述,该视图仅计算永久表;它不计算在事务中创建的临时表。STV_TBL_TRANS跟踪事务期间创建的临时表。
或者,count(distinct table)
从STV_BLOCKLIST。
但是,您真的希望不断执行查询来跟踪集群中的表数量吗?特别是考虑到临时表将取决于活动事务的数量,这似乎是错误的方法。
相反,我会查看TotalTableCount
CloudWatch 指标。在此创建警报也会更容易。需要注意的是,您可能需要在 95% 时发出警报,因为该指标的分辨率可能较低。
推荐阅读
- angular - Angular 12 升级后 Karma 没有运行单元测试
- google-apps-script - 如何将 FOR LOOP 添加到此 Google 脚本代码中?
- java - 机器人竞赛 -> 机器人在笛卡尔网格上移动。L 是左 90 度,R 是右 90 度,F 是向前一格。请看附件截图
- r - 如何使用ggtext将图像绘制为y轴标签?
- java - 创建比可用处理器更多的线程会产生性能开销吗?
- javascript - 查询 INSERT - 引用和反斜杠
- python - 列表列表的内存问题
- javascript - 将原始 CSS 转换为 Javascript DOM 样式属性
- excel - 如何从 Excel 中获取无序集中的下一个最大值
- javascript - 从其他文件导入变量