获取CLOB / BLOB数据的jdbc性能测试

时间:2009-04-20 18:44:54

标签: java database jdbc

我试图比较不同调用(getBytes / getBinary / getBlob)的性能,以便从BLOB列中获取数据。

我现在正在做的是跟踪通过jdbc驱动程序执行语句并迭代结果集的时间。

//Mark time
ResultSet resultSet = stmt.executeQuery(query);
resultSet.getBytes(1) // or resultSet.getBinary or resultSet.getBlob
//Mark time again

这是一种非常不准确的处理方式,因为一旦我运行第一个查询,由于数据库引擎的缓存,连续调用往往会更快。

有没有更好的方法对这些不同的电话进行绩效评估?

1 个答案:

答案 0 :(得分:1)

每次基准测试之间重启? < J / K>

老实说,我认为最好的办法就是加载一个包含大量clob / blob数据的表。也就是说,这可能是一个假的表'create table testtable(id integer primary key,testdata blob);'。一旦你用一些测试数据(顺序增加id)加载它,让你的程序随机查询(使用Math.random)并使用它进行比较。

这应该可以消除大多数与缓存相关的变化,并且可以很好地了解各种blob检索方法之间是否存在显着的性能差异。