Informizely customer feedback surveys

Traceflag 4199 in SQL Server


Traceflag 4199 in SQL Server

Wat vaak onbekend is over servicepacks en hotfixes

Vanaf MSSQL 2000 Service Pack 3 heeft Microsoft besloten dat iedere modificatie in hun software, welke het executieplan van een query kan beïnvloeden, specifiek geactiveerd moet worden. Standaard staan dus alle verbeteringen in een update, hotfix of servicepack uit!

De uitzondering hierop zijn bugfixes als gevolg van een foutief of onbetrouwbaar resultaat of op onderdelen wat kon leiden tot corruptie. Deze staan standaard wel aan. Door dit beleid voorkom je dat queries zich opeens anders (negatiever) kunnen gaan gedragen na de installatie van een update.

De optie om de verbeteringen te activeren doe je met een traceflag. Een traceflag is een nummer, waarmee je het gedrag van MSSQL Server beïnvloedt. Je kunt een traceflag vergelijken met de oude DIP switches die je soms nog weleens tegen komt in appratuur. Om genoemde verbeteringen in een hotfix of servicepack te activeren moet traceflag 4199 worden geactiveerd.

Deze werkwijze van Microsoft is wel te begrijpen; als je hele specifieke queries hebt welke alleen goed kunnen functioneren met een specifiek executieplan, dan wil je niet dat dit door een update teniet wordt gedaan. Maar in de praktijk kom je deze situatie zelden tegen en levert de performancewinst door het activeren van deze traceflag veel meer op dan de mogelijke kans op opeens slecht lopende queries.

Een goed voorbeeld is Service Pack 1 van MSSQL 2014. MSSQL 2014 heeft een nieuwe Query Optimizer en dit gaat gepaard met een hoop fouten in de RTM versie. Veel van deze fouten zijn in SP1 verholpen, maar omdat deze bugs niet hebben geleid tot corruptie, staan de verbeteringen dus niet aan. Gebruik je dus MSSQL 2014 met SP1 met de nieuwe Query Optimizer, dan ontkom je er niet aan om deze traceflag te activeren. Een ander voorbeeld is de applicatie Dynamics, notabene van Microsoft zelf. Het ontwikkelteam van deze applicatie heeft een lijst opgesteld met traceflags welke geactiveerd moeten worden voor een betere prestatie. Traceflag 4199 is er daar een van.

Let erop dat er traceflags zijn, welke door Microsoft zijn beschreven (“documented”) en dus ondersteund en dat er “undocumented” traceflags bekend zijn. Het gebruik van undocumented traceflags neemt een risico met zich mee, want dit kan leiden tot een situatie waardoor er geen support meer wordt geleverd. Andersom mogen undocumented traceflags alleen worden geactiveerd op advies van Microsoft.

Bestudeer altijd eerst het doel en de effecten van een traceflag alvorens deze in een testomgeving uit te proberen. Graag bieden wij u desgewenst ondersteuning bij de toepassing van traceflags. Op dit moment zijn er al meer dan 100 traceflags en dit aantal neemt alleen maar toe.

DBA.nl,
dé database
administrator

DBA.nl is de allround database expert gespecialiseerd in het inrichten, onderhouden, monitoren van database omgevingen. Daarnaast geven wij advies en nemen performance problemen weg.