Re: EO Caching
Re: EO Caching
- Subject: Re: EO Caching
- From: Chuck Hill <email@hidden>
- Date: Fri, 7 Dec 2007 14:11:01 -0800
On Dec 7, 2007, at 1:56 PM, Jeffrey Simpson wrote:
Thanks for the prompt reply. I forgot to mention we have our own
batch
fetching that does a objectByPrimary key with a delegate that does
not do a
database fetch to weed out the object in memory.
Not too sure what you are doing there or if that is a good idea...
I discovered that by having the ecs use strong references it did
what I
wanted.
What you probably want is to have the ec at the application level and
also an NSArray of the cached objects held by application. Otherwise
the effect on memory usage will likely be unpleasant.
I also found out that is took to long to start an instance.
er, how many objects are you caching here?
In our system each session has a default editing context that we
only use
for querying. Any thoughts on every session sharing the same
default ec?
This way the cache would slowly build.
As the session locks the default EC at the very, very least you would
have an application with effectively no concurrent access. That
seems like a rather high price to pay in terms of the number of
instances you would probably have to have running.
I think the real answer is for us to slowly rewrite our application
to use
more raw rows.
That may be. It really depends on what your model looks like, how
much data you have, and what you need to do.
Chuck
On 12/7/07 1:41 PM, "Chuck Hill" <email@hidden> wrote:
On Dec 7, 2007, at 7:01 AM, Jeffrey Simpson wrote:
I want to preload some EOs and so they are cached. I have set
ERXEC.setDefaultFetchTimestampLag(86400000);
That only applies to faulting, not fetching. You might want to look
at the much feared EOSharedEditingContext or at Wonder's EO caching
classes (there are three or so, IIRC). Also look at the "Cache in
memory" setting in EOModeler.
I preload my EOs and do some
batch fetching. Later on I use a fetch spec to query from the
database some
of the cached EOs. They are fully fetched which I understand is the
case.
When I then batch fetch these EOs the system always runs fetches.
It is not clear to me what code you are using here. I will note that
all fetches (ec.objectsWithFetchSpecification) go to the database,
even if the fetched data is then discarded. Batch fetching is a
fetch.
The time
between this fetch and the preloading is < 5 minutes. If I run the
same
query in a the same ec then the EOs are cached. Any idea of why
there is no
caching between the 2 ecs?
No, not without a clearer understanding of your code.
Chuck
Jeffrey Simpson
Youth For Understanding USA
email@hidden
Telephone: (240) 235-2114
FAX: (202) 235-2104
Preparing young people for their responsibilities and opportunities
in a
changing, interdependent world.
--
Practical WebObjects - for developers who want to increase their
overall knowledge of WebObjects or who are trying to solve specific
problems.
http://www.global-village.net/products/practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden