Author - MilošSQL

Zašto je moja aplikacija spora? (Parameter Sniffing u SQL Serveru)

Ovaj kompakt seminar (3-4 sata) je „must“ za sve programere koji rade ili planiraju ozbiljno da rade na rešenjima koja koriste SQL Server bazu podataka. I oni koji su čuli za ovaj fenomen i oni koji nisu sasvim sigurno se gotovo svakodnevno susreću sa njim u praksi, i nebrojeno puta je upravo parameter sniffing bivao uzrokom ozbiljnih problema sa performansama. Evo tipičnih simptoma:

„Aplikacija je juče radila odlično, a danas se mnogi korisnici žale da je spora.“

„Korisnici iz odeljenja A se žele da im je danas aplikacija spora, dok su ovi iz B zadovoljni, prošle nedelje je bilo obrnuto, a mi u međuvremenu ništa novo nismo isporučili!“

„Kada vršimo pretragu po CustomerId-u sve je brzo, međutim kada pretražujemo po datumu sporo je i dobijamo povremene tajmaute, a juče sve suprotno od toga – pretraga po datumima je bila brza! “

„Kada pretražujemo po broju narudžbine sve je topčina, ali zato kada specificiramo from i to datume nema šanse da dobijemo report, čak i kad odaberemo samo nedelju dana!“

Ako ste dobili pritužbe slične pobrojanim, onda je ovaj seminar za Vas.

Parameter Sniffing je ponašanje SQL Servera prilikom pravljenja plana izvršavanja za stored proceduru ili parametrizovan upit koje je u najvećem broju slučajeva poželjno i omogućava efikasnije korišćenje resursa. Međutim, ponekad isti taj fenomen može da bude uzrok ozbiljnih problema i ovaj se seminar fokusira na opis i prevazilaženje istih.

Textfeld:

Moduli:

  •  Kako SQL Server generiše i kešira planove
  •  Uvod u Parameter Sniffing
  •  Case Study 1: procedura sa opcionim parametrima
  •  Case Study 2: neuniformna distribucija podataka
  •  Case Study 3: Indeksi na različitim kolonama
  •  10 (deset!) rešenja za problem sa PS

U uvodnom delu videćemo šta se događa kada SQL Server prvi put poziva stored proceduru, kako se pravi i kešira plan izvršavanja, gde je tu parameter sniffing i kada je on dobar, a kada nepoželjan.

Dalje nastavljamo sa tri primera iz prakse koji reprezentuju najčešće slučajeve lošeg parametar sniffinga: veoma fleksibilnu proceduru koja prihvata opcione parametre, proceduru koja u zavisnosti od parametara operiše sa veoma različitom količinom podataka (npr. neki klijent ima milione porudžbine, a neki pak svega četiri, a procedura treba da bude brza i efikasna za oba) i konačno proceduru koja ima planove koji koriste indekse na različitim kolonama

Na kraju, razume se, demonstriraćemo 10 (dobro ste videli, deset!) načina za prevazilaženje ovog problema i posavetovaćemo Vas koje rešenje treba primeniti u zavisnosti od situacije.