Раней, я разглядаў, прычыны неаптымальнай працы запытаў у 1С . Аднак, гэтыя дзеянні часам могуць не дапамагчы ў барацьбе за павышэнне прадукцыйнасці сістэмы. У гэтым выпадку, неабходна звярнуцца да пазасістэмная сродках аналізу на ўзроўні СКБД, да SQL Server Profiler.
Дадатак SQL Server Profiler - гэта графічны карыстацкі інтэрфейс для трасіроўкі SQL, з дапамогай якога праграміст 1С можа назіраць за асобнікам кампанента Кампанент Database Engine або службамі Analysis Services. З дапамогай дадзенай утыліты, мы можа аналізаваць план выканання запыту ў пакрокавым рэжыме. Прыкладанне дазваляе збіраць і захоўваць дадзеныя аб кожнай падзеі ў файле або ў табліцы для наступнага аналізу.
Прыкметы выбару неаптымальнай плана запыту СКБД
Як правіла, MS SQL падбірае для 1С аптымальны план запыту, але бывае СКБД памыляецца. Звязана гэта можа быць, напрыклад, з неактуальнай статыстыкай ці высокай загружанасцю сістэмы. Праграмісту 1С, для таго, што б дапамагчы аптымізатар будаваць правільны план запыту, неабходна праверыць наладу рэгламентных аперацыя на СКБД MS SQL . Сярод прыкмет неаптымальнай пабудовы плану запыту для 1С могуць быць канструкцыі:
- NESTED LOOPS
- SCAN (TABLE SCAN, INDEX SCAN, CLUSTERED INDEX SCAN)
- SEEK ... WHERE
NESTED LOOPS
Алгарытм злучэння укладзенымі цыкламі, па сутнасці сваёй, гэта просты перабор двух табліц і выснова задавальняюць злучэнню радкоў. Дадзены выгляд злучэння недапушчальны для вядучай табліцы, з вялікім колькасць запісаў. Аднак гэты від злучэння самы просты і часта выкарыстоўваецца калі СКБД MS SQL не можа падабраць іншы варыянт злучэння. У цэлым, NESTED LOOPS дапусцім да выкарыстання, калі ў вядучай табліцы не больш за два запісаў і хутчэй за ўсё ён хутчэй адпрацуе ў такой сітуацыі.
SCAN
Прагляд табліцы або азначніка. Да гэтай прыкмеце ставяцца - TABLE SCAN, INDEX SCAN, CLUSTERED INDEX SCAN. Хуткасць гэтага метаду вельмі моцна залежыць ад колькасці запісаў у сістэме. Аднак, сканаванне само па сабе не з'яўляецца памылкай. Сканаванне можа негатыўна адбівацца ў выпадках калі табліца змяшчае вялікую колькасць запісаў, а запыт вяртае нязначнае колькасць запісаў. Т.е па сутнасці СКБД марна траціць рэсурсы.
SEEK ... WHERE
Аналаг сканавання (SCAN), за тым выключэннем, што скануецца частка табліцы, па ўстаноўленым умове.