Locks in SQL Server - Update/Select
Sql Server's locks are described in good detail in the product documentation. A lock might or might not be escalated to page/table level, the behavior is documented, again, in Technet.

A fairly common tactic for deleting large amount of rows is to split up the delete in batches. Instead of deleting all the 5M rows at once like so,

DELETE FROM MyTable WHERE foo='bar'


rather try and delete data in, say, 100 * 50k row batches like so,

WHILE (@rows &gt; 0)
BEGIN
    DELETE TOP (50000) FROM MyTable
    WHERE foo='bar'    
    SET @rows = @@ROWCOUNT
END


By splitting the delete in batches, you should lock way less data than with a all-encompassing single-pass delete. YMMV, depending on the selectivity and other activity in your table.

In addition, keep in mind that delete is logged and you might get a nasty surprise with your transaction log size.

This article has nice an overview about how to batch delete data and mind the logs too.