рдПрд╕рдХреНрдпреВрдПрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдореИрдиреЗрдЬрд░ - рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдлреНрдд рдЯреВрд▓

рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ SQL рд╕рд░реНрд╡рд░ DBA рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рд╢рд╛рд╕рди рдХрд░рдирд╛, рдлрд┐рд░ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рдиред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдпреВрдирд┐рд╡рд░реНрд╕ рдФрд░ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ SQL Server рдФрд░ Azure рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдУрдкрди рд╕реЛрд░реНрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВрдЯреЗрдиреЗрдВрд╕ рдЯреВрд▓ рдорд┐рд▓рд╛ред

рдПрд╕рдХреНрдпреВрдПрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдореИрдиреЗрдЬрд░

рд╡рд┐рдЪрд╛рд░


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

рдореЗрд░реА рдкреНрд░реЗрд░рдгрд╛ рдФрд░ рдкреЗрд╢реЗрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдПрдХ рдХрд╛рдлреА рдордЬрдмреВрдд рдкреНрд░рднрд╛рд╡ рдЦрд╛рд░реНрдХреЛрд╡ рдХрдВрдкрдиреА рдбреЗрд╡рд░реНрдЯ рдореЗрдВ рдХрд╛рдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ SQL рд╕рд░реНрд╡рд░, MySQL рдФрд░ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рдерд╛ред

рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рдмрд╣реБрдд рдХрдо рдкрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореБрдЭреЗ SQL рд╕рд░реНрд╡рд░ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЬреНрдЮрд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЙрдирдХреЗ рдЙрддреНрдкрд╛рдж рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдпрд╣ рд╕рдордЭрдиреЗ рд▓рдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдХреМрди рд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдзрд┐рдХ рд╣реИред

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

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдирдИ рдЬрдЧрд╣ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдЙрдиреНрд╣реЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдХреБрдЫ рд╕рдордЭреМрддреЗ рдХрд░рдиреЗ рдкрдбрд╝реЗред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рднрд░реЗ рдПрдХ рдмрдбрд╝реЗ рдЙрддреНрдкрд╛рдж рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдЬрд▓реНрджреА рд╕реЗ рд╢реВрдиреНрдп рд╣реЛ рдЧрдпрд╛ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рдЕрд▓рдЧ рджрд┐рд╢рд╛ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ - рдпреЛрдЬрдирд╛рдмрджреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд┐рдиреА-рдЯреВрд▓ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ ... рдЙрдиреНрд╣реЛрдВрдиреЗ vidosikov рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реА, рдПрдХ рд░реИрдХ рдореЗрдВ рдЦрдбрд╝рд╛ рдерд╛ рдФрд░ рдПрдХ рд╢рд╛рдВрдд рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд░рд╕реАрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ sysinos_db_index_physical_stats рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░, рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдЦрдВрдбрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

RedGate SQL Index Manager (1.1.9.1378 - $ 155) рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдХреНрд╡реЗрд░реА рдХреЗ рдмрд╛рдж, рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рднреАрддрд░ рд╕рднреА рд╕реВрдЪреА рдХреА рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред

SELECT objects.name AS tableOrViewName , objects.object_id AS tableOrViewId , schemas.name AS schemaName , CAST(ISNULL(lobs.NumLobs, 0) AS BIT) AS ContainsLobs , o.is_memory_optimized FROM sys.objects AS objects JOIN sys.schemas AS schemas ON schemas.schema_id = objects.schema_id LEFT JOIN ( SELECT object_id , COUNT(*) AS NumLobs FROM sys.columns WITH (NOLOCK) WHERE system_type_id IN (34, 35, 99) OR max_length = -1 GROUP BY object_id ) AS lobs ON objects.object_id = lobs.object_id LEFT JOIN sys.tables AS o ON o.object_id = objects.object_id WHERE objects.type = 'U' OR objects.type = 'V' SELECT i.object_id AS tableOrViewId , i.name AS indexName , i.index_id AS indexId , i.allow_page_locks AS allowPageLocks , p.partition_number AS partitionNumber , CAST((c.numPartitions - 1) AS BIT) AS belongsToPartitionedIndex FROM sys.indexes AS i JOIN sys.partitions AS p ON p.index_id = i.index_id AND p.object_id = i.object_id JOIN ( SELECT COUNT(*) AS numPartitions , object_id , index_id FROM sys.partitions GROUP BY object_id , index_id ) AS c ON c.index_id = i.index_id AND c.object_id = i.object_id WHERE i.index_id > 0 -- ignore heaps AND i.is_disabled = 0 AND i.is_hypothetical = 0 

рдлрд┐рд░, рдПрдХ рдЪрдХреНрд░ рдореЗрдВ, рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рд╡рд┐рдЦрдВрдбрди рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреИрди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдПрдВрдЯреНрд░реА рдереНрд░реЗрд╢реЛрд▓реНрдб рд╕реЗ рдХрдо рд╡рдЬрди рд╡рд╛рд▓реЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

 EXEC sp_executesql N' SELECT index_id, avg_fragmentation_in_percent, page_count FROM sys.dm_db_index_physical_stats(@databaseId, @objectId, @indexId, @partitionNr, NULL)' , N'@databaseId int,@objectId int,@indexId int,@partitionNr int' , @databaseId = 7, @objectId = 2133582639, @indexId = 1, @partitionNr = 1 EXEC sp_executesql N' SELECT index_id, avg_fragmentation_in_percent, page_count FROM sys.dm_db_index_physical_stats(@databaseId, @objectId, @indexId, @partitionNr, NULL)' , N'@databaseId int,@objectId int,@indexId int,@partitionNr int' , @databaseId = 7, @objectId = 2133582639, @indexId = 2, @partitionNr = 1 EXEC sp_executesql N' SELECT index_id, avg_fragmentation_in_percent, page_count FROM sys.dm_db_index_physical_stats(@databaseId, @objectId, @indexId, @partitionNr, NULL)' , N'@databaseId int,@objectId int,@indexId int,@partitionNr int' , @databaseId = 7, @objectId = 2133582639, @indexId = 3, @partitionNr = 1 

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

рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдПрдХ рдФрд░ рдкрд╣рд▓реВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рддреАрд╡реНрд░ рд╣реИ: рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрднрдЧ sys.partitions рд╕реЗ рдХреБрд▓ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреАред рдЗрд╕ рддрдереНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд╕рд┐рдпреЛрдВ рд╣рдЬрд╛рд░ рдЦрдВрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдорд╛рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рджреВрд░рд╕реНрде рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреИрди рдХрд╛ рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд▓рдВрдм рдмрдврд╝рдиреЗ рдХреЗ рдХрд╛рд░рдг рдФрд░ рднреА рд╕рд░рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓, рдЕрдиреБрд░реЛрдз

RedGate рдХреЗ рд╡рд┐рдкрд░реАрдд, Devart рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рд╕рдорд╛рди рдЙрддреНрдкрд╛рдж - dbForge Index Manager for SQL Server (1.10.38 - $ 99) рдПрдХ рдмрдбрд╝реА рдХреНрд╡реЗрд░реА рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рдм рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

 SELECT SCHEMA_NAME(o.[schema_id]) AS [schema_name] , o.name AS parent_name , o.[type] AS parent_type , i.name , i.type_desc , s.avg_fragmentation_in_percent , s.page_count , p.partition_number , p.[rows] , ISNULL(lob.is_lob_legacy, 0) AS is_lob_legacy , ISNULL(lob.is_lob, 0) AS is_lob , CASE WHEN ds.[type] = 'PS' THEN 1 ELSE 0 END AS is_partitioned FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) s JOIN sys.partitions p ON s.[object_id] = p.[object_id] AND s.index_id = p.index_id AND s.partition_number = p.partition_number JOIN sys.indexes i ON i.[object_id] = s.[object_id] AND i.index_id = s.index_id LEFT JOIN ( SELECT c.[object_id] , index_id = ISNULL(i.index_id, 1) , is_lob_legacy = MAX(CASE WHEN c.system_type_id IN (34, 35, 99) THEN 1 END) , is_lob = MAX(CASE WHEN c.max_length = -1 THEN 1 END) FROM sys.columns c LEFT JOIN sys.index_columns i ON c.[object_id] = i.[object_id] AND c.column_id = i.column_id AND i.index_id > 0 WHERE c.system_type_id IN (34, 35, 99) OR c.max_length = -1 GROUP BY c.[object_id], i.index_id ) lob ON lob.[object_id] = i.[object_id] AND lob.index_id = i.index_id JOIN sys.objects o ON o.[object_id] = i.[object_id] JOIN sys.data_spaces ds ON i.data_space_id = ds.data_space_id WHERE i.[type] IN (1, 2) AND i.is_disabled = 0 AND i.is_hypothetical = 0 AND s.index_level = 0 AND s.alloc_unit_type_desc = 'IN_ROW_DATA' AND o.[type] IN ('U', 'V') 

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

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ sysinos_db_index_physical_stats рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдмрдлрд╝рд░ рдкреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХреИрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝реНрд░реЗрдЧреНрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рднреМрддрд┐рдХ рд░реАрдбрд┐рдВрдЧ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ред

рдХрдИ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рдж, рдпрд╣ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛, рд╕реНрдХреИрди рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдмрдбрд╝реА рдХреНрд╡реЗрд░реА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреЛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд░реЗрдВрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрд╡ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛:

 INSERT INTO #AllocationUnits (ContainerID, ReservedPages, UsedPages) SELECT [container_id] , SUM([total_pages]) , SUM([used_pages]) FROM sys.allocation_units WITH(NOLOCK) GROUP BY [container_id] HAVING SUM([total_pages]) BETWEEN @MinIndexSize AND @MaxIndexSize 

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡реЗ рдЕрдиреБрднрд╛рдЧ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЦрд╛рд▓реА рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реАрдб рдСрдкрд░реЗрд╢рдВрд╕ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред

 SELECT [object_id] , [index_id] , [partition_id] , [partition_number] , [rows] , [data_compression] INTO #Partitions FROM sys.partitions WITH(NOLOCK) WHERE [object_id] > 255 AND [rows] > 0 AND [object_id] NOT IN (SELECT * FROM #ExcludeList) 

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреЗрд╡рд▓ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рд╣реАрдкреНрд╕, рдХреНрд▓рд╕реНрдЯрд░ / рдиреЙрди-рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдФрд░ рдХреЙрд▓рдо рд╕рдВрдХреЗрддрдХ рд╕рдорд░реНрдерд┐рдд рд╣реИ)ред

 INSERT INTO #Indexes SELECT ObjectID = i.[object_id] , IndexID = i.index_id , IndexName = i.[name] , PagesCount = a.ReservedPages , UnusedPagesCount = a.ReservedPages - a.UsedPages , PartitionNumber = p.[partition_number] , RowsCount = ISNULL(p.[rows], 0) , IndexType = i.[type] , IsAllowPageLocks = i.[allow_page_locks] , DataSpaceID = i.[data_space_id] , DataCompression = p.[data_compression] , IsUnique = i.[is_unique] , IsPK = i.[is_primary_key] , FillFactorValue = i.[fill_factor] , IsFiltered = i.[has_filter] FROM #AllocationUnits a JOIN #Partitions p ON a.ContainerID = p.[partition_id] JOIN sys.indexes i WITH(NOLOCK) ON i.[object_id] = p.[object_id] AND p.[index_id] = i.[index_id] WHERE i.[type] IN (0, 1, 2, 5, 6) AND i.[object_id] > 255 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдереЛрдбрд╝рд╛ рдЬрд╛рджреВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ: рд╕рднреА рдЫреЛрдЯреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдмрд╛рд░-рдмрд╛рд░ sysinos_db_index_physical_stats рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╡рд┐рдЦрдВрдбрди рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 INSERT INTO #Fragmentation (ObjectID, IndexID, PartitionNumber, Fragmentation) SELECT i.ObjectID , i.IndexID , i.PartitionNumber , r.[avg_fragmentation_in_percent] FROM #Indexes i CROSS APPLY sys.dm_db_index_physical_stats(@DBID, i.ObjectID, i.IndexID, i.PartitionNumber, 'LIMITED') r WHERE i.PagesCount <= @PreDescribeSize AND r.[index_level] = 0 AND r.[alloc_unit_type_desc] = 'IN_ROW_DATA' AND i.IndexType IN (0, 1, 2) 

рдЕрдЧрд▓рд╛, рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ:

 SELECT i.ObjectID , i.IndexID , i.IndexName , ObjectName = o.[name] , SchemaName = s.[name] , i.PagesCount , i.UnusedPagesCount , i.PartitionNumber , i.RowsCount , i.IndexType , i.IsAllowPageLocks , u.TotalWrites , u.TotalReads , u.TotalSeeks , u.TotalScans , u.TotalLookups , u.LastUsage , i.DataCompression , f.Fragmentation , IndexStats = STATS_DATE(i.ObjectID, i.IndexID) , IsLobLegacy = ISNULL(lob.IsLobLegacy, 0) , IsLob = ISNULL(lob.IsLob, 0) , IsSparse = CAST(CASE WHEN p.ObjectID IS NULL THEN 0 ELSE 1 END AS BIT) , IsPartitioned = CAST(CASE WHEN dds.[data_space_id] IS NOT NULL THEN 1 ELSE 0 END AS BIT) , FileGroupName = fg.[name] , i.IsUnique , i.IsPK , i.FillFactorValue , i.IsFiltered , a.IndexColumns , a.IncludedColumns FROM #Indexes i JOIN sys.objects o WITH(NOLOCK) ON o.[object_id] = i.ObjectID JOIN sys.schemas s WITH(NOLOCK) ON s.[schema_id] = o.[schema_id] LEFT JOIN #AggColumns a ON a.ObjectID = i.ObjectID AND a.IndexID = i.IndexID LEFT JOIN #Sparse p ON p.ObjectID = i.ObjectID LEFT JOIN #Fragmentation f ON f.ObjectID = i.ObjectID AND f.IndexID = i.IndexID AND f.PartitionNumber = i.PartitionNumber LEFT JOIN ( SELECT ObjectID = [object_id] , IndexID = [index_id] , TotalWrites = NULLIF([user_updates], 0) , TotalReads = NULLIF([user_seeks] + [user_scans] + [user_lookups], 0) , TotalSeeks = NULLIF([user_seeks], 0) , TotalScans = NULLIF([user_scans], 0) , TotalLookups = NULLIF([user_lookups], 0) , LastUsage = ( SELECT MAX(dt) FROM ( VALUES ([last_user_seek]) , ([last_user_scan]) , ([last_user_lookup]) , ([last_user_update]) ) t(dt) ) FROM sys.dm_db_index_usage_stats WITH(NOLOCK) WHERE [database_id] = @DBID ) u ON i.ObjectID = u.ObjectID AND i.IndexID = u.IndexID LEFT JOIN #Lob lob ON lob.ObjectID = i.ObjectID AND lob.IndexID = i.IndexID LEFT JOIN sys.destination_data_spaces dds WITH(NOLOCK) ON i.DataSpaceID = dds.[partition_scheme_id] AND i.PartitionNumber = dds.[destination_id] JOIN sys.filegroups fg WITH(NOLOCK) ON ISNULL(dds.[data_space_id], i.DataSpaceID) = fg.[data_space_id] WHERE o.[type] IN ('V', 'U') AND ( f.Fragmentation >= @Fragmentation OR i.PagesCount > @PreDescribeSize OR i.IndexType IN (5, 6) ) 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдмрд┐рдВрджреБ рдкреНрд░рд╢реНрди рдмрдбрд╝реЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЦрдВрдбрди рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 EXEC sp_executesql N' DECLARE @DBID INT = DB_ID() SELECT [avg_fragmentation_in_percent] FROM sys.dm_db_index_physical_stats(@DBID, @ObjectID, @IndexID, @PartitionNumber, ''LIMITED'') WHERE [index_level] = 0 AND [alloc_unit_type_desc] = ''IN_ROW_DATA''' , N'@ObjectID int,@IndexID int,@PartitionNumber int' , @ObjectId = 1044198770, @IndexId = 1, @PartitionNumber = 1 EXEC sp_executesql N' DECLARE @DBID INT = DB_ID() SELECT [avg_fragmentation_in_percent] FROM sys.dm_db_index_physical_stats(@DBID, @ObjectID, @IndexID, @PartitionNumber, ''LIMITED'') WHERE [index_level] = 0 AND [alloc_unit_type_desc] = ''IN_ROW_DATA''' , N'@ObjectID int,@IndexID int,@PartitionNumber int' , @ObjectId = 1552724584, @IndexId = 0, @PartitionNumber = 1 

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

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, WAIT_AT_LOW_PRIORITY рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП DATA_COMPRESSION рдФрд░ FILL_FACTOR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред

SQL рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕

рдЖрд╡реЗрджрди рдкрд╣рд▓реЗ рд╕реЗ рдЕрдирд┐рдпреЛрдЬрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝ рдЧрдпрд╛ рдерд╛, рдЬреИрд╕реЗ рд╕рд░реНрд╡рд┐рд╕рд┐рдВрдЧ рдХреЙрд▓рдорд╕реНрдЯреЛрд░:

 SELECT * FROM ( SELECT IndexID = [index_id] , PartitionNumber = [partition_number] , PagesCount = SUM([size_in_bytes]) / 8192 , UnusedPagesCount = ISNULL(SUM(CASE WHEN [state] = 1 THEN [size_in_bytes] END), 0) / 8192 , Fragmentation = CAST(ISNULL(SUM(CASE WHEN [state] = 1 THEN [size_in_bytes] END), 0) * 100. / SUM([size_in_bytes]) AS FLOAT) FROM sys.fn_column_store_row_groups(@ObjectID) GROUP BY [index_id] , [partition_number] ) t WHERE Fragmentation >= @Fragmentation AND PagesCount BETWEEN @MinIndexSize AND @MaxIndexSize 

рдпрд╛ dm_db_missing_index рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧреИрд░-рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛:

 SELECT ObjectID = d.[object_id] , UserImpact = gs.[avg_user_impact] , TotalReads = gs.[user_seeks] + gs.[user_scans] , TotalSeeks = gs.[user_seeks] , TotalScans = gs.[user_scans] , LastUsage = ISNULL(gs.[last_user_scan], gs.[last_user_seek]) , IndexColumns = CASE WHEN d.[equality_columns] IS NOT NULL AND d.[inequality_columns] IS NOT NULL THEN d.[equality_columns] + ', ' + d.[inequality_columns] WHEN d.[equality_columns] IS NOT NULL AND d.[inequality_columns] IS NULL THEN d.[equality_columns] ELSE d.[inequality_columns] END , IncludedColumns = d.[included_columns] FROM sys.dm_db_missing_index_groups g WITH(NOLOCK) JOIN sys.dm_db_missing_index_group_stats gs WITH(NOLOCK) ON gs.[group_handle] = g.[index_group_handle] JOIN sys.dm_db_missing_index_details d WITH(NOLOCK) ON g.[index_handle] = d.[index_handle] WHERE d.[database_id] = DB_ID() 

рдкрд░рд┐рдгрд╛рдо


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

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

рдЖрд╡реЗрджрди рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг GitHub рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рд╕реНрд░реЛрдд рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВред

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


All Articles