Рэгламентныя аперацыі на ўзроўні СКБД для MS SQL Server, Аптымізацыя работы

  1. абнаўленне статыстык
  2. Ачыстка працэдурнага Кэша
  3. дэфрагментацыя індэксаў
  4. Реиндексация табліц базы дадзеных

Адной з самых распаўсюджаных чыннікаў не аптымальнай працы сістэмы з'яўляецца няправільнае або несвоечасовае выкананне рэгламентных аперацый на ўзроўні СКБД. Асабліва важна выконваць гэтыя рэгламентныя працэдуры ў буйных інфармацыйных сістэмах, якія працуюць пад значнай нагрузкай і абслугоўваюць адначасова вялікая колькасць карыстальнікаў. Спецыфіка такіх сістэм у тым, што звычайных дзеянняў, якія выконваюцца СКБД аўтаматычна (на падставе налад) аказвае недастаткова для эфектыўнай працы.

Калі ў якая працуе сістэме назіраюцца якія-небудзь сімптомы праблем з прадукцыйнасцю, варта праверыць, што ў сістэме правільна наладжаныя і рэгулярна выконваюцца ўсе рэкамендуемыя рэгламентныя аперацыі на ўзроўні СКБД Калі ў якая працуе сістэме назіраюцца якія-небудзь сімптомы праблем з прадукцыйнасцю, варта праверыць, што ў сістэме правільна наладжаныя і рэгулярна выконваюцца ўсе рэкамендуемыя рэгламентныя аперацыі на ўзроўні СКБД.

Выкананне рэгламентных працэдур павінна быць аўтаматызавана. Для аўтаматызацыі гэтых аперацый рэкамендуецца выкарыстаць убудаванае сродкі MS SQL Server: Maintenance Plan. Існуюць гэтак жа іншыя спосабы аўтаматызацыі выканання гэтых працэдур. У гэтым артыкуле для кожнай рэгламентнай працэдуры дадзены прыклад яе налады пры дапамозе Maintenance Plan для MS SQL Server 2005.

Для MS SQL Server рэкамендуецца выконваць наступныя рэгламентныя аперацыі:

Абнаўленне статистикОчистка працэдурнага КЭШаДефрагментация индексовРеиндексация табліц базы дадзеных

Рэкамендуецца рэгулярна кантраляваць своечасовасць і правільнасць выканання дадзеных рэгламентных працэдур.

абнаўленне статыстык

MS SQL Server будуе план запыту на падставе статыстычнай інфармацыі аб размеркаванні значэнняў у азначніках і табліцах. Статыстычная інфармацыя збіраецца на падставе часткі (узору) дадзеных і аўтаматычна абнаўляецца пры змене гэтых дадзеных. Часам гэтага аказваецца недастаткова для таго, што MS SQL Server стабільна будаваў найбольш аптымальны план выканання ўсіх запытаў.

У гэтым выпадку магчыма праява магутнасці сістэмы запытаў. Пры гэтым у планах запытаў назіраюцца характэрныя прыкметы неаптымальнай працы (неаптымальныя аперацыі).

Для таго, каб гарантаваць максімальна правільную працу аптымізатар MS SQL Server рэкамендуецца рэгулярна абнаўляць статыстыкі базы дадзеных MS SQL.

Для абнаўлення статыстык па ўсіх табліцах базы дадзеных неабходна выканаць наступны SQL запыт:

Абнаўленне статыстык не прыводзіць да блакавання табліц, і не будзе перашкаджаць працы іншых карыстальнікаў. Статыстыка можа абнаўляцца настолькі часта, наколькі гэта неабходна. Варта ўлічваць, што нагрузка на сервер СКБД падчас абнаўлення статыстык ўзрасце, што можа негатыўна адбіцца на агульнай прадукцыйнасці сістэмы.

Аптымальная частата абнаўлення статыстык залежыць ад велічыні і характару нагрузкі на сістэму і вызначаецца эксперыментальным шляхам. Рэкамендуецца абнаўляць статыстыкі не радзей за адзін раз на дзень.

Прыведзены вышэй запыт абнаўляе статыстыкі для ўсіх табліц базы дадзеных. У рэальна працуе сістэме розныя табліцы патрабуюць рознай частоты абнаўлення статыстык. Шляхам аналізу планаў запыту можна ўсталяваць, якія табліцы больш за іншых маюць патрэбу ў частым абнаўленні статыстык, і наладзіць дзве (ці больш) розных рэгламентных працэдуры: для часта абнаўляюцца табліц і для ўсіх астатніх табліц. Такі падыход дасць магчымасць істотна знізіць час абнаўлення статыстык і ўплыў працэсу абнаўлення статыстыкі на працу сістэмы ў цэлым.

Настройка аўтаматычнага абнаўлення статыстык (MS SQL 2005 г.)

Запусціце MS SQL Server Management Studio і падключыцеся да сервера СКБД. Адкрыйце тэчку Management і стварыце новы план абслугоўвання:

Стварыце субплан (Add Sublan) і назавіце яго Абнаўленне статыстык» Стварыце субплан (Add Sublan) і назавіце яго "Абнаўленне статыстык». Дадайце ў яго задачу Update Statistics Task з панэлі задач:

Дадайце ў яго задачу Update Statistics Task з панэлі задач:

Наладзьце расклад абнаўлення статыстык. Рэкамендуецца абнаўляць статыстыкі не радзей за адзін раз на дзень. Пры неабходнасці частата абнаўлення статыстык можа быць павялічана.

Наладзьце параметры задачы. Для гэтага варта два разы клікнуць на задачу ў правым ніжнім куце акна. У форме, якая з'явілася пакажыце імя базу дадзеных (або некалькі баз дадзеных) для якіх будзе выконвацца абнаўленне статыстык. Акрамя гэтага вы можаце паказаць для якіх табліц абнаўляць статыстыкі (калі дакладна невядома, якія табліцы патрабуецца паказаць, то ўсталёўвайце значэнне All).

Абнаўленне статыстык неабходна праводзіць з уключанай опцыяй Full Scan.

Абнаўленне статыстык неабходна праводзіць з уключанай опцыяй Full Scan

Захавайце створаны план. Як пачало названага ў раскладзе тэрміну абнаўленне статыстык будзе запушчана аўтаматычна.

Ачыстка працэдурнага Кэша

Аптымізатар MS SQL Server кэшуецца планы запытаў для іх паўторнага выканання. Гэта робіцца для таго, каб эканоміць час, які затрачваецца на кампіляцыю запыту ў тым выпадку, калі такі ж запыт ужо выконваўся і яго план вядомы.

Магчымая сітуацыя, пры якой MS SQL Server, арыентуючыся на састарэлую статыстычную інфармацыю, пабудуе неаптымальнай план запыту. Гэты план будзе захаваны ў працэдурным кэшы і выкарыстаны пры паўторным выкліку такога ж запыту. Калі Вы абнавілі статыстыку, але не ачысцілі працэдурны кэш, то SQL Server можа выбраць стары (неаптымальнай) план запыту з Кэша замест таго, каб пабудаваць новы (больш аптымальны) план.

Такім чынам, рэкамендуецца заўсёды пасля абнаўлення статыстык чысціць змесціва працэдурнага Кэша.

Для ачысткі працэдурнага Кэша MS SQL Server неабходна выканаць наступны SQL запыт:

Гэты запыт варта выконваць непасрэдна пасля абнаўлення статыстыкі. Адпаведна, частата яго выканання павінна супадаць з частатой абнаўлення статыстыкі.

Настройка ачысткі працэдурнага Кэша

для (MS SQL 2005 г.)

Паколькі працэдурны КЭШ неабходна чысціць пры кожным абнаўленні статыстыкі, дадзеную аперацыю рэкамендуецца дадаць ва ўжо створаны субплан «Абнаўленне статыстык». Для гэтага варта адкрыць субплан і дадаць у яго схему задачу Execute T-SQL Statement Task. Затым варта злучыць задачу Update Statistics Task стрэлачкі з новай задачай.

Затым варта злучыць задачу Update Statistics Task стрэлачкі з новай задачай

У тэксце створанай задачы Execute T-SQL Statement Task варта паказаць запыт «DBCC FREEPROCCACHE»:

У тэксце створанай задачы Execute T-SQL Statement Task варта паказаць запыт «DBCC FREEPROCCACHE»:

дэфрагментацыя індэксаў

Пры інтэнсіўнай працы з табліцамі базы дадзеных ўзнікае эфект фрагментацыі індэксаў, які можа прывесці да зніжэння эфектыўнасці работы запытаў.

Рэкамендуецца рэгулярнае выкананне дэфрагментацыі індэксаў. Для дэфрагментацыі ўсіх індэксаў ўсіх табліц базы дадзеных неабходна выкарыстоўваць наступны SQL запыт (папярэдне падставіўшы імя базы):

Дэфрагментацыя індэксаў не блакіруе табліцы, і не будзе перашкаджаць працы іншых карыстальнікаў, аднак стварае дадатковую нагрузку на SQL Server. Аптымальная частата выканання дадзенай рэгламентнай працэдуры павінна падбірацца ў адпаведнасці з нагрузкай на сістэму і эфектам, якія атрымліваюцца ад дэфрагментацыі. Рэкамендуецца выконваць дэфрагментацыю індэксаў не радзей аднаго разу ў дзень.

Магчыма выкананне дэфрагментацыі для адной або некалькіх табліц, а не для ўсіх табліц базы дадзеных.

Настройка дэфрагментацыі індэксаў (MS SQL 2005 г.)

У раней створаным плане абслугоўвання стварыце новы субплан з імем «дэфрагментацыя індэксаў». Дадайце ў яго задачу Reorganize Index Task:

Дадайце ў яго задачу Reorganize Index Task:

Задайце расклад выканання для задачы дэфрагментацыі індэксаў. Рэкамендуецца выконваць задачу не радзей за адзін раз на тыдзень, а пры высокай зменлівасці дадзеных у базе яшчэ часцей - да аднаго разу ў дзень.

Наладзьце задачу, паказаўшы базу дадзеных (або некалькі баз дадзеных) і выбраўшы неабходныя табліцы. Калі дакладна невядома, якія табліцы варта паказаць, то ўсталёўвайце значэнне All.

Реиндексация табліц ўключае поўнае перастраенне індэксаў табліц базы дадзеных, што прыводзіць да істотнай аптымізацыі іх працы. Рэкамендуецца выконваць рэгулярную переиндексацию табліц базы дадзеных. Для реиндексации ўсіх табліц базы дадзеных неабходна выканаць наступны SQL запыт:

Реиндексация табліц блакуе іх на ўвесь час сваёй працы, што можа істотна адбіцца на працы карыстальнікаў. У сувязі з гэтым реиндексацию рэкамендуецца выконваць падчас мінімальнай загрузкі сістэмы.

Пасля выканання реиндексации няма неабходнасці рабіць дэфрагментацыю індэксаў.

У раней створаным плане абслугоўвання стварыце новы субплан з імем «дэфрагментацыя індэксаў». Дадайце ў яго задачу Rebuild Index Task:

Дадайце ў яго задачу Rebuild Index Task:

Задайце расклад выканання для задачы реиндексирования табліц. Рэкамендуецца выконваць задачу падчас мінімальнай нагрузкі на сістэму, не радзей за адзін раз на тыдзень.

Наладзьце задачу, паказаўшы базу дадзеных (або некалькі баз дадзеных) і выбраўшы неабходныя табліцы. Калі дакладна невядома, якія табліцы варта паказаць, то ўсталёўвайце значэнне All.

Реиндексация табліц базы дадзеных

Неабходна ажыццяўляць рэгулярны кантроль выканання рэгламентных працэдур на ўзроўні СКБД. Ніжэй прыведзены прыклад кантролю выканання плана абслугоўвання для MS SQL Server 2005.

Адкрыйце створаны вамі план абслугоўвання і абярыце з кантэкстнага меню пункт «View History»:

Адкрыйце створаны вамі план абслугоўвання і абярыце з кантэкстнага меню пункт «View History»:

Адкрыецца акно з пратаколам выканання ўсіх зададзеных рэгламентных працэдур.

Адкрыецца акно з пратаколам выканання ўсіх зададзеных рэгламентных працэдур

Паспяхова выкананыя задачы і задачы, выкананыя з памылкамі, будуць пазначаныя адпаведнымі абразкамі. Для задач, выкананых з памылкамі, даступная падрабязная інфармацыя пра памылку.

Крыніца: Рэгламентныя аперацыі MS SQL Server. аптымізацыя працы