Open anancds opened 4 years ago
ResultSet的fetchSize越大、JDBC client端消耗的内存越大,性能也越快
Fetch相当于读缓存,默认Fetch Size值是10,读取10000条记录,一次数据库交互,即rs.next的操作,ResultSet会一次性从数据库服务器,得到10条记录,下次执行rs.next,就直接使用内存读取,不用和数据库交互了,但总计需要有1000次交互,如果使用setFetchSize设置Fetch Size为10000,则只需要一次数据库交互,本地缓存10000条记录,每次执行rs.next,只是内存操作,不会有数据库网络消耗,效率就会高些。但需要注意的是,Fetch Size值越高则占用内存越高,要避免出现OOM错误。
JDBC中Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
(1) executeQuery用于产生单个结果集的语句,该方法返回ResultSet,ResultSet实现了iterator接口,所以无论如何executeQuery不会返回null
(2) executeUpdate方法 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。
返回值是一个整数,用来表示受影响的行数。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
(3)execute方法: 可用于执行任何SQL语句,返回一个boolean值,表明执行该SQL语句是否返回了ResultSet。如果执行后第一个结果是ResultSet,则返回true,否则返回false。但它执行SQL语句时比较麻烦,通常我们没有必要使用。
1.13.4 DataSource考察
关于DataSource的说法错误的是(B) A. DataSource是用于获取数据库链接的接口。 B. DataSource对象的属性不可以修改。 C. DataSource主要有三种类型实现:基本实现、连接池实现、分布式事务实现。 D. 通过DataSource对象访问的驱动程序本身不会向DriverManager注册。
Statement接口提供了执行语句和获取结果的基本方法; PreparedStatement接口添加了处理输入参数的方法; CallableStatement接口添加了调用存储过程核函数以及处理输出参数的方法 SQL的执行需要编译和解析 Statement每次的执行都需要编译SQL PreparedStatement会预编译,会被缓冲,在缓存区中可以发现预编译的命令,虽然会被再次解析,但不会被再次编译,能够有效提高系统性能
考题1: CallableStatement是用用来执行存储过程的,出过考题。 考题2:Statement执行效率比PreparedStatement效率高,是错误的。 参考:https://www.cnblogs.com/noteless/p/10307273.html