MS SQL рд╕рд░реНрд╡рд░ 2000/2005 рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдкреНрд░рджрд░реНрд╢рди

рд╣рдо рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреАрдЪрд╛ рджрд┐рдЦрд╛ рд╕рдХрддреА рд╣реИрдВред


рдПрдордПрд╕ SQL тАЛтАЛрд╕рд░реНрд╡рд░ 2000 рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХреИрд╢ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рд╡реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ, рдЕрдиреБрдХреВрд▓рди рдФрд░ рд╕рдВрдХрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рд╡рд┐рдкрд░реАрдд рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдиреБрдХрд╕рд╛рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЗ рднрдВрдбрд╛рд░рдг рдореЗрдВ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрди рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░рддреА рд╣реИ, рдХреНрд░рдорд╢рдГ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреА рд╣реИ, рдпрджрд┐ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рднреА рдХреИрд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдФрд░ рдХреНрд╡реЗрд░реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдХрджрдо 1 ред рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдирд╛ред
рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдБред

DATABASE рдмрдирд╛рдЗрдП test_sp_perf
ON (NAME = 'test_data', FILENAME = 'c: \ temp \ test_data', SIZE = 1, MAXSIZE = 10, FILEGROWTH = 1Mb)
рд▓реЙрдЧ рдСрди (NAME = 'test_log', FILENAME = 'c: \ temp \ test_log', SIZE = 1, MAXSIZE = 10, FILEGROWTH = 1Mb)

рдХрджрдо 2. рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛ред
рдмрдирд╛рдПрдБ рддрд╛рд▓рд┐рдХрд╛ sp_perf_test (column1 int, column2 char (5000))

рдЪрд░рдг 3. рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рднрд░рдирд╛ред рдбреБрдкреНрд▓реАрдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред 1 рд╕реЗ 10,000 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде 10,000 рд░реЗрдЦрд╛рдПрдВ рдФрд░ 50,000 рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде 10,000 рд░реЗрдЦрд╛рдПрдВред

DECLARE @i int
SET @ i = 1 рд╣реИ
WHILE (@i <10000)
рд╢реБрд░реВ
INSERT INTO sp_perf_test (column1, column2) VALUES (@ i, 'Test string #' + CAST (@i as char (8)))
INSERT INTO sp_perf_test (column1, column2) VALUES (50000, 'рдЯреЗрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ #' + CAST (@i as char (8)))
SET @ i = @ i + 1
рдЕрдВрдд

COUNT (*) рд╕реЗ sp_perf_test рдЪреБрдиреЗрдВ
GO

STEP 4. рдиреЙрди-рдХреНрд▓рд╕реНрдЯрд░реНрдб рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдирд╛ред рдЪреВрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

NONCLUSTERED INDEX CL_perf_test рдкрд░ sp_perf_test (column1) рдмрдирд╛рдПрдБ
GO

рдЪрд░рдг 5. рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдмрдирд╛рдирд╛ред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд╡рд▓ рд╢рд░реНрдд рдХреЗ рд╕рд╛рде SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИред

рдирд┐рд░реНрдорд╛рдг PROC proc1 (@ рдЕрдкрд░рдо int)
рдХреЗ рд░реВрдк рдореЗрдВ
рд╕реНрддрдВрдн 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рд╕реНрддрдВрдн 2 рд╕реЗ sp_perf_test WHERE column1 = @ param
GO

рдЪрд░рдг 6. рд╕рдВрдЧреНрд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ред рдПрдХ рдХрдордЬреЛрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЪрдпрдирд╛рддреНрдордХ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ 1 рдкрдВрдХреНрддрд┐ рдорд┐рд▓рддреА рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдЧреИрд░-рд╕рдВрдХреБрд▓ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд╡реЗрд░реА рдЪрдпрдирд╛рддреНрдордХ рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

EXEC proc1 1234
GO



рдЪрд░рдг 7. рдПрдХ рдЧреИрд░-рдЪрдпрдирд╛рддреНрдордХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ред 50,000 рдХрд╛ рдорд╛рди рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 10,000 рдХреЗ рд╕рд╛рде рдХреНрд░рдорд╢рдГ, рдЧреИрд░-рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдФрд░ рдмреБрдХрдорд╛рд░реНрдХ рд▓реБрдХрдЕрдк рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдпрд╣ рджрд░реНрд╢рд╛рддреА рд╣реИ, рд╕рд╛рде рд╣реА рдпрд╣ рднреА рдХрд┐ рдмреБрдХрдорд╛рд░реНрдХ рд▓реБрдХрдЕрдк рдСрдкрд░реЗрд╢рди 9999 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

EXEC proc1 50,000
GO



STEP 8. рдкрд╣рд▓реЗ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдкрдВрдХреНрддрд┐рдпрд╛рдБ 50,000 рдХреЗ рдмрд░рд╛рдмрд░ рд▓рд╛рдПрдВред рдЬрдм рдПрдХ рдЕрд▓рдЧ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд╡реЗрд░реА рдХреЛ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдХреНрд╡реЗрд░реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб рдХреЛ рдХрдИ рдмрд╛рд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЯреЗрдмрд▓ рд╕реНрдХреИрди рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧреИрд░-рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред

рд╕реНрддрдВрдн 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдХреЙрд▓рдо 2 рд╕реЗ sp_perf_test WHERE column1 = 50000
GO



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрд╢рд╛ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЙрди рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдк рдЕрдкрдиреЗ MS SQL рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рдпреЛрдЧ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In13656/


All Articles