面试题答案
一键面试- 离散性原则:片键应具有良好的离散性,避免数据集中在少数几个片键值上。例如,使用时间戳作为片键时,如果数据按时间顺序插入,可能导致数据集中在最新的时间戳范围内,此时可以考虑对时间戳进行一些处理(如取模等方式)以增加离散性。
- 基数适中原则:片键的基数既不能过大也不能过小。基数过大,会导致每个分片上的键值过于分散,增加数据迁移成本;基数过小,会造成数据分布不均匀。比如用户ID,如果用户数量庞大,直接使用用户ID作为片键基数可能过大,可以考虑对用户ID进行某种聚合(如按地区等维度聚合)。
- 查询相关性原则:片键应与常见查询条件相关。若经常按照某个字段进行查询,将该字段设为片键能提高查询效率。例如电商系统中,常按商品类别查询商品信息,商品类别字段就可考虑作为片键。
- 避免高频率更新原则:尽量避免选择频繁更新的字段作为片键,因为片键更新会导致数据在分片中迁移,影响系统性能。如用户的登录次数这类频繁变化的字段就不适合作为片键。