NOLOCK in SQL Server Explained

The NOLOCK hint in SQL Server allows a SELECT statement to bypass shared locks to read data from a table. Here’s what to know about its advantages and risks.

Published on May. 07, 2025
developer coding in sql
Image: Shutterstock / Built In
Brand Studio Logo

In SQL Server, the NOLOCK hint, also known as the READUNCOMMITTED isolation level, allows a SELECT statement to read data from a table without acquiring shared locks. This means it can potentially read uncommitted changes made by other transactions, which can lead to  “dirty reads” resulting in inconsistent or invalid data.

More on SQLSQL Pivot: A Tutorial

 

NOLOCK in SQL Server Example

Let’s say you have a table named Employee with columns EmployeeID and EmployeeName in your SQL Server database

CREATE TABLE Employee (
    EmployeeID INT,
    EmployeeName VARCHAR(100)
);

INSERT INTO Employee (EmployeeID, EmployeeName)
VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');

Two transactions are happening concurrently.

Transaction 1:

BEGIN TRANSACTION
UPDATE Employee
SET EmployeeName = 'David'
WHERE EmployeeID = 1;

Transaction 2:

SELECT EmployeeName
FROM Employee WITH (NOLOCK)
WHERE EmployeeID = 1;

If Transaction 2 uses WITH (NOLOCK) when reading the Employee table, it might read the uncommitted change made by Transaction 1 and retrieve 'David' as the EmployeeName for EmployeeID 1. However, if Transaction 1 rolled back the update, Transaction 2 would have obtained inaccurate or non-existent data, resulting in a “dirty read.”

A tutorial on NOLOCK in SQL Server. | Video: Pinal Dave

More on SQLHow to Merge Two Tables in SQL

 

When to Use NOLOCK in SQL Server

Using NOLOCK can be helpful in scenarios where you prioritize reading data speed over strict consistency. However, caution is essential since it can lead to inconsistent or inaccurate results, especially in critical transactional systems.

Other considerations, like potential data inconsistencies, increased chance of reading uncommitted data and potential performance implications, should be weighed before using NOLOCK. In many cases, alternative isolation levels or database design improvements might be more suitable to achieve the desired performance without sacrificing data integrity.

The NOLOCK hint in SQL Server allows for faster data retrieval by avoiding locking mechanisms that can block or delay read operations. This can be especially useful in environments with heavy read workloads, such as reporting dashboards or large-scale analytics queries, where up-to-the-second accuracy is less critical than performance. However, developers and DBAs must weigh the trade-off between speed and data reliability, as NOLOCK introduces the risk of reading data that may later be rolled back or changed.

Frequently Asked Questions

NOLOCK in SQL Server is a hint that allows a SELECT statement to read data from a table while avoiding locking mechanisms. This can allow for quicker data retrieval, but it can also increase the risk for dirty reads resulting in inaccurate data. 

NOLOCK in SQL Server is useful in environments with heavy read workloads, such as reporting dashboards or large-scale analytics queries where current data is less critical than performance. It should be used cautiously, as NOLOCK risks reading data that may later be rolled back or changed, resulting in dirty reads.   

Explore Job Matches.