It is down to the final two chapters of the book by Alex Kuznetsova. Check out the previous chapter here. The review of this book is certainly taking longer to produce than I had planned. However, I think you find that the book is still worth it and that this little series is also worth it. I hope that the spread of this series is at least getting to a few more people here and there and that more people may get a copy of “Defensive Database Programming”.
This chapter is about concurrent queries and Isolation Levels. I think these seem to be a hot button of late – at least I have been hearing more and more talk about them than in the near past. Alex starts the chapter with a stark realization. He states:
Even the simplest SELECT, against one table, may retrieve incorrect results when the base table is being modified at the same time. (p. 297)
Think about that statement for a bit. I imagine it won’t take you long to realize that it is true. I am certain that you have come up with several examples that underscore that statement.
Alex then progresses through Isolation levels giving a demonstration of what will happen under the described circumstances. This chapter is not intended to explain the differences between the Isolation levels, but merely to demonstrate what could happen – as has been the theme throughout the book to this juncture. These examples that Alex uses first describe a theoretical problem and then he reproduces the theoretical problem with real world scenarios.
Alex also outlines in this chapter some considerations for choosing the correct Isolation level for your business needs. Pros and Cons are weighed and usefulness of the Isolation level is discussed. Alex also offers up the notion of using a query hint to issue a table lock when querying the database. Due to the reciprocal effects Alex also states that it is almost never really an option.
Alex goes the extra mile in this chapter by discussing how we can minimize deadlocks.
In the end Alex makes a recommendation as to which Isolation level he would use. Check it out and see for yourself.