Java 获取CLOB/BLOB数据的jdbc性能测试
我试图比较不同调用(getBytes/getBinary/getBlob)从BLOB列中获取数据的性能 我现在正在做的是通过jdbc驱动程序跟踪执行语句的时间,并遍历resultsetJava 获取CLOB/BLOB数据的jdbc性能测试,java,database,jdbc,Java,Database,Jdbc,我试图比较不同调用(getBytes/getBinary/getBlob)从BLOB列中获取数据的性能 我现在正在做的是通过jdbc驱动程序跟踪执行语句的时间,并遍历resultset //Mark time ResultSet resultSet = stmt.executeQuery(query); resultSet.getBytes(1) // or resultSet.getBinary or resultSet.getBlob //Mark time again 这是一种非常不准确
//Mark time
ResultSet resultSet = stmt.executeQuery(query);
resultSet.getBytes(1) // or resultSet.getBinary or resultSet.getBlob
//Mark time again
这是一种非常不准确的方法,因为一旦我运行第一个查询,由于DB引擎的缓存,连续调用往往会更快
是否有更好的方法对这些不同的调用进行性能评估?在每次基准测试运行之间重新启动 老实说,我认为最好的方法就是加载一个包含大量clob/blob数据的表。也就是说,可能是这样一个伪表“createtabletesttable(id integer主键,testdata blob);”。一旦加载了几gig的测试数据(按顺序增加ID),就可以让程序随机查询(使用Math.random)并将其用于比较
这将消除大多数与缓存相关的变化,并让您很好地了解各种blob检索方法之间的性能是否存在显著差异。在每次基准测试运行之间重新启动 老实说,我认为最好的方法就是加载一个包含大量clob/blob数据的表。也就是说,可能是这样一个伪表“createtabletesttable(id integer主键,testdata blob);”。一旦加载了几gig的测试数据(按顺序增加ID),就可以让程序随机查询(使用Math.random)并将其用于比较 这将消除大多数与缓存相关的变化,并让您很好地了解各种blob检索方法之间的性能是否确实存在显著差异