我遇到集群表的问题,其中密钥由一个char(23)字段和两个TimeStamp字段组成。 char(23)字段包含Alpha-Numeric值。聚类操作永远不会完成。我让它运行24小时仍然没有完成。
之前有没有人遇到过这种问题?我的理论是理由是长关键领域有意义吗?我们处理了更大的没有长键的表,我们始终能够毫无问题地对它们执行数据库操作。这让我觉得在这种情况下它可能与密钥的大小有关。
答案 0 :(得分:0)
群集重写表,因此必须等待锁。它可能永远不会得到它需要的锁。你为什么要设置varchar(64000)?为什么不只是无限制的varchar?这个指数有多大?
如果尺寸有问题,则必须基于索引大小而不是密钥大小。我不知道关闭密钥属性对集群的影响是什么,因为它们被移动到扩展存储中。 TOAST可能会使CLUSTER复杂化,我从来没有听说任何人在TOASTed属性上进行聚类。这样做没有多大意义。任何超过4k的属性都需要TOASTING。
更好的选择是为值创建一个没有可能被烘烤的值的索引,然后在其上进行聚类。这应该给你一些非常接近你得到的东西。