Sagewire Logo

Apache Derby performance disappointing

7 Message(s) by 5 Author(s) originally posted in java databases


From: James Appleby Date:   Thursday, August 16, 2007
Hello,

I am currently adding Derby support to an application that already has
support for multiple DBMS via JDBC. I have found it to be
significantly slower than SQL Server or MySQL when performing the same
task. To provide this, I have created an exact duplicate data base
within both Derby and SQL Server and ran the same query on both,
gathering timings.

The test query returns about 16,000 rows from a table with about
100,000 on it, grouping data using a timestamp that is converted to
the nearest second. This is one of the heaviest queries within the
application and what chosen to put the DBMS under the most strain. To
prevent caching interferring with the result, I made sure to restart
the DBMS before running the query.

SQL Server was at least 4 times quicker returning the results compared
to Derby. I had expect ed SQL Server to outperform Derby, but not by
such a huge factor. Is this result what is expected?

The initial test was based on a default, untuned installation. I then
followed tuning guidelines for Derby, increasing the page size to 32K
and increasing the maximum page count to far in excess of what should
be needed to return the amount of data I am testing. This gave some
improvements but it is still takes three times that of the same query
time on SQL Server.

As Derby is marketing itself on the same level as MySQL (Apache
provide performance figures comparing it to this) then I anticipated
similiar performance, but instead it is taking twice as long as I
consider reasonable. Is this in line with anyone elses experience?


From: GArlington Date:   Friday, August 17, 2007
wrote in message:
Hello,
I am currently adding Derby support to an application that already has
support for multiple DBMS via JDBC. I have found it to be
significantly slower than SQL Server or MySQL when performing the same
task. To provide this, I have created an exact duplicate database
within both Derby and SQL Server and ran the same query on both,
gathering timings.
The test query returns about 16,000 rows from a table with about
100,000 on it, grouping data using a timestamp that is converted to
the nearest second. This is one of the heaviest queries within the
application and what chosen to put the DBMS under the most strain. To
prevent caching interferring with the result, I made sure to restart
the DBMS before running the query.
SQL Server was at least 4 times quicker returning the results compared
to Derby. I had expected SQL Server to outperform Derby, but not by
such a huge factor. Is this result what is expected?
The initial test was based on a default, untuned installation. I then
followed tuning guidelines for Derby, increasing the page size to 32K
and increasing the maximum page count to far in excess of what should
be needed to return the amount of data I am testing. This gave some
improvements but it is still takes three times that of the same query
time on SQL Server.
As Derby is marketing itself on the same level as MySQL (Apache
provide performance figures comparing it to this) then I anticipated
similiar performance, but instead it is taking twice as long as I
consider reasonable. Is this in line with anyone elses experience?



I presume you created all indexes which exist on SQL server ?


From: James Appleby Date:   Friday, August 17, 2007
The database schema and content are identical. All tables, views and
contraints including indexes exist within both. In your experience,
would you expect Derby to be so much less performant?


From: Roedy Green Date:   Friday, August 17, 2007
In your experience,
would you expect Derby to be so much
less performant?


Sun typically puts out only reference implementations, not
high performance ones. It doesn't want to put its customers
out of business. If it did, it'd discourage anyone
developing Sun tools for fear Sun'd use its money and
expertise to destroy them.
--
Roedy Green Canadian Mind Products
The JAVA Glossary
http://mindprod.com


From: =?ISO-8859-1?Q?Arne_Vajh=F8j?= Date:   Friday, August 17, 2007
wrote in message:
In your experience,
'd you expect Derby to be so much
less performant?
Sun typically puts out only reference implementations, not
high performance ones. It doesn't want to put its customers
out of business. If it did, it'd discourage anyone
developing Sun tools for fear Sun'd use its money and
expertise to destroy them.



And ?

SUN JAVA DB is just a Derby with support.

Derby is developed by Apache. They don't hold back
on developing products to please commercial vendors.

(before Apache it was IBM and Informix that owned the database
under the name Cloudscape, but it has been under Apache for
3 years now)

Arne


From: =?ISO-8859-1?Q?Arne_Vajh=F8j?= Date:   Saturday, August 18, 2007
wrote in message:
I am currently adding Derby support to an application that already has
support for multiple DBMS via JDBC. I have found it to be
significantly slower than SQL Server or MySQL when performing the same
task. To provide this, I have created an exact duplicate database
within both Derby and SQL Server and ran the same query on both,
gathering timings.
The test query returns about 16,000 rows from a table with about
100,000 on it, grouping data using a timestamp that is converted to
the nearest second. This is one of the heaviest queries within the
application and what chosen to put the DBMS under the most strain. To
prevent caching interferring with the result, I made sure to restart
the DBMS before running the query.
SQL Server was at least 4 times quicker returning the results compared
to Derby. I had expected SQL Server to outperform Derby, but not by
such a huge factor. Is this result what is expected?



My experience show that Derby perform well in INSERT, but are
clearly behind in SELECT.

So it may very well be as it is.

Arne


From: Dyreatnews Date:   Monday, August 27, 2007
James Appleby <james.w.appleby@xxxxxxxxxxx> writes:

Hello,
I am currently adding Derby support to an application that already has
support for multiple DBMS via JDBC. I have found it to be
significantly slower than SQL Server or MySQL when performing the same
task. To provide this, I have created an exact duplicate database
within both Derby and SQL Server and ran the same query on both,
gathering timings.



You really should consider subscribing to derby-user and ask your
question there. To get help you probably need to include some more
details about your schema and the load you are running.

As Derby is marketing itself on the same level as MySQL (Apache
provide performance figures comparing it to this) then I anticipated
similiar performance, but instead it is taking twice as long as I
consider reasonable. Is this in line with anyone elses experience?



For a given type of load that is true. It may not be for your load.

--
dt



Next Message: INSERTINg a Clob in a portable way


Blogs related to Apache Derby performance disappointing

The Gears That Power the Tubes: Google Gears
IBM and Sun, which both currently support versions of the Apache Derby database (originally developed by IBM under the Cloudscape moniker), are RedMonk customers, as is another embedded database supplier, db4objects. ...

Apache Derby performance disappointing
comp.lang.java.databases: Apache Derby performance disappointing.


Programming | Sports | Autos

copyright 2006
Valid XHTML 1.0 Transitional