Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Any real world experience with H2 database? [closed]

Tags:

java

database

h2

Has anybody out there got any real world experience with the H2 database? I'm interested in:

  • performance
  • stability
  • bugs
like image 775
David Plumpton Avatar asked May 05 '09 22:05

David Plumpton


People also ask

Is H2 database production ready?

Mainly, H2 database can be configured to run as inmemory database, which means that data will not persist on the disk. Because of embedded database it is not used for production development, but mostly used for development and testing.

Should I use H2 database?

The main reasons not to use H2 (or HSQLDB, or Derby) for production are: Probability of critical bugs: compared to the 'big' databases Oracle, IBM DB 2, MS SQL Server, MySQL, PostgreSQL, the Java databases are relatively new and therefore possibly not as stable (have bugs).

Is H2 database safe?

An open-source Java SQL database, H2 is an in-memory solution that eliminates the need to store data on disk, and is one of the most popular Maven packages, having roughly 7,000 artifact dependencies, Tracked as CVE-2021-42392, the newly disclosed vulnerability has been lurking in H2 since version 1.1.

How can I recover data from H2 database?

H2 Console By default, the console view of the H2 database is disabled. Before accessing the H2 database, we must enable it by using the following property. Once we have enabled the H2 console, now we can access the H2 console in the browser by invoking the URL http://localhost:8080/h2-console.


3 Answers

We use H2 as the storage engine for a very large RCP/Eclipse-based design tool. The tool itself has been in use for over 2 years now on some data-heavy projects so we've stressed H2 pretty thoroughly.

We did a fairly in-depth analysis of other Java embeddable db engines and chose H2. Overall I think we're pretty happy with it. We've had very few stability issues, but, as zvikico says, the development team is VERY responsive.

While the performance is good, sometimes you need to do some optimizations by hand. If you're used to working with enterprise-level databases that do a lot of this optimization for you, it may be a bit of a change. I'd recommend using the EXPLAIN command if you encounter a slow query to see what it's doing. Very often you can switch around the JOIN statements to force it to use indices more efficiently.

So, in short, thumbs up from me!

like image 181
thehiatus Avatar answered Sep 27 '22 22:09

thehiatus


I'm using it as the base of nWire, which is an Eclipse plugin for Java code exploration. It is working in embedded mode as part of the Java process, not as a server.

Overall, it is very stable. I'm working with H2 for a long time now: I encountered some bugs in the early days, but that hasn't happened in some time now. The response of the developer has been great, too.

Regarding performance: it is very good. You can see the tests on the site. I didn't get a chance to compare it to other tools, but I'm very happy with it. In recent versions, it does tend to take a bit more time to open large databases, but that issue seems to be resolved, too.

Some other strong points:

  • Very simple distribution: just one JAR.
  • The embedded web console is very useful for quick access to the database. It proved to be a valuable development tool.
  • Responsive community support, especially from the development team.
like image 45
zvikico Avatar answered Sep 27 '22 23:09

zvikico


I'm using H2 in some pretty heavy server applications with several millions of records. H2's performance is just phenomenal. As always, you need to think through your use of indices though. I was a long time user of MySQL before and have used several enterprise-class databases, but H2 is just smaller, faster and easier to use than the traditional heavyweights. It's also become our database of choice at Tynamo.org

like image 43
Kalle Avatar answered Sep 27 '22 23:09

Kalle