If you are looking for the last documentation in the 4.x series, see 4.7.5. Looking for another version? See all documentation.

To test the performance of MySQL and PostgreSQL persistence compared to LevelDB, I ran a series of tests against Fedora 4 with each backend configured.  The tests performed 200 batches, with each batch consisting of:

  1. Creating 1,000 objects with a basic Dublin Core metadata record
  2. Listing 1,000 objects
  3. Retrieving the RDF for the 1,000 objects

Each step was timed, and graphs of the times are shown below.  The test scripts are available to view/download.

Using Client-Supplied Identifiers (Single Container)

 Using client-supplied identifiers, placing all child objects in a single container, the performance of MySQL and LevelDB was very similar, and PostgreSQL performance was a little better:

  • All three had list and read times that were essentially flat as the number of child objects grew
  • LevelDB and MySQL had roughly the same performance for creating objects, but PostgreSQL had better and more consistent performance
  • LevelDB and MySQL both had increasingly erratic performance after around 45,000 child objects were created, while creating objects in PostgreSQL scaled linearly.

Using Auto-Generated Identifiers

Using auto-generated identifiers, placing child objects in a 4-level hierarchy, the performance was similar for create and read times, but significantly different for list operations:

  • All three had create and read times that were essentially flat as the number of child objects grew
  • All three had list times that grew as the number of child objects grew, but the PostgreSQL list operations grew more quickly, and the MySQL list operations grew even more quickly


  • No labels


  1. Esmé Cowles, the y-axis on each of your graphs is "seconds"?

  2. Andrew Woods, yes, the duration in seconds of performing the actions listed in the first section (creating 1000 objects, listing 1000 objects, retrieving them).

    Also, I'm currently testing PostgreSQL to see how it performs, and I'll update this page when I've got results.

    1. Thanks. 

      re:Postgres, that is great. Once you get that working, it would be helpful to add the Maven dependencies and configuration files to the codebase.

  3. It looks like Postgres shows some promise, in comparison to MySQL, that is.