2010-10-10 3 views
1

Je viens de tester le datastore H2 (avec Datanucleus 2.x)Stock de données H2 EXTRÊMEMENT lent? (PAS vraiment! Voir EDIT)

La performance est TRES lente. 1/3 de Postgres et 1/10 de MySQL (aprox.)

J'ai été très satisfait par les "spécifications" mais je ne peux pas les voir en "utilisation réelle". http://www.h2database.com/html/performance.html

Y a-t-il un réglage de performance que je pourrais manquer?

EDIT:

H2 ne tarde pas. Est l'un des SGBDR les plus rapides que j'ai testé à ce jour!

je besoin d'aide pour expliquer pourquoi je dois connecter à la base en utilisant le gestionnaire WEB (console H2) pour obtenir la vitesse fantastique de ce moteur DB ... J'ai accidentellement testé mon application lors de la connexion à travers la H2 console WEB "et voilá", problème résolu.

Pourquoi?

+0

Quelle version de H2 utilisez-vous? Quelle est l'URL de votre base de données? Quel est votre cas de test? –

+0

J'utilise la dernière version de H2 Version 1.2.143 (2010-09-18), avec le connecteur JDBC h2-1.2.143.jar. Mon cas de test est un FULL en vedette (couvre presque tous les types et relations java) datastore (bien sûr, dépendant du moteur de persistance Datanucleus) – marcolopes

+0

Avez-vous profilé votre test pour savoir quelle fonction particulière est lente? Habituellement, c'est seulement un qui est responsable de 90% du problème. Une façon simple de profiler est d'utiliser java -Xrunhprof: cpu = samples –

Répondre

5

Par défaut, H2 ferme la base de données lorsque la dernière connexion est fermée. Si votre application ferme la seule connexion après chaque opération, la base de données s'ouvre et se ferme beaucoup, ce qui est assez lent.

Il y a plusieurs façons de résoudre ce problème:

  • utiliser un pool de connexion, ou
  • garder une connexion « sentinelle » ouverte aussi longtemps que l'application est exécutée ou
  • utilisation base de données retardée fermeture en ajoutant: DB_CLOSE_DELAY = 10 à l'URL de la base de données
+0

Merci pour la réponse. J'ai aussi eu un similaire sur le forum de Google H2. C'est exactement le problème! – marcolopes

3

Vous semblez avoir un problème de recherche d'hôte; 5 secondes est un délai d'attente DNS typique.

Questions connexes