рдиреНрдпреВрдирддрдо рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛
рд▓рдЧрд╛рддрд╛рд░ рд▓реЙрдХ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЫреЛрдЯреЗ рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд▓реЗрди-рджреЗрди рдХреЛ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреЗрдВред
рдЖрдЗрдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреБрдЫ рдХреЛрдб рджреЗрдЦреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ SSMS рдФрд░ рддреАрди рдХреНрд╡реЗрд░реА рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ, рдФрд░ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдореЙрдирд┐рдЯрд░, рдЕрдкрдбреЗрдЯ рдЕрд╡рдзрд┐ рдХреЛ рдПрдХ рд╕реЗрдХрдВрдб рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
рдкрд╣рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╣рдо рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ рдЪрд▓рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
Create test table
CREATE TABLE (ID BIGINT IDENTITY(1,1) CONSTRAINT PK_ID PRIMARY KEY,GUID UNIQUEIDENTIFIER)CREATE INDEX IDX_GUID ON (GUID)
рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдПрдВ
рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдмрджрд▓реЗрдВ, рдЬреЛ рдПрдХ рд╕рдордп рдореЗрдВ 5 рдорд┐рд▓рд┐рдпрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ GUID рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдЧрд╛, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рдЕрджреНрдпрддрди рдФрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рд░ 1000 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдбрд╛рд▓реЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рднреА рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛, рддрд╛рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦ рд╕рдХреЗрдВред
SQL
SET NOCOUNT ONDECLARE @ID BIGINT=1WHILE @ID<5000000 BEGININSERT INTO (GUID) SELECT NEWID()IF @ID%1000=0 PRINT @IDSET @ID=@ID+1END
рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдЪреБрдиреЗрдВ
рдпрджрд┐ рд╣рдо рджреВрд╕рд░реА рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ 20 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ 10000 рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ред
SQL
SELECT TOP 10000 * FROM WHERE GUID Like '%20'
рд▓реВрдк рдП рдбрд┐рд▓реАрдЯ
рдЕрдм рдПрдХ рддреАрд╕рд░реА рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ, рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ GUID рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░реЗрдЧрд╛ рдФрд░ 0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред
SQL
WHILE EXISTS (SELECT TOP 1 * FROM WHERE GUID LIKE '0%') BEGINDELETE TOP (1000) FROM WHERE GUID LIKE '0%'END
Testing the theory
Once you get above 500000 records in your fist window, run either or both of the statements in windows two and three, and check your activity monitor for what happens.
You should see fewer locks, and the lock that you do get should be for shorter periods of time, not preventing users from carrying on doing the work they need to, although it may slow down to a certain extent.