Java 配置单元中Statement.setMaxRows与Statement.setFetchsize之间的区别是什么
我正在运行针对Hive的查询。同样的查询应该与其他JDBC驱动程序(也就是说,其他关系数据库)一起使用 我不能使用方法语句.setFetchSize,因为配置单元JDBC 0.13.0不支持它 我正试图解决这个问题,因此,我采用了另一种类似的方法:语句。setMaxRows 在哪些情况下,我应该使用Statement.setMaxRows vs Statement.setFetchsize 可以互换使用吗Java 配置单元中Statement.setMaxRows与Statement.setFetchsize之间的区别是什么,java,mysql,hadoop,jdbc,hive,Java,Mysql,Hadoop,Jdbc,Hive,我正在运行针对Hive的查询。同样的查询应该与其他JDBC驱动程序(也就是说,其他关系数据库)一起使用 我不能使用方法语句.setFetchSize,因为配置单元JDBC 0.13.0不支持它 我正试图解决这个问题,因此,我采用了另一种类似的方法:语句。setMaxRows 在哪些情况下,我应该使用Statement.setMaxRows vs Statement.setFetchsize 可以互换使用吗 谢谢。不,不能互换使用。他们做不同的事情。setMaxRows=可以返回的总行数。setF
谢谢。不,不能互换使用。他们做不同的事情。setMaxRows=可以返回的总行数。setFetchSize=将在每次数据库往返中返回的编号,即 给JDBC驱动程序一个关于 当有更多行时,应从数据库中提取的行数 此语句生成的ResultSet对象需要 设置最大行数的限制 此语句对象生成的任何ResultSet对象都可以 包含到给定的数字 事实上,由于setFetchSize是一个提示,驱动程序可以随意忽略它,并做它认为合适的事情。所以不要担心HiveJDBC不支持这一点 请注意,setMaxRows所做的只是 减小ResultSet对象的大小。这不会影响速度 查询的最后一步。setMaxRows不会更改实际使用的SQL 例如,top/limit/rownum-这样它就不会改变DB所做的工作。这个 如果有更多结果,查询将返回比您的限制更多的结果 返回结果,然后截断它们以适合您的结果集 很好地解释了setFetchSize的重要性: 对于JVM内的性能和内存管理非常重要 它控制从JVM到数据库的网络调用的数量 以及相应地用于结果集处理的RAM量
顺便说一句,setFetchSize可以在java.sql.Statement和java.sql.ResultSet上设置。默认值由创建结果集的语句对象设置。提取大小可以随时更改。Hive JDBC也有自己的功能。您可以参考Hive V0.13.0中是否确实不支持“setFetchsize”??那么为什么不针对V0.13.0服务使用V0.13.1驱动程序(或0.14等)?您可能也想知道