>>>With repect to locking on inserts, not quite. If you have page locks you get contention on the 'not yet full' page when doing a high volumn of inserts<<<
Cookie also mentioned this, and it has some merit, but... I see this not as a problem with no row locking, but as a problem with the fact that they *do* use a technique called sector locking.
Locking the whole sector causes side effects that have nothing to do with the characteristics of the particular row in question, or whether that row is locked or unlocked. It would be perfectly fine for that insert row to not be locked, because it doesn't exist until it is written, and after that you don't care if somebody else locks it.
The problem concept is no-row-locking equals sector-locking. This is not quite true. For instance, you can have no locking at all in single user databases, or you can have table level locking, which has actually been used in some cases.
So the problem in question isn't no row locking, it's yes sector locking. As long as we are splitting hairs. Of course, splitting hairs is what I love to do, like the rest of you DB designers. So if I am wrong on some technicality here, please let me know.
Of course it's true that having real row locking would obviate this problem, because of necessity you have manager code that will be handling all active sectors, caching requests for records, and so forth. And that uses physical sector updates only at a lower level.
Chaz |