DBAtlas · Atlas d'exploitation des bases de données

8645: A time out occurred while waiting for memory resources to execute the query (timeout en attendant les ressources mémoire nécessaires à l'exécution de la requête)

SQL Server

Que signifie cette erreur ?

Une requête a expiré en attendant sur le resource semaphore l'octroi de mémoire (memory grant) dont elle a besoin pour s'exécuter. La pression mémoire ayant empêché l'allocation d'un octroi, l'opération a été annulée.

Cause

Des requêtes concurrentes gourmandes en mémoire (gros tris, hash joins, hash aggregates) ont consommé tout le pool de mémoire des requêtes ; les nouvelles requêtes se sont mises en file d'attente sur le sémaphore et ont expiré. Des estimations d'octroi de mémoire surdimensionnées (statistiques obsolètes, mauvais plans) ou une mémoire serveur insuffisante sont la cause racine.

Comment la corriger

Identifiez les requêtes qui attendent ou détiennent de la mémoire avec sys.dm_exec_query_memory_grants et les DMV du resource semaphore. Mettez à jour les statistiques et corrigez les plans qui provoquent des octrois de mémoire gonflés (index appropriés, meilleures estimations). Réduisez la concurrence des requêtes gourmandes en mémoire ; si nécessaire, plafonnez les octrois de mémoire avec Resource Governor. Revoyez la configuration mémoire du serveur (max server memory).

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur