You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by "Seidel. Robert" <Ro...@aeb.de> on 2010/09/27 14:10:56 UTC

found one of my performance issues

Hello,

I've found one reason, why the performance drops (versioned nodes, Oracle bundled db persistence manager). The reason is the node management in the InternalVersionManagerBase getParentNode().

Lets say, Jackrabbit wants to store a versioned node with the uuid 3da05dc3-fb90-4f65-ab21-ca97342ee589.

It first looks, if there is a node beginning with the first two letters 3d. If the node does not exist, it is being created. This loops totally 3 times.

The problem is the create of new child nodes. Maybe in our example the second level node a0 does not exist. What Jackrabbit does is adding the a0 node to the 3d node and storing the 3d node and all its children (NodeStateEx store(NodeState state)). If you have 100 children, then Oracle needs some time to read all these children just to figure out, ups 99 of these already exists.

So, the performance can go down from time to time, until the whole structure is created.

A better way in this case would be to store only that special child node and the parent.

Mit freundlichen Grüßen

i. A. Robert Seidel, Software Infrastructure, Senior Professional
--
AEB GmbH, www.aeb.de
D-70597 Stuttgart, Julius-Hölder-Str. 39
Tel. +49-711-72842-262, Fax -333, robert.seidel@aeb.de
---
AEB Gesellschaft zur Entwicklung von Branchen-Software mbH
Stammsitz Stuttgart
Registergericht: Amtsgericht Stuttgart, HRB 84 31
Gerichtsstand Stuttgart
Geschäftsführer: Peter Michael Belz, Jochen Günzel


Re: found one of my performance issues

Posted by Jukka Zitting <ju...@gmail.com>.
Hi,

On Mon, Sep 27, 2010 at 2:10 PM, Seidel. Robert <Ro...@aeb.de> wrote:
> The problem is the create of new child nodes. Maybe in our example the second
> level node a0 does not exist. What Jackrabbit does is adding the a0 node to
> the 3d node and storing the 3d node and all its children (NodeStateEx
> store(NodeState state)). If you have 100 children, then Oracle needs some time
> to read all these children just to figure out, ups 99 of these already exists.
>
> So, the performance can go down from time to time, until the whole structure is created.
>
> A better way in this case would be to store only that special child node and the parent.

Sounds correct to me. Can you file an improvement request for this?

Do you have ideas on how to implement such an improvement? I guess the
key method to modify is InternalVersionManagerBase.getParentNode().

BR,

Jukka Zitting