使用什么字段作为分片主键
在选择分片主键之前,首先要了解系统中的一些常见业务需求。
用户需要查询所有订单,订单数据中肯定包含不同的user_ID、order_time。
后台需要根据城市查询当地的订单。
后台需要统计每个时间段的订单趋势。
根据这些常见业务需求,判断一下优先级,用户操作(也就是第一个需求)必须优先满足。此时如果使用user_ID作为订单的分片主键,就能保证每次用户查询数据(第一个需求)时,在一个分库的一个分表里即可获取数据。
因此,在方案里,最终使用user_ID作为分片主键,这样在分表分库查询时,首先会把user_ID作为参数传过来。
选择字段作为分片主键时,一般需要考虑3个要求:
数据尽量均匀分布在不同的表或库
跨库查询操作尽可能少
所选字段的值不会变(这点尤为重要)