- 博客(4)
- 收藏
- 关注
转载 Java调用Nashorn引擎的性能优化
使用预编译提高Nashorn执行JS的性能使用--global-per-engine参数,共享上下文提高性能使用function定义JS代码,做到上下文无关,解决并发问题注意不同版本,高并发下执行导致的ScriptException:ReferenceError。
2024-07-04 21:57:20
527
原创 深入了解MySQL的流式查询机制
既然fetchsize这么好用,那MySQL直接设一个值,不就也可以用到缓冲区,不必每次都将全量结果集装入内存。但是,非常遗憾,MySQL的JDBC驱动本质上并不支持设置fetchsize,不管设置多大的fetchsize,JDBC驱动依然会将select的全部结果都读取到客户端后再处理, 这样的话当select返回的结果集非常大时将会撑爆Client端的内存。
2024-07-02 23:45:54
1231
1
原创 Mybatis的流式查询
Mybatis 中的 ResultHandler 相当于数据结果集的处理器,它是一个回调函数(Callback),用来处理每一行数据的结果,这个回调函数可以在查询结果处理到一定量时触发,对结果集数据进行定制化处理。ResultHandler 的使用可以大幅提升数据处理的效率,当我们需要处理大量的数据时,一般会使用 ResultHandler 来进行结果的处理,避免一次查询就全部返回结果,浪费内存资源或造成 OOM。
2024-07-02 23:26:08
2235
原创 JDBC的Fetchsize
当我们执行一个SQL查询语句的时候,需要在客户端和服务器端都打开一个游标,并且分别申请一块内存空间,作为存放查询的数据的一个缓冲区。这块内存区,存放多少条数据就由fetchsize来决定,同时每次网络包会传送fetchsize条记录到客户端。应该很容易理解,如果fetchsize设置为20,当我们从服务器端查询数据往客户端传送时,每次可以传送20条数据,但是两端分别需要20条数据的内存空闲来保存这些数据。fetchsize决定了每批次可以传输的记录条数,但同时,也决定了内存的大小。这块内存,在。
2024-07-02 22:34:45
1770
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人