我正在编写一个客户端工具,它使用PreparedStatements查询Postgres DB。我遇到了一些问题。此工具必须支持各种Postgres设置。其中一些设置在事务池模式下使用pgBouncer,该模式不支持准备语句。在此之前确定这一点并不容易,因此这里的一个解决方法是使用prepareThreshold= 0jdbc参数集重试。
我试图弄清楚在默认情况下设置jdbc参数prepareThreshold=0的效果。
据我所知,设置此参数的效果如下:
- 预处理语句的客户端优势(分配更少的Java对象,防止SQL注入)不会受到影响。
- PreparedStatements不再缓存。只有当你一遍又一遍地进行相同的查询时,才是有益的服务器端。我认为默认值是5(也就是说,只有在重复5次查询之后,才能看到性能提升)
我正在使用的工具只发出几个查询,因此我试图了解添加这个JDBC参数是否安全,以及这样做的影响。
1条答案
按热度按时间vxf3dgd41#
不使用预准备语句是安全的。唯一的影响可能是性能有所降低,特别是如果您有许多简短的语句,其中计划语句的开销是显著的。