preparedstatment

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次)

你可能感兴趣的:(preparedstatment)