Apr 25 2007

SET NOCOUNT ON

Categorie: SQL Server | T-SQL | DBACatalin Dumitru @ 08:48

Una dintre cele mai importante sarcini zilnice pe care administratorii de baze de date trebuie să le execute este aceea de a avea grijă ca sistemul de gestiune a bazelor de date să ruleze cât mai repede. Cu cât mai mulţi utilizatori se conectază la server-ul de baze de date, acestea vor creşte ca dimensiune de stocare iar scăderea performanţelor este inevitabilă. Conform acestei idei, administratorii şi dezvoltatorii ar trebui să ia in considerare posibilităţile de optimizare încă de la început. Acest lucru nu este însă uşor de făcut, datorită modificărilor în timp dar sunt câteva lucuri de care se poate ţine cont.

Uneori, chiar şi lucrurile simple pot face diferenţa. Unul dintre aceste lucruri care ar trebui să facă parte din fiecare procedură stocată este SET NOCOUNT ON. Această linie de cod, pusă la începutul codului din proceduri are ca efect suprimarea mesajelor trimise de SQL Server, clientului, după ce un lot de instrucţiuni a fost executat. Aceasta se realizează după ce loturi de instrucţiuni SELECT, INSERT, UPDATE şi DELETE au fost executate. Această informaţie este utilă atunci cand executăm cod T-SQL din consolă (ex. Management Studio) dar când executăm proceduri stocate, informaţia nu este necesară pentru aplicaţia client.

Înlăturând traficul din reţea care conţine această informaţie, se poate obţine o creştere de performanţă a aplicaţiilor si a bazelor de date.

Dacă avem nevoie de numărul de rânduri afectate de loturile de instrucţiuni, putem obţine această informaţie cu ajutorul @@ROWCOUNT. Aşadar, dacă executăm o procedură care conţine SET NOCOUNT ON putem să abţinem numărul de rânduri afectate apelând la @@ROWCOUNT.

Microsoft a ţinut cont de acastă optimizare şi a modificat codul generat pentru crearea de noi proceduri, astfel încât, acesta să conţină şi linia SET NOCOUNT ON.

Etichete: , ,