Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Részletek
| Attribútum | Érték |
|---|---|
| Terméknév | SQL Server |
| Eseményazonosító | 8645 |
| Eseményforrás | MSSQLSERVER |
| Összetevő | SQLEngine |
| Szimbolikus név | MEMTIMEDOUT_ERR |
| Üzenet szövege | Időtúllépés történt, amikor a memóriaerőforrásokra várva végrehajtják a lekérdezést a%ls(%ld) erőforráskészletben. Futtassa újra a lekérdezést. |
Magyarázat
Ez a hiba akkor jelentkezik, ha egy SQL Server-kérés hosszabb ideig várt egy lekérdezés-végrehajtási (QE) memóriakiadásra, és a memória nem volt elérhető. A lekérdezés-végrehajtási memóriát elsősorban rendezési műveletekhez, kivonatolási műveletekhez, tömeges másolási műveletekhez, valamint indexek létrehozásához és sokaságához használják. A műveletek egyikét végrehajtó lekérdezés memória-engedélyt kér. Ha nincs memória, a lekérdezés úgy van beállítva, hogy várjon egy RESOURCE_SEMAPHORE , amíg a memória elérhetővé válik.
Ha a memória nem áll rendelkezésre a lekérdezésoptimalizáló által becsült lekérdezési költség által dinamikusan meghatározott időtúllépési időszakra való várakozás után, akkor az SQL Server 8645-ös A timeout occurred while waiting for memory resources to execute the query in the resource pool 'default'. hibával leállítja a lekérdezést. Az időtúllépési érték kissé eltér az SQL Server verziói között, de a várakozási időkorlát maximális értéke 24 óra. A kiszolgáló szintjén beállított időtúllépési értéket a timeout_sec tekintheti meg.
A hibaelhárítási lépésekkel kapcsolatos részletes magyarázatért tekintse át az SQL Server memóriakiszolgalása által okozott lassú teljesítményt vagy kevés memóriaproblémát.
Oka
Ez a hiba a memóriakihasználtságokkal és a memória elérhetővé válásának hosszan tartó várakozásával kapcsolatban jelenik meg. Általában amikor egy lekérdezés befejeződik, felszabadítja az általa használt végrehajtási memóriát. Ezért ha ezt a hibát látja, az azt jelenti, hogy az időtúllépési lekérdezés megvárta, amíg más kérések befejeződnek az időtúllépési időszakon túl. Egyetlen kérés is lehet, amely az összes rendelkezésre álló QE-memóriát felhasználta, vagy sok kérés és összevonás lehetséges, a memóriakivonásuk kimerítette a QE-memóriát. Ha ilyen hosszú ideig futó kérések vannak a számítási feladatban, intézkedéseket kell tennie a végrehajtás időtartamának javítása és az általuk használt QE-memória mennyiségének csökkentése érdekében.
Felhasználói művelet
Ha nem erőforrás-kormányzót használ bizonyos számítási feladatok memóriakészletének korlátozására, ellenőrizheti a kiszolgáló általános állapotát és számítási feladatát. Ha Erőforrás-kormányzót használ, ellenőrizze az erőforráskészlet vagy a számítási feladatcsoport beállításait.
Az alábbi lista a fent említett cikkben részletezett lépéseket foglalja össze. Ezek a lépések segíthetnek a QE memóriahibáinak csökkentésében vagy megszüntetésében:
Határozza meg, hogy az SQL Server mely kérései a nagy memóriahasználati vagy QE-memóriafogyasztók. További információ: A lekérdezésvégrehajtási memória várakozásainak azonosítása.
Írja át a lekérdezéseket a rendezési és kivonatolási műveletek minimalizálása vagy elkerülése érdekében.
Frissítse a statisztikákat, és rendszeresen frissítse őket, hogy az SQL Server megfelelően becsülje meg a memóriahasználatot.
Hozzon létre megfelelő indexeket az azonosított lekérdezéshez vagy lekérdezésekhez. Az indexek csökkenthetik a feldolgozott sorok nagy számát, így módosíthatják a JOIN algoritmusokat, és csökkenthetik a támogatások méretét, vagy teljesen megszüntethetik őket.
Ha lehetséges, használja az OPTION (min_grant_percent = XX, max_grant_percent = XX) tippet a lekérdezésekben.
A Resource Governor használatával csak egy adott számítási feladatra korlátozhatja a QE memóriahasználatának hatását.
Az SQL Server 2017 és 2019 adaptív lekérdezésfeldolgozást használ, lehetővé téve, hogy a memória-visszacsatolási mechanizmus futásidőben dinamikusan módosítsa a memóriakiadás méretét. Ez a funkció megakadályozhatja a memóriahasználati problémákat.
Növelje az SQL Server memóriáját, vagy módosítsa a meglévő beállításokat.
Ellenőrizze a következő SQL Server memóriakonfigurációs paramétereket:
- kiszolgálómemória maximális száma – szükség esetén növelhető
- minimális kiszolgálómemória
- minimális memória lekérdezésenként
Figyelje meg a szokatlan beállításokat. Szükség szerint javítsa ki őket. Az SQL Server megnövekedett memóriaigényének figyelembe vétele. Az alapértelmezett és javasolt beállítások a kiszolgáló memóriakonfigurációs beállításai között találhatók.
Növelje a memóriát az operációs rendszer szintjén (fizikai vagy virtuális RAM).
Ellenőrizze, hogy más alkalmazások vagy szolgáltatások használnak-e memóriát ezen a kiszolgálón. Konfigurálja újra a kevésbé kritikus fontosságú alkalmazásokat vagy szolgáltatásokat, hogy kevesebb memóriát használjon fel, vagy helyezze át őket egy külön kiszolgálóra. Ez a művelet eltávolítja a külső memóriaterhelést.
Futtassa a következő DBCC-parancsokat több SQL Server memória-gyorsítótár felszabadításához – ez egy ideiglenes mérték.
- DBCC FREESYSTEMCACHE
- DBCC FREESESSIONCACHE (a munkamenet-cache tartalmának felszabadítása)
- DBCC FREEPROCCACHE