Hi
All,
I'm building a high
transaction traffic db application using Zope.
I used for this
tests two DB: MSAccess 97 and SQL Server 7.0 with the ZODBCDA
product
I have made
some tests and I have found this:
The test
is:
I have two DTML
document called Test1 and Test2
I have 2 ZSQL
Queries called Select1 and Select2
I have an external
method (which id is Wait) that call the time.sleep(10) #it sleeps 10
seconds
Test1 calls Select1
and then the Wait()
Test2 calls Select2
First transaction
test:
Select1 and Select2
queries are equal:= select * from Users where name='example'
I call test1 in
a browser and immediately after test2 in another
Browser.
RESULT: Test2 wait
the end of test1 before the page was displayed
Second Transaction
test:
Select1 = select *
from Users where name='example'
Select2 = select *
from Products where id='example'
I call test1 in
a browser and immediately after test2 in another
Browser.
RESULT: Test2 wait
the end of test1 before the page was
displayed!!
Third Transaction
test:
Select1 = select *
from Users where name='example' on the Access Connection
Select2 = select *
from Products where id='example' on the SQL sever
Connection
I call test1 in
a browser and immediately after test2 in another
Browser.
RESULT: Test2 wait
the end of test1 before the page was displayed!!!!!!!!!! :(
Now
Summarizing:
I think the Zope
transaction Server works in every Zope operation. This is good, but it
seems that it uses a bad locking method. I mean when I read a DB (usually a
select) I wouldn't to lock the entire DB and I would let the other DB session
free to call select statements!!
Am I right?? Or I do
some mistake??
Thanks Very much for
your cooperation
Paolo Quaglia
Information Technology
Coordinator
Sitek S.p.A.
[EMAIL PROTECTED]