[
https://issues.apache.org/jira/browse/DERBY-4620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12858532#action_12858532
]
Kristian Waagan commented on DERBY-4620:
----------------------------------------
>From the HPROF dump you referenced, I get the (partial) histogram below.
>Doesn't seem too bad to me.
Two questions:
o What was the max heap size set to when you got this OOME?
o What was the Derby page cache size set to? (looks like maybe the default of
1000?)
If this is a JVM bug, it will be hard to - and maybe not predictable - to make
a work-around for it in Derby.
Instance Count Size (KB) Class
233'173 7'286 class org.apache.derby.iapi.types.SQLVarchar
100'376 7'018 class
[Lorg.apache.derby.iapi.types.DataValueDescriptor;
5'276 5'533 class [B
365'401 4'282 class [[C
118'855 3'714 class org.apache.derby.iapi.types.SQLChar
705'875 3'446 class org.apache.derby.iapi.types.SQLInteger
158'660 1'859 class org.apache.derby.iapi.types.SQLDecimal
85'835 1'437 class [Ljava.lang.Object;
70'744 1'105 class java.util.HashMap$Entry
50'995 957 class [C
84'979 746 class org.apache.derby.iapi.types.SQLLongint
40'015 664 class
org.apache.derby.impl.store.raw.data.StoredRecordHeader
216'015 632 class org.apache.derby.iapi.types.SQLSmallint
307 600 class [Ljava.util.HashMap$Entry;
38'259 597 class org.apache.derby.iapi.types.SQLTimestamp
13'270 518 class org.apache.derby.iapi.types.SQLClob
40'018 468 class org.apache.derby.impl.store.raw.data.RecordId
70'179 274 class org.apache.derby.iapi.store.access.KeyHasher
13'298 207 class
org.apache.derby.impl.store.access.heap.HeapRowLocation
1'000 175 class
org.apache.derby.impl.store.raw.data.StoredPage
14'866 174 class java.util.ArrayList
2'487 170 class [I
1'000 164 class
[Lorg.apache.derby.impl.store.raw.data.StoredRecordHeader;
2'104 156 class java.lang.Class
1'542 110 class [S
12'753 99 class org.apache.derby.iapi.types.SQLDate
3'939 61 class java.lang.String
368 46 class
[Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
> Query optimizer causes OOM error on a complex query
> ---------------------------------------------------
>
> Key: DERBY-4620
> URL: https://issues.apache.org/jira/browse/DERBY-4620
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.5.3.0
> Environment: java version "1.6.0_17"
> Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
> Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
> Linux rocio.xxx 2.6.24-27-generic #1 SMP Fri Mar 12 01:10:31 UTC 2010 i686
> GNU/Linux
> Reporter: Chris Wilson
> Attachments: query-plan.txt
>
>
> I have a query that generates about 2,000 rows in a summary table. It runs
> fast enough (~30 seconds) on MySQL. The same query on Derby runs for about 10
> minutes and then fails with an OutOfMemoryError.
> I have created a test case to reproduce the problem. It's not minimal because
> it relies on a rather large dataset to reproduce it, and it's not trivial,
> but I don't mind doing a bit of work trimming it if someone can point me in
> the necessary direction.
> You can check out the test case from our Subversion server here:
> http://rita.wfplogistics.org/svn/trackrita/rita/doc/derby-oom-slow-query
> which includes a pre-built Derby database in "testdb.derby". If this database
> is deleted, "test.sh" will recreate it, but that takes about 10-15 minutes.
> Just modify the script "test.sh" to point to your Derby libraries, and run it
> (or just execute the commands in "movement_complete.sql") to demonstrate the
> problem. You can view the source of that file online here:
> http://rita.wfplogistics.org/trac/browser/rita/conf/movement_complete.sql
> The first "insert into movement_complete" (starting around line 4) takes
> about 15 seconds to complete and inserts 5890 rows. The second, starting
> around line 54, does not complete in reasonable time on Derby. On MySQL, it
> runs in 28 seconds and inserts 2038 rows. On Derby, after 10 minutes I get:
> JAVA ERROR: java.lang.OutOfMemoryError: Java heap space
> ij> ERROR X0Y67: Cannot issue rollback in a nested connection when there
> is a pending operation in the parent connection.
> (process exits)
> It does not output the query plan in this case.
> Following the suggestion of Bryan Pendleton, I tried increasing the JVM
> memory limit from the default to 1024m, and this allows the query to finish
> executing quite quickly. I guess that means that the optimiser is just taking
> a lot of memory to
> optimise the query, and it spends forever in GC before finally hitting OOM
> and giving up when using the default settings.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.