availability of skilled DBAs and vendor support come first and second, which pretty much means only SQL Server, DB2, and Oracle (in that order) would qualify for any serious big implementations
Interesting order. I have no experience with DB2 so I cannot judge. But I'd choose Oracle over SQL Server anytime. Especially in high transactional system where readers will block writers in SQL Server. The locking granularity of SQL Server (and MySQL btw) is just not good enought to allow for a good throughput.
But I have to admit that I haven't worked with SQL Server for quite a while, so I have no experience with newer versions where SQL Server apparently has now MVCC as well, and readers and writers should not block each other any more.
I've worked with all three databases, and I really prefer Microsoft SQL although when you configure MySQL correctly (which is unusual, but possible) the difference is negligable.
The advantage that I see for concurrancy is that Oracle's MVCC allows readers to not be blocked by writers. This is the default, and as far as I know only configuration for Oracle. It is a lovely thing when you look simply at database performance, because it allows the pending reads to complete without even being aware of pending writes... Therin lies the problem!
When you are creating applications that deal with either security or money, blythely ignoring a writer is an invitation to disaster. This allows you (or more accurately the user) to make decisions based on incomplete data because you (the programmer/application) could know that the data is changing underneath you!
Microsoft SQL allows you to set the isolation level several different ways. At the default isolation setting, MS-SQL will allow the writers to block the readers to ensure that once a result set is returned, it is both correct and complete. At the most relaxed setting, MS-SQL is a bit more forgiving than Oracle can be, allowing readers to be completely unaware of writers. At the strictest setting, the readers will not only block the writers against present data but also against inserting new data that would corrupt a re-read of the data!
As I commented in a recent MySQL thread, I like options that (once I understand the consequences) I can set to get the database engine to perform the way that I'd like!