useServerPrepStmts=true&cachePrepStmts=true
服务端编译和缓存选项
按照文章介绍 https://www.cnblogs.com/micrari/p/7112781.html
经过3测试取平均值,情况如下:
本地预编译:65769 ms
本地预编译+缓存:63637 ms
服务端预编译:100985 ms
服务端预编译+缓存:57299 ms
从中我们可以看出本地预编译加不加缓存其实差别不是太大,服务端预编译不加缓存性能明显会降低很多,但是服务端预编译加缓存的话性能还是会比本地好很多。
主要原因是服务端预编译不加缓存的话本身prepare也是有开销的,另外多了大量的round-trip。
自己打开general log 查看
useServerPrepStmts=true&cachePrepStmts=true
con.prepareStatement(sql) + execute + close() ; 多次循环, = prepare 创建1次+ excute 多次 //close()后反而会触发服务端缓存
con.prepareStatement(sql) + execute ; 多次循环, = 多次循环(prepare 创建1次+ excute 1次)
useServerPrepStmts=true
con.prepareStatement(sql) + execute + close() ; 多次循环, = 多次循环(prepare 创建1次+ excute 1次)