Frequently Asked QuestionsAre there Known Bugs? When is the Next Release?Is this Database Engine Open Source? My Query is Slow How to Create a New Database? How to Connect to a Database? Where are the Database Files Stored? What is the Size Limit (Maximum Size) of a Database? Is it Reliable? Why is Opening my Database Slow? Is the GCJ Version Stable? Faster? How to Translate this Project? Are there Known Bugs? When is the Next Release?Usually, bugs get fixes as they are found. There is a release every few weeks. Here is the list of known and confirmed issues:
Is this Database Engine Open Source?Yes. It is free to use and distribute, and the source code is included. See also under license. My Query is SlowSlow SELECT (or DELETE, UPDATE, MERGE) statement can have multiple reasons. Follow this checklist:
How to Create a New Database?By default, a new database is automatically created if it does not yet exist. How to Connect to a Database?
The database driver is Class.forName("org.h2.Driver"); Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); Where are the Database Files Stored?When using database URLs like jdbc:h2:~/test, the database is stored in the user directory. For Windows, this is usually "C:\Documents and Settings\<userName>". If the base directory is not set (as in jdbc:h2:test), the database files are stored in the directory where the application is started (the current working directory). When using the H2 Console application from the start menu, this is "<Installation Directory>/bin". The base directory can be set in the database URL. A fixed or relative path can be used. When using the URL jdbc:h2:file:data/sample, the database is stored in the directory "data" (relative to the current working directory). The directory is created automatically if it does not yet exist. It is also possible to use the fully qualified directory name (and for Windows, drive name). Example: jdbc:h2:file:C:/data/test What is the Size Limit (Maximum Size) of a Database?Is it Reliable?Some users have reported that after a power failure, the database can sometimes not be opened because the index file is corrupt. In that case, the index file can be deleted (it is automatically re-created). To avoid this, append ;LOG=2 to the database URL. See also: SET LOG. This problem will be solved using the new 'page store' mechanism (currently experimental). That is not easy to say. It is still a quite new product. A lot of tests have been written, and the code coverage of these tests is very high. Randomized stress tests are run regularly. But there are probably still bugs that have not yet been found (as with most software). Some features are known to be dangerous, they are only supported for situations where performance is more important than reliability. Those dangerous features are:
In addition to that, running out of memory should be avoided. In older versions, OutOfMemory errors while using the database could corrupt a databases. Areas that are not fully tested:
Areas considered Experimental:
Why is Opening my Database Slow?If it takes a long time to open a database, in most cases it was not closed the last time. This is specially a problem for larger databases. To close a database, close all connections to it before the application ends, or execute the command SHUTDOWN. The database is also closed when the virtual machine exits normally by using a shutdown hook. However killing a Java process or calling Runtime.halt will prevent this. The reason why opening is slow in this situations is that indexes are re-created. If you can not guarantee the database is closed, consider using SET LOG 2 (see SQL Grammar). To find out what the problem is, open the database in embedded mode using the H2 Console. This will print progress information. If you have many 'Creating index' lines it is an indication that the database was not closed the last time. Other possible reasons are: the database is very big (many GB), or contains linked tables that are slow to open. Is the GCJ Version Stable? Faster?The GCJ version is not as stable as the Java version. When running the regression test with the GCJ version, sometimes the application just stops at what seems to be a random point without error message. Currently, the GCJ version is also slower than when using the Sun VM. However, the startup of the GCJ version is faster than when using a VM. How to Translate this Project?For more information, see Build/Translating. |