You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
由于我们需要根据分组键的信息去找到相同组的数据,查询的时候就需要携带上分组键的信息。比如 select actorid,SUM(filmid) group by actorid。这个sql是查演员有多少部电影作品。在merger计算的时候需要通过actorid在sqlRows列表中找到相同actorid的数据。当然这个是针对分组键不是shardingkey的情况。
仅限中文
使用场景
分组键的选择
● 分组键是shardingkey
如果是shardingkey的情况,意味着一个组的元素只会在一个sql.Rows中,逻辑和batchMerger差不多,一条一条从sqlRows里面拿数据就可以了。我们可以直接复用即可
● 分组键不是shardingkey
不是shardingkey的情况就比较恶心一点了,意味着一个组的元素可能分布在多个sql.Rows。我们需要拿到全部数据然后根据分组键的信息拿到同一个组的信息,进行merger计算。
这种计算方式很显然如果数据量比较大会导致内存占用过多。这个问题比较难解决。用户可以自己通过控制结果集大小来控制内存大小。对这方面我们不做控制。因为我们无法得知用户的具体一行有多大数据。我们到底是1000条去进行限制还是说2000条。
分组信息的匹配
由于我们需要根据分组键的信息去找到相同组的数据,查询的时候就需要携带上分组键的信息。比如 select actorid,SUM(filmid) group by actorid。这个sql是查演员有多少部电影作品。在merger计算的时候需要通过actorid在sqlRows列表中找到相同actorid的数据。当然这个是针对分组键不是shardingkey的情况。
设计
The text was updated successfully, but these errors were encountered: