Een testomgeving voor een applicatie klapte er gisteren uit omdat MSSQL2005 een query niet meer kon/wilde uitvoeren. De foutmelding:
Hiep hoi, het probleem is (voor nu) opgelost, maar ik snap niet wat er nu écht aan de hand is. Wat is nu de oorzaak geweest? Ik kan wel beredeneren dat de hoeveelheid data in het systeem ervoor zorgt dat de cost te hoog wordt, maar het productiesysteem bevat nog meer data en die heeft (nog) niet dit probleem vertoond. Ik wil ook gaan nadenken over mogelijke manieren om soortgelijke problemen vóór te zijn: proactief (inspelen op gebruik en behoeftes van het systeem) in plaats van reactief (monitoring en reageren op fouten).
Ik blijf nu met een paar vragen zitten. Zijn het de resources op het systeem die de oorzaak zijn? Waarop baseert MSSQL eigenlijk de estimated cost en hoe vaak worden die gegevens bijgewerkt? Of is dit realtime berekend?
Dus, concluderend:
- Kent iemand artikelen op internet die wat meer inzicht geven in deze materie?
- Of, kan iemand mij antwoord geven op de twee vragen in de vorige paragraaf.
Nu heb ik even zitten zoeken op internet en ik kon eigenlijk niet echt een oplossing vinden voor dit probleem. De meeste hits gaan over een bug in MSSQL2000 die al is opgelost met een hotfix / service pack. Of ze vermelden onderstaande en dat voelt ook niet echt goed. De reden voor de threshold is er niet voor niks imho.The query has been canceled because the estimated cost of this query (865) exceeds the configured threshold of 100. Contact the system administrator.
Uiteindelijk hebben we het probleem opgelost door even goed naar de query te kijken en een index aan te brengen op een kolom. De cost maakte een vrije val van 865 naar 0,08Explanation
The query was canceled because the estimated cost of this query exceeds the configured threshold set for the QUERY_GOVERNOR_COST_LIMIT.
User Action
Set the QUERY_GOVERNOR_COST_LIMIT option to a higher value.
Hiep hoi, het probleem is (voor nu) opgelost, maar ik snap niet wat er nu écht aan de hand is. Wat is nu de oorzaak geweest? Ik kan wel beredeneren dat de hoeveelheid data in het systeem ervoor zorgt dat de cost te hoog wordt, maar het productiesysteem bevat nog meer data en die heeft (nog) niet dit probleem vertoond. Ik wil ook gaan nadenken over mogelijke manieren om soortgelijke problemen vóór te zijn: proactief (inspelen op gebruik en behoeftes van het systeem) in plaats van reactief (monitoring en reageren op fouten).
Ik blijf nu met een paar vragen zitten. Zijn het de resources op het systeem die de oorzaak zijn? Waarop baseert MSSQL eigenlijk de estimated cost en hoe vaak worden die gegevens bijgewerkt? Of is dit realtime berekend?
Dus, concluderend:
- Kent iemand artikelen op internet die wat meer inzicht geven in deze materie?
- Of, kan iemand mij antwoord geven op de twee vragen in de vorige paragraaf.
Today's subliminal thought is: