我试图比较不同调用(getBytes / getBinary / getBlob)的性能,以便从BLOB列中获取数据。
我现在正在做的是跟踪通过jdbc驱动程序执行语句并迭代结果集的时间。
//Mark time
ResultSet resultSet = stmt.executeQuery(query);
resultSet.getBytes(1) // or resultSet.getBinary or resultSet.getBlob
//Mark time again
这是一种非常不准确的处理方式,因为一旦我运行第一个查询,由于数据库引擎的缓存,连续调用往往会更快。
有没有更好的方法对这些不同的电话进行绩效评估?
答案 0 :(得分:1)
每次基准测试之间重启? < J / K>
老实说,我认为最好的办法就是加载一个包含大量clob / blob数据的表。也就是说,这可能是一个假的表'create table testtable(id integer primary key,testdata blob);'。一旦你用一些测试数据(顺序增加id)加载它,让你的程序随机查询(使用Math.random)并使用它进行比较。
这应该可以消除大多数与缓存相关的变化,并且可以很好地了解各种blob检索方法之间是否存在显着的性能差异。