My understanding of deadlocks is - two processes trying to contend for the same resource - typically two processes trying to 'write' to the same row of data.
If all one process is doing is reading the data - and the other process is updating the data, how is that a resource contention? Yet, in our database, which is set to the default transaction level ReadCommitted, we see several deadlock exceptions.
ReadComitted definition - Data that has been modified (but not yet committed) cannot be read. That is fine – but should SQL Server throw a deadlock exception if it encounters this dirty read taking place?
Does anybody have real-world experience with this scenario? I found a blog post (by the stackoverflow developer, no less :) claiming that this might be true.