[horde] Database performance problem with Horde3/IMP4 with large user base

Chuck Hagenbuch chuck at horde.org
Thu Sep 8 11:49:03 PDT 2005


Quoting Luc Germain <Luc.Germain at USherbrooke.ca>:

> Concerning the database performance problem reported last week for horde
> v3 with a large user base, I did some simulations on our database, and
> I can confirm that the requests that generate a heavy load on the
> database server are those that evaluate permissions on the datatree
> table, like this one:
>
> SELECT c.datatree_id, c.datatree_name FROM horde_datatree c LEFT JOIN
[etc]

> Apart from redesigning the database, the only way I see to support lots
> of concurrent users would be to cache the results of these permissions
> evaluation requests in the user session for some configurable time. Is
> it a solution that would be acceptable to horde developers? Would it be
> easy to implement?

First, as Kevin mentioned, History has been moved out of the DataTree 
tables (see http://bugs.horde.org/ticket/?id=2298), which speeds up 
history lookups a lot, and also empties a _lot_ of data out of the 
datatree tables. That's a start. It might be possible to do the same 
thing for permissions and/or shares. It'd be tricky but perhaps at this 
point worth it.

I would love to work on this but I'm extremely busy right now. If 
someone wanted to do code for it, just look at the History changes and 
send it in.

As for caching, caching in the session would be pretty easy; if we're 
careful it shouldn't even affect session size too much. The flip side 
is that permissions changes would take a logout/login cycle to show up 
- would that be acceptable to people? (yes, if you initiate the change 
yourself, it can be flushed from _your_ session, but flagging other 
sessions would be tricky and might end up losing us the performance 
gains anyway).

-chuck

-- 
"But she goes not abroad in search of monsters to destroy." - John 
Quincy Adams


More information about the horde mailing list