Аналіз запытаў 1С з дапамогай SQL Server Profiler

  1. Прыкметы выбару неаптымальнай плана запыту СКБД
  2. NESTED LOOPS
  3. SCAN
  4. SEEK ... WHERE

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

Дадатак 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), за тым выключэннем, што скануецца частка табліцы, па ўстаноўленым умове.