In a multi-process/multi-thread system, locking is central to maintain data consistency and keep things in order. It is inevitably at the root of almost all the concurrency and scalability problems. To understand the behavior of such a system and to troubleshoot its performance problems, you have no choice but to have a good grasp of its locking behavior.
For this to happen, we need to begin with understanding the locking behavior of the basic building blocks offered by SQL Server in construcitng such a system. As such, one would think that the basic locking behavior of these building blocks (such as the T-SQL commands and operations) would be well documented. Unfortunately, that is not the case at all. In fact, the locking behavior of the basic SQL Server constructs is rarely, if at all, documented in SQL Server Books Online.
True, we may have learned about how commands such as UPDATE STATISTICS may acquire and release locks from blogs, newsgroups, or whilepapers. But it seems to me that locking is such a fundamental and integral part of any command or operation that without its explicit description the documentation for the command or operation would be incomplete. True, we all have run tests to find out a certain locking behavior. But I'd rather spend time not to study the locking behavior of the basic SQL Server constructs. Instead, it would be more productive to spend time studying the behavior of the system constructed on top of them.
True, the locking behavior of even some of the most basic commands can be complex and dynamic in nature. It is probably difficult to document. That should not be the reason for not even trying.
I wish in the documentation for each SQL Server command or operation there were a separate section on its locking behavior, just as there is a section for syntax and a section for permissions. Is that too much to wish for?