GC 情况如下:

文章插图
cache 里面存有元素:

文章插图
可以看出 GC 次数有减少,本地缓存的条数由 600 多减到了 11 个,如果导出堆内存还能看出至少降低了几百 M 的本地内存占用 。
另外 , 这个 cache 是有大小限制的,如果因为一个 sql 占了 600 多个位置,那么其他的 sql 的缓存就会被清理,导致其他 SQL 性能会受到影响,甚至如果机器本身内存不高,还会因为这个 cache 过大而导致频繁的 Full GC
大家以后在使用 Sharding JDBC 进行批量操作的时候就需要多注意了
另附上拆分为固定大小的数组的工具方法如下:
public class ShardingUtils {private static Integer[] nums = new Integer[]{800,500,300, 200, 100, 50, 25, 10, 5, 2, 1};public static <T> List<List<T>> shard(final List<T> originData) {return shard(originData, new ArrayList<>());}private static <T> List<List<T>> shard(final List<T> originData, List<List<T>> result) {if (originData.isEmpty()) {return result;}for (int i = 0; i < nums.length; i++) {if (originData.size() >= nums[i]) {List<T> ts = originData.subList(0, nums[i]);result.add(ts);List<T> ts2 = originData.subList(nums[i], originData.size());if (ts2.isEmpty()) {return result;} else {return shard(ts2, result);}}}return result;}}
推荐阅读
- 2022,一个Java程序猿的装机配置
- shardingsphere-jdbc 水平分表学习记录
- susliks 打地鼠 方法记录
- 附踩坑记录 我用EasyExcel优化了公司的导出
- 微信长截屏怎么操作(截取聊天记录长图)
- 微信长截图怎么截(截取聊天记录长图)
- linux下搭建oh-my-zsh环境
- 睡觉时磨牙是因为肚子里有虫吗?
- 原神因果命运的花神诞祭任务怎么完成
- 微信好友删除怎么找回(恢复1-5年聊天记录)