![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
In the last few days I've been collaborating with Sergio Lopez at Nologin in Spain (http://www.nologin.es/portal/en/about+nologin) on an informal benchmark using Ingres. Sergio is primarily interested in PostgreSQL and Oracle, but very knowledgeable about Ingres too. To cut a long story short, in his benchmark I have been able to increase the performance of Ingres by a factor of 10 by making a few simple configuration changes and structuring the tables appropriately. The benchmark is very loosely based on the (infamous) TPC-C benchmark, and involves running a number of concurrent clients executing a mix of 5 different OLTP-type transactions. Three of the most effective changes I made were: relaxing the system isolation level to READ COMMITTED; increasing system_maxlocks to 100, and making all but two of the tables ISAM. (The remaining two I made into hash tables.) This highlights something that I've wondered about for years. Why on earth is the MAXLOCKS threshold still at 10 after almost 25 years?! And why, when almost every other DBMS in the world defaults to an isolation level of READ COMMITTED, does Ingres default to SERIALIZABLE? (Only Sybase AFAIK comes close, defaulting to REPEATABLE READ.) Is there any good reason I shouldn't suggest an enhancement to these seemingly very silly defaults? (I know the SQL standard calls for SERIALIZABLE isolation by default, but the standard calls for a number of silly things that Ingres doesn't do.) -- Roy UK Ingres User Association Conference 2009 will be on Tuesday June 9, 2009 Go to http://www.iua.org.uk/join to get on the mailing list. _______________________________________________ Info-Ingres mailing list Info-Ingres (AT) kettleriverconsulting (DOT) com http://www.kettleriverconsulting.com...fo/info-ingres |
#3
| |||
| |||
|
|
The problem with tinkering with the default isolation level is that the implications of not using SERIALIZABLE need to be understood. READ COMMITTED allows non-repeatable reads and phantom rows, both of which could have implications on the quality and accuracy of data being handled by applications. I routinely tell students in training and customers how bad READ UNCOMMITTED (READLOCK=NOLOCK) could be for the quality of their data. |
|
So whilst I am in favour of improving the out-of-the-box defaults, and all sugestions are welcome, we must make sure the appropriate warnings are in place as well. |
#4
| |||
| |||
|
|
Perhaps SERIALIZABLE isolation should be made one of the optional strict SQL92-compliance features, which is where it really belongs since it has adverse consequences even though the standard does call for it, or it could be a separate question at installation time with the same justification as the strict SQL92-compliance question. |
#5
| |||
| |||
|
|
Perhaps SERIALIZABLE isolation should be made one of the optional strict SQL92-compliance features, which is where it really belongs since it has adverse consequences even though the standard does call for it, or it could be a separate question at installation time with the same justification as the strict SQL92-compliance question. I vote for a separate question at installation time - changing the default silently could be dangerous for existing applications. |
![]() |
| Thread Tools | |
| Display Modes | |
| |