2009-04-20 2 views
1

Я пытаюсь сравнить производительность различных вызовов (getBytes/getBinary/getBlob) для получения данных из столбца BLOB.тестирование производительности jdbc для получения данных CLOB/BLOB

Что я сейчас делаю, это отслеживание времени выполнения инструкции через драйвер jdbc и итерация через набор результатов.

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

Это очень неточный способ делать вещи, потому что, когда я запускаю первый запрос, последовательные вызовы, как правило, быстрее из-за кэшированием двигателя децибел.

Есть ли лучший способ оценить эффективность этих разных вызовов?

ответ

1

Перезагрузка между каждым эталоном пробега? <j/k>

Честно говоря, я думаю, что лучшим подходом было бы просто загрузить таблицу с большим количеством данных clob/blob. Т.е., возможно, поддельная таблица вроде этого: «create table testtable (id integer primary key, testdata blob);». После того, как вы загрузили его с помощью нескольких гигабайт тестовых данных (последовательно увеличивая идентификаторы), произвольно запросите свой запрос программы (используя Math.random) и используйте это для сравнения.

Это должно устранить большинство вариаций, связанных с кешированием, и дать вам хорошее представление о том, действительно ли существует значительная разница в производительности между различными методами извлечения блоков.

Смежные вопросы