рдПрдХ рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреАрдмреАрдП рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдХреНрд╕рд░, рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд░рд╡рд┐рд╡рд╛рд░ рд╕реЗ рд╕реЛрдорд╡рд╛рд░ рддрдХ рд░рд╛рдд рдореЗрдВ рди рдХреЗрд╡рд▓ рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдХрд┐рддрдирд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХрд┐рд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡реЗ рдбреАрдлрд╝реНрд░реЗрдЧреНрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдмрд╛рдж рдмрдиреЗ рд░рд╣реЗред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрдБрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬреЛ рдХрд╛рдо рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рднреА рджреЗрддреА рд╣реИ
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╣реБрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ (рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛, рдЬрд╣рд╛рдВ рдореИрдВ рдЙрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рд░реНрд╡рд┐рд╕ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ):
рд╕реНрддрдВрдн | рдЯрд╛рдЗрдк | рдЯрд┐рдкреНрдкрдгреА |
---|
proc_id | рдкреВрд░реНрдгрд╛рдВрдХ | рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ |
start_time | datetime | ALTER INDEX рдХреНрд╡реЗрд░реА рд╢реБрд░реВ рдХрд░рдирд╛ |
end_time | datetime | ALTER INDEX рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рдХрд░рдирд╛ |
database_id | SMALLINT | рдбреАрдмреА рдЖрдИрдбреА |
object_id | рдЗрдВрдЯ | рдЯреЗрдмрд▓ рдЖрдИ.рдбреА. |
TABLE_NAME | рд╡рд░реНрдЪрд░ (50) | рдЯреЗрдмрд▓ рдХрд╛ рдирд╛рдо |
index_id | рдЗрдВрдЯ | рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдИрдбреА |
INDEX_NAME | рд╡рд░реНрдЪрд░ (50) | рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдирд╛рдо |
avg_frag_percent_before | рдирд╛рд╡ | ALTER INDEX рд╕реЗ рдкрд╣рд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдЦрдВрдбрди рдкреНрд░рддрд┐рд╢рдд |
fragment_count_before | bigint | рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ |
pages_count_before | bigint | рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ |
fill_factor | tinyint | рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрда рднрд░рдг рд╕реНрддрд░ |
partition_num | рдкреВрд░реНрдгрд╛рдВрдХ | рдЕрдиреБрднрд╛рдЧ рд╕рдВрдЦреНрдпрд╛ |
avg_frag_percent_after | рдирд╛рд╡ | рд╕реВрдЪрдХрд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рдж рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдЦрдВрдбрди рдкреНрд░рддрд┐рд╢рдд |
fragment_count_after | bigint | рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рди рдХреЗ рдмрд╛рдж рдЯреБрдХрдбрд╝реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ |
pages_count_after | bigint | рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рди рдХреЗ рдмрд╛рдж рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ |
рдХрд╛рд░реНрдп | рд╡рд░реНрдЪрд░ (10) | рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЧрдИ |
рд╕рдВрдкреВрд░реНрдг рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдЧреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
DECLARE @currentProcID INT тАУ- тАУ- , SELECT @currentProcID = ISNULL(MAX(proc_id), 0) + 1 FROM dba_tasks.dbo.index_defrag_statistic
рдирдореВрдирд╛рдХрд░рдг рдХреА рд╕реНрдерд┐рддрд┐:
page_count> 8 - рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реБрдЖ, рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЖрдзрд╛рд░ рдШрдбрд╝реА рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рдЕрдзреАрди рд╣реИред (рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдж
рдЕрдирдлрд┐рд▓реНрдЯрд░реНрдб рдмрд╛рд░ рдХреЛ 8 рдкреЗрдЬ рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛)
avg_fragmentation_in_percent> 10 - рдпрд╣ рднреА рдПрдХ рдмрд╣реБрдд рд╣реА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЖрдВрдХрдбрд╝рд╛ рд╣реИ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЫреВрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдпрджрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рдЦрдВрдбрди 10 рдкреНрд░рддрд┐рд╢рдд рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рд╣реИ, рдЬреЛ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрджрд┐ рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдЕрд▓рдЧ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВред
dm.index_id> 0 - 0 рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ
рддрд╛рд▓рд┐рдХрд╛ рднрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЪрд▓реЛ рд╕реМрджрд╛ рдХрд░рддреЗ рд╣реИрдВ:
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ:
UPDATE dba SET dba.avg_frag_percent_after = dm.avg_fragmentation_in_percent, dba.fragment_count_after = dm.fragment_count, dba.pages_count_after = dm.page_count FROM sys.dm_db_index_physical_stats(DB_ID(), null, null, null, null) dm INNER JOIN dba_tasks.dbo.index_defrag_statistic dba ON dm.[object_id] = dba.[object_id] AND dm.index_id = dba.index_id WHERE dba.proc_id = @currentProcID AND dm.index_id > 0
рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдФрд░ рдЧрд┐рди рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕реЗрд╡рд╛ рд╕рдордп рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ рд╕реЗред рд╕рдордЭреЗрдВ рдХрд┐ рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рджреЗрдЦреЗрдВред рдХрдИ рдмрд╛рд░ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреБрдЫ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЕрдзрд┐рдХ рдФрд░ рддреЗрдЬреА рд╕реЗ рдЦрдВрдбрд┐рдд рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╕реЗрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рд▓рд┐рдП рддрдп рдХрд░реЗрдВред рдореЗрд░реЗ рд▓рд┐рдП, рдРрд╕реА рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕реЗрд╡рд╛ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рдард┐рдХрд╛рдиреЗ рдШрдбрд╝реА рдХреЗ рдЖрд╕рдкрд╛рд╕ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕рднреА рдЕрдиреБрдХреНрд░рдорд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдФрд░ 1-2 рдШрдВрдЯреЗ рдХреЗ рд╕рд░реНрд╡рд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рднреА рдШрдбрд╝реА рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдРрд╕реА рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рд╕рдВрд╕рд╛рдзрди рдЧрд╡рд░реНрдирд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдкреБрд░рд╛рдиреА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА msdn рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ:
sys.sysindexessys.tablessys.dm_db_index_physical_stats