考虑我有一个非常庞大的表,需要在整个RDBMS集群中进行分片。我需要决定分区表的分区键。显然这个分区键不能是一个人为键(例如:自动生成的主键列),因为应用程序需要保持计算出碎片的逻辑取决于来自请求数据的自然键。考虑以下情况
如果自然键未在系统中均匀分布
a) Is it a good idea to even consider this table for sharding ?
答案 0 :(得分:0)
如果密钥分布不均匀,则表是否已分区可能没有任何区别。它必须读取几乎相同数量的行才能完成查询。请记住,分区并不总是会提高性能。跨分区读取可能会更慢。因此,请确保在选择分区键之前分析所有查询需求。
我不记得任何可以为这种情况生成分区键的函数。有些函数可以为您的数据生成GUID或MD5,但结果将比您拥有的自然键更差。结果将更倾向于独特的价值观。此外,它会降低性能,因为它必须运行额外的逻辑。
另请考虑清除旧的或未使用的数据。完成后,您可能没有分区需求。