[Zope-DB] Re: Zope-DCOracle2 vs Tomcat-JDBC performance

M.-A. Lemburg mal@lemburg.com
Tue, 03 Jun 2003 10:14:17 +0200

Umberto Nicoletti wrote:
> Dieter Maurer wrote:
>> Umberto Nicoletti wrote at 2003-5-24 11:29 +0200:
>>  > Still this does not explain the perfomance gain when using query 
>> caching.
>>  > We ran the same test with query caching (settings: max 2000, cache 
>> 100,  > time 60) turned on and got MUCH better results ( only 7 times 
>> slower  > than Tomcat and average response time under 1 sec).
>>  > I would believe that those security check would be done also with 
>> cached  > results...
>> You are right.
> So I am lead to conclude that maybe something is 'wrong' with the thread 
> implementation in Zope/Python.
> I read something about it and, if I recall correctly, it stated that if 
> a thread was not 'well behaved' in the sense that prior to call a 
> potentially locking external subroutine (as it is the case with Oracle 
> apis, or with file I/O) it didn't release locks, it could hang the 
> interpreter thus slowing down the whole thing including, in the case of 
> Zope, the serving of 'static' pages.

Could be that the DCOracle2 Zope adapter doesn't support concurrently
executing multiple database queries on a single logical connection.
If it doesn't, then all queries are executed serialized and addding
more threads doesn't buy you anything much. *)

Note that his doesn't have anything to do with DCOracle2
releasing the global interpreter lock or not.

FWIW, we have customers running mxODBC on Linux using the
EasySoft ODBC driver. That setup offers pretty good performance.
There's also an open source Oracle ODBC driver you may want
to have a look at:


And of course, DataDirect, Merant, etc. also have Oracle
ODBC drivers which could be used. The DataDirect ones talk
the native Oracle wire-protocol, so should give you an
even better performance.

*) The mxODBC Zope DA explicitly supports this kind of setup
since it was designed and optimized to increase performance
for the case where many Z SQL Methods use a single logical
Zope connection object.

Marc-Andre Lemburg

Professional Python Software directly from the Source  (#1, Jun 03 2003)
 >>> Python/Zope Products & Consulting ...         http://www.egenix.com/
 >>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
EuroPython 2003, Charleroi, Belgium:                        21 days left