The book on the topic from the masterful Jim Gray. One of my pet rants is the complete lack of understanding and hence implementation of ACID. From Banks (big ones too) that have mainframe code with no concurrency control whatsover to silver-bullet persistence frameworks that were first published without any concurrency control whatsoever to collaborative or shared editing solutions that were shipped without any concurrency control whatsoever and... well you get the point. This stuff is well understood and well experimented and measured. Don't go try and figure out locking yourself. Don't just do ovine optimistic locking. Go read how this stuff is actually done. Start with failfast, learn the two-phase locking theorem, get on board with idempotence, be the first on your block to get this stuff right. Ok, ok, end of rant.