database - 关于Java中的Prepared Statement的问题

标签 database jdbc

我们在 Java 中有一个 Prepared Statement,我们听说它与 Statement 的不同之处在于,这个 Prepared Statement 不需要在每次使用时都进行编译。

我的问题是这个 Compiled Statement 存储在哪里?在使用它的客户端代码中还是由数据库存储?

为什么数据库要存储编译语句,如果存储了多长时间?

最佳答案

数据库有一个查询缓存,这意味着当您执行查询时,数据库会缓存解析/编译的查询,也许还有查询计划以消除 future 的计算。

准备好的语句通常首先缓存在应用程序级别,应用程序容器负责管理语句缓存。大多数应用程序容器都有控制准备好的语句缓存的选项(例如:glassfish)。

如你所见here ,主要区别就像您所说的那样:使用准备好的语句,应用程序可以减少一遍又一遍地编译相同语句的成本。作为旁注,对于大多数应用程序容器,语句必须完全相同(包括空格)才能正确重用,因此在使用手写查询时要小心。

关于database - 关于Java中的Prepared Statement的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828817/

相关文章:

ruby-on-rails - 用另一个字段填充数据库中的字段

php - 如何从数据库中检索图像到 html 表单?

java - 尝试捕捉错误

spring - 如何在 Spring @Configuration 类中使用 HikariCP 配置数据源?

sql - 如何在sql数据库中所有表的所有列中搜索和替换字符串的一部分

database - Redis + “source of truth” 数据库一致性

c++ - Mysql 与 C++ 不工作

java - 有没有办法打印建立jdbc连接的数据库服务器IP?

java - Spring JDBC : unable to get dataSource

java - 插入时出现 MysqlDataTruncation 错误