Raymond Kroeker wrote:
Hello Kristian,
Thank you for your reply. In client/server mode the derby server
currently uses no jvm memory settings, however the derby client
application uses -Xms512m -Xmx1024m.
Okay. This is to be expected, as LOBs are currently materialized in the
client when they are retrieved (and in some cases when they are sent to
the server).
The LOCATOR-work will improve the clients ability to handle large LOBs
on the server.
The same blob is being written to and retreived from the database in
both the client and server software. I have had successfull attempts at
storing 5 x 100MB blobs then had an out of memory error within the derby
network server when retreiving a 12MB blob.
1. My blobs vary in size. Up to 100MB has worked, 12MB had a failure
in the network server.
2. I insert them using ps.setBinaryStream(1, stream, length); and
retreive them using rs.getBlob("CONTENT").getBinaryStream(). Both
workflows are issued from the database client.
Using the setBinaryStream with a length argument is good, and should
allow you to stream any Blob to the server.
3. The heap size for the derby server is default, the heap size of
the derb client is -Xms512m -Xmx1024m.
I too have had no issue with respect to the embedded client, and my
out of memory error occured within the network server so I am confused a
little.
Did you run with Java SE 6 and get a stack trace when the OOME happened?
If so, I'm sure it would be interesting to see where it happened for the
people working on these issues. If you want stack traces with line
numbers in them, you must download the debug-distribution (from the
db.apache.org/derby site).
The Derby network server is a component/layer on top of the embedded
driver. It is possible that even though the embedded driver is capable
of handling Blobs up to 2GB-1, the network server might not be.
thanks,
--
Kristian
Raymond
On 3/27/07, *Kristian Waagan* <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
Raymond Kroeker wrote:
> I have encountered some entries in the mailing list suggesting that
> large BLOB content is not supported when using the
> network client/server. By not supported I mean either the client
or the
> server run out of memory when the content is
> sufficiently large.
>
> My own tests on version 10.2.2.0 <http://10.2.2.0>
<http://10.2.2.0> suggest that this is
> not the case; however I wanted to know if anyone can provide a
> confirmation one way or another of this. Thanks.
Hello Raymond,
From your mail I understand that you are able to use sufficiently
large
BLOBs for you purpose with Derby 10.2.2.0 <http://10.2.2.0> in
client/server mode.
Would you mind telling us a little more about your use of Derby?
Quite some work has been done to remove problems with LOB handling in
Derby, and more work is being done as we speek (implementing
LOCATOR-based handling of LOBs).
That said, I'm not sure we are exactly where we want to be in Derby
10.2.2.0 <http://10.2.2.0>.
A few questions;
1) How big are your BLOBs?
2) Do you both insert and retrieve them from/on the client?
3) What are your JVM settings? (heap size)
As far as confirmation goes, I have tested embedded earlier with 2GB-1
LOBs without out-of-memory problems. I am under the impression that
stream data still has to be materialized on the client before it is sent
to the server.
Can anyone else confirm this?
Will the LOCATOR-work fix the issue?
regards,
--
Kristian
>
> --
> ---------------------------------------------------------
> Raymond Kroeker
--
---------------------------------------------------------
Raymond Kroeker