Skip to content

Latest commit

 

History

History
95 lines (60 loc) · 5.82 KB

configure-the-locks-server-configuration-option.md

File metadata and controls

95 lines (60 loc) · 5.82 KB
title description author ms.author ms.date ms.service ms.subservice ms.topic helpviewer_keywords
Server configuration: locks
Learn about the locks option. See how to use it to limit the amount of memory that the SQL Server Database Engine uses for locks.
rwestMSFT
randolphwest
10/18/2024
sql
configuration
conceptual
locks option [SQL Server]

Server configuration: locks

[!INCLUDE SQL Server]

This article describes how to configure the locks server configuration option in [!INCLUDE ssnoversion] by using [!INCLUDE ssManStudioFull] or [!INCLUDE tsql]. The locks option sets the maximum number of available locks, which limits the amount of memory the [!INCLUDE ssDEnoversion] uses for them. The default setting is 0, which allows the [!INCLUDE ssDE] to allocate and deallocate lock structures dynamically, based on changing system requirements.

Important

[!INCLUDE ssNoteDepFutureAvoid]

Recommendations

This option is an advanced option and should be changed only by an experienced database administrator or certified [!INCLUDE ssNoVersion] professional.

When the server is started with locks set to 0, the lock manager acquires sufficient memory from the [!INCLUDE ssDE] for an initial pool of 2,500 lock structures. As the lock pool is exhausted, more memory is acquired for the pool.

Generally, if more memory is required for the lock pool than is available in the [!INCLUDE ssDE] memory pool, and more computer memory is available (the max server memory threshold hasn't been reached), the [!INCLUDE ssDE] allocates memory dynamically to satisfy the request for locks. However, if allocating that memory would cause paging at the operating system level (for example, if another application is running on the same computer as an instance of [!INCLUDE ssNoVersion] and using that memory), more lock space isn't allocated. The dynamic lock pool doesn't acquire more than 60 percent of the memory allocated to the [!INCLUDE ssDE]. After the lock pool reaches 60 percent of the memory acquired by an instance of the [!INCLUDE ssDE], or no more memory is available on the computer, further requests for locks generate an error.

Allowing [!INCLUDE ssNoVersion] to use locks dynamically is the recommended configuration. However, you can set locks and override the ability of [!INCLUDE ssNoVersion] to allocate lock resources dynamically. When locks is set to a value other than 0, the [!INCLUDE ssDE] can't allocate more locks than the value specified in locks. Increase this value if [!INCLUDE ssNoVersion] displays a message that you exceeded the number of available locks. Because each lock consumes memory (96 bytes per lock), increasing this value can require increasing the amount of memory dedicated to the server.

The locks option also affects when lock escalation occurs. When locks is set to 0, lock escalation occurs when the memory used by the current lock structures reaches 40 percent of the [!INCLUDE ssDE] memory pool. When locks isn't set to 0, lock escalation occurs when the number of locks reaches 40 percent of the value specified for locks.

Permissions

Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Use SQL Server Management Studio

  1. In Object Explorer, right-click a server and select Properties.

  2. Select the Advanced node.

  3. Under Parallelism, type the desired value for the locks option.

    Use the locks option to set the maximum number of available locks, which limits the amount of memory [!INCLUDE ssNoVersion] uses for them.

Use Transact-SQL

  1. Connect to the [!INCLUDE ssDE].

  2. From the Standard bar, select New Query.

  3. Copy and paste the following example into the query window and select Execute. This example shows how to use sp_configure to set the value of the locks option to set the number of locks available for all users to 20000.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'locks', 20000;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO

For more information, see Server configuration options.

Follow up: After you configure the locks option

The server must be restarted before the setting can take effect.

Related content