The SQL Server has a lot of wait types starting with LCK. In a SQL Server 2014 there are 63 of them, and you will see them in many variations like
and many more. At the bottom of this article, you can see a complete list of LCK_xxx wait types in Microsoft SQL server 2014, just to give you an impression about how many there are.
So basically LCK means LOCKS, and as a default Microsoft SQL Server uses locks to make sure data are correct.
So when you see a high number of LCK waits, then you might have concurrency problems.
What to do
There are many things that can be done to investigate and/or solve the problem. We would recommend to do the following:
- Identify what statements that are blocking others.
- See if these statements or transactions can be rewritten.
- See if you can change isolation level. But that has consequences if you do it in a wrong way. You must understand isolation levels before you do anything.
I know that there is a lot of difference in the different wait types, but that is basically the idea with LCK wait types.
Regarding Identifying, then one idea could be to use the dynamic management view sys.dm_tran_locks.
Complete list of Lock related wait types