I just left working at what is probably the busiest SQL Server database shop that there is. With the stored procedures written correctly and the indexes and statistics setup correctly, and updated correctly blocking was not an issue. At we typically had between 300,000 and 2,500,000 users connected to each SQL Server at a time.
(I know that many people think they have a really big enviroment, but when you are manageing systems with a total load of 500,000 transactions per second you've officially hit the big time.)
SQL Server doesn't start escallating locks from row level locks to page level locks because there are lots of people using row level locks. Lock escalation is done on a per transaction basis. If a single transaction has taken enough row level locks that taking page level locks is more efficient than SQL will use page level locks for that transaction, and that specific object only. After that transaction has completed row level locking will take over for that object again.
calvinsinger,
Some of the big things to do to help avoid locking (SQLDenis will have covered some of this already):
1. Proper hardware design and layout.
2. Proper filegroup design (the correct objects grouped into the correct file groups, and the correct objects broken into the correct file groups).
3. Correct Table design
4. Proper index design
5. Proper index fillfactor settings.
6. Correct usage of isolation levels (including hints such as NOLOCK, PAGELOCK, TABXLOCK, etc).
7. Proper usage of index hints to force the correct index to be used (SQL doesn't always make the correct choice).
8. Making sure that your indexes are defragmented
9. Making sure that your statistics and up to date, and have the proper sampling settings for your situation.
10. Proper data types for the data being stored.
11. The least amount of blob data stored within the database as possible (in most cases, it can be the best place for it).
12. Read only file groups when possible
13. Understanding what kind of locking SQL does when it does inserts and deletes, and how these locks effect other processes which are going on within the database.
14. Understanding the locking implications of SELECT INTO queries
There's plenty more, but these are a good first place to look.
Denny
MCSA (2003) / MCDBA (SQL 2000)
MCTS (SQL 2005 / Microsoft Windows SharePoint Services 3.0: Configuration / Microsoft Office SharePoint Server 2007: Configuration)
MCITP Database Administrator (SQL 2005) / Database Developer (SQL 2005)
--Anything is possible. All it takes is a little research. (Me)