2009-04-20 4 views
1

J'essaie de comparer les performances des différents appels (getBytes/getBinary/getBlob) pour extraire des données d'une colonne BLOB. Ce que je suis en train de faire est de suivre le temps d'exécution de l'instruction via le pilote jdbc et d'itérer dans le jeu de résultats.jdbc test de performance pour obtenir des données CLOB/BLOB

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

Ceci est une façon très imprécise de faire les choses car une fois que je lance la première requête, les appels consécutifs ont tendance à être plus rapide en raison de la mise en cache du moteur DB.

Existe-t-il un meilleur moyen d'évaluer la performance de ces différents appels?

Répondre

1

Redémarrez-vous entre chaque série de tests? Honnêtement, je pense que la meilleure approche serait simplement de charger une table avec beaucoup de données clob/blob. C'est-à-dire, peut-être une fausse table comme celle-ci 'create table testtable (id clé primaire, testdata blob);'. Une fois que vous l'avez chargé avec quelques données de test (en augmentant séquentiellement les identifiants), faites interroger votre programme aléatoirement (en utilisant Math.random) et utilisez-le pour votre comparaison.

Cela devrait éliminer la plupart des variations liées à la mise en cache, et vous donner une bonne idée de la différence significative entre les performances des différentes méthodes de recherche de blob.

Questions connexes