例如,我使用 c3p0 和一些定义的“maxStatements”来进行准备语句缓存。
这个缓存到底有什么作用?它缓存什么样的数据。在什么级别(数据库,应用程序,..)?
从例子中理解它会很好。例如我有一个查询
从某个表中选择*,其中某个列=?
现在我在未缓存的准备好的语句中发送它。
现在我正在发送它并且它已被缓存。
有什么不同。第一个案例和第二个案例中发生了什么。第一种情况和第二种情况发送到数据库服务器的内容是什么?
Thanks.
如果没有缓存,每次从连接请求一个新的PreparedStatement 时,您都会获得一个新的PreparedStatement。通过缓存,如果您提供相同的 SQL 字符串,您将经常获得完全相同的PreparedStatement 类型的 Java 对象。如果您向PreparedStatement提供相同的SQL,即使参数不同,数据库通常也可以重用执行计划等信息,但前提是您继续使用相同的PreparedStatement。缓存不需要您的应用程序保留PreparedStatement 引用本身,从而使这变得更容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)