[Zope] Analyzing ZODB objects
dieter at handshake.de
Thu Oct 23 13:47:45 EDT 2003
Bjorn Stabell wrote at 2003-10-23 09:14 +0800:
> > From: Dieter Maurer [mailto:dieter at handshake.de]
> > Bjorn Stabell wrote at 2003-10-22 15:53 +0800:
> > > What is a good tool for analyzing the size of each object
> > > in the ZODB, > pickled and unpacked in memory? I'm using Zope
> > I do not think there is such a tool.
> > I enhanced the output of "fsdump" to include the pickle size
> > of object records in a transaction. The main purpose has been
> > to analyse the reasons for unexpected transaction sizes
> > (turned out to be ZCatalog Metadata).
> Would it be possible to deduct anything about the runtime memory
> footprint of python objects based on their pickle size?
They can be far apart. Although, when your pickle is several MB
your object is not several bytes and vice versa.
> I'm just dreaming here; a tool that would be useful in analyzing and
> optimizing performance of Zope servers, as well as answering questions
> such as "what the heck is in that ZODB?" :) Something like the database
> administration tools you have for RDBMS that allow you to browse and
> change them.
But you can browse and change the ZODB. The tool is called the ZMI.
I do not think you should try this on the raw ZODB level
(the ZODB is a mapping of object ids to objects without any structure;
you do not want to work on this level).
> For the ZODB, I guess this kind of tool could:
> - let you browse the database objects, hieararchical tree-like view,
> perhaps without understanding classes at all, just treating objects as
> containers of other classes and/or basic python data types. kind-of
> like a file system view that:
> - shows the types of objects
> - shows the contents of objects with basic types
> - shows the size of objects and total for its subobjects
> - lets you edit the content types etc
This would be a small extension of the ZMI.
The ZMI already does:
* show the type of objects (visualizes them as icons)
* shows the content of objects as far as the content are
properties. You see the type and the value and can change
* sizes are only shown for some objects (and object overhead is
* do not know what you mean with "content type" but you
can edit the content.
> - lets you browse transactions (like your fsdump?), single or multiple
> at a time, and objects changed in transactions in a similar way to above
> (excluding option to edit objects)
The ZODB currently knows a single use case for browsing transactions:
selecting transactions that should be undone.
What use case do you have in mind.
Unless, I am analysing strange behaviour, I am not interested
in browsing transactions.
> This tool could be standalone, or run through Zope.
You can use the ZMI (more precisely its actions) from a script
(without accessing Zope through HTTP).
> Is this feasible?
I do not yet understand why you would want such a thing.
Can you provide use cases?
More information about the Zope