Forum OpenACS Development: Performance issues in ACS-Core

Collapse
Posted by Malte Sussdorff on
We have a couple of performance issues due to not caching information that is cachable. Here is a list of what I found out when doing performance tuning for assessment:

- get_table_name (DB Call in CR). This query is executed on every insert of an item and on various other occassions. It returns the table_name associated with an acs_object_type. According to my understanding, you cannot (better maybe: should not) change the table_name associated with an acs_object_type without restarting the server (read: Upgrade).

- package_object_attribute_list (ACS-Subsite Package Procs). Same here, the query retrieves a list of attributes for a specific object_type, which shouldn't change either unless your restart your server.

Do I need to TIP either of these changes? Should I write a general TIP to allow performance changes that allow the use of util_memoize on all db_queries that return values that are not supposed to change without a restart of the server?

Collapse
Posted by Don Baccus on
The first assumption is correct, the second is not - you can add attributes dynamically to an installation.

The second issue should probably be dealt with in conjuction with daveb and others working on dynamic types and the Tcl object type definition API...

Collapse
Posted by Malte Sussdorff on
Jeff mentioned that the second assumption is wrong. Sadly, this query has a performance penalty of 80ms on one of our systems. Yes, I could tune the query, but I think the better way would be to have all applications that change the attribute list of an object_type flush the memoize memory (at least for the object_type cache, if this is possible to be done seperately).
Collapse
Posted by Don Baccus on
Yes, caching plus flushing is the right thing to do, thus my suggestion to coordinate with Daveb and others working on dynamic types, the Tcl type API etc (that will include me when I return to Portland...)