[Rt-devel] SearchBuilder::Record::Cacheable study and call for
comments
June-Yen Huang
jihuang at iis.sinica.edu.tw
Wed Jun 16 10:04:49 EDT 2004
Today, I've study the DBIx::SearchBuilder::Record::Cacheable code.
My conclusion is,
the asumption or design goal of this mechanism should change.
Currently, DBIx::SearchBuilder::Record::Cacheable works fine.
But it will make more concurrency and coherence problems than
performance problems it sloved.
A cache mechanism should not return wrong data,
expire conditation or cached-data lifecycle is the key to ensure this.
But, DBIx::SearchBuilder::Record::Cacheable asume
1. cached-data expire by time-period , default 5 sec.
2. cached-data lifecycle is as long as apache/mod_perl2 process.
Two case may happen
1. cached-data updated in 1111 apache/mod_perl2 process, but
a old copy still in memory of 2222 apache/mod_perl2 process.
2. In 3333 apache/mod_perl2 process, it serve a HTTP request,
which just across 5 sec timeframe,
so a hard luck HTTP request handler prcess,
may get inconsistency data result.
If the caller logic depend on this, wrong page content generated.
and it's run-time random bug , very hard to find it out.
So, I would like to propose a Change Request, to
make the cached-data lifecycle is exactly equal to the lifecycle of
a Run-Time Request(task?) Process.
On the other words, the goal of DBIx::SearchBuilder::Record::Cacheable
is to eliminate the duplication of SQL queries in a request time frame.
To eliminate the computing cost of the same SQL queries is not the
responsibility of DBIx::SearchBuilder. It should be solved by either
DBI layer or DataBase Server-side.
jihuang
More information about the Rt-devel
mailing list