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]

 

Reply via email to