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
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Operációs rendszer feladatütemezése
A szálak az operációs rendszer által végrehajtott legkisebb feldolgozási egységek, és lehetővé teszik az alkalmazáslogika több egyidejű végrehajtási útvonalra való elválasztását. A szálak akkor hasznosak, ha az összetett alkalmazások több olyan feladatot is ellátnak, amelyek egyszerre végrehajthatók.
Amikor egy operációs rendszer végrehajt egy alkalmazáspéldányt, létrehoz egy folyamatot a példány kezeléséhez. A folyamat rendelkezik egy végrehajtási szállal. Ez az alkalmazáskód által végrehajtott programozási utasítások sorozata. Ha például egy egyszerű alkalmazás egyetlen, sorosan végrehajtható utasításkészlettel rendelkezik, az adott utasításkészlet egyetlen feladatként, és csak egy végrehajtási útvonal (vagy szál) van az alkalmazáson keresztül. Az összetettebb alkalmazások több feladatot is tartalmazhatnak,, amelyek nem sorosan, hanem egyidejűleg is végrehajthatók. Egy alkalmazás ezt úgy teheti meg, hogy minden tevékenységhez külön folyamatokat indít el, ami erőforrás-igényes művelet, vagy elindítja a viszonylag kevésbé erőforrás-igényes szálakat. Emellett minden szál ütemezhető végrehajtásra a folyamathoz társított többi száltól függetlenül.
A szálak lehetővé teszik az összetett alkalmazások számára, hogy hatékonyabbá tegyék a processzor (CPU) használatát még az egyetlen processzorral rendelkező számítógépeken is. Egy CPU-val egyszerre csak egy szál hajtható végre. Ha egy szál olyan hosszú ideig futó műveletet hajt végre, amely nem használja a processzort, például egy lemez olvasása vagy írása, a szálak egy másika az első művelet befejezéséig hajtható végre. Ha képes a szálak végrehajtására, miközben más szálak várnak egy művelet befejezésére, az alkalmazás maximalizálhatja a processzorhasználatot. Ez különösen igaz a többfelhasználós, lemezes I/O-igényes alkalmazásokra, például egy adatbázis-kiszolgálóra. A több CPU-val rendelkező számítógépek processzoronként egyszerre egy szálat hajthatnak végre. Ha például egy számítógép nyolc CPU-val rendelkezik, egyszerre nyolc szálat is végrehajthat.
SQL Server-feladatütemezés
Az SQL Server hatókörében egy kérés egy lekérdezés vagy köteg logikai ábrázolása. A kérések a rendszerszálak, például ellenőrzőpont vagy naplóíró által megkövetelt műveleteket is jelölik. A kérések egész életük során különböző állapotokban léteznek, és várakozásokat halmozhatnak fel, ha a kérés végrehajtásához szükséges erőforrások nem érhetők el, például zárolások vagy reteszek. A kérelmek állapotáról további információt a sys.dm_exec_requestscímű témakörben talál.
Feladatok
A tevékenység azt a munkaegységet jelöli, amelyet a kérés teljesítéséhez el kell végezni. Egy vagy több tevékenység hozzárendelhető egyetlen kérelemhez.
- A párhuzamos kérések több aktív feladattal rendelkeznek, amelyeket egyidejűleg hajtanak végre soros helyett, egy szülőfeladat (vagy koordinációs feladat) és több gyermekfeladat. A párhuzamos kérelmek végrehajtási tervének lehetnek soros ágai – a terv olyan területei, ahol az operátorok nem párhuzamosan futnak. A szülőfeladat felelős a soros operátorok végrehajtásáért is.
- A soros kérelmeknek csak egy aktív feladatuk van egy adott időpontban a végrehajtás során. A feladatok életciklusuk során különböző állapotokban léteznek. A tevékenységállapotokkal kapcsolatos további információkért lásd: sys.dm_os_tasks. A FELFÜGGESZTETT állapotú tevékenységek a tevékenység végrehajtásához szükséges erőforrásokra várnak, hogy elérhetővé váljanak. További információ a várakozási feladatokról: sys.dm_os_waiting_tasks.
Munkavállalók
Az SQL Server munkaszála, más néven munkás vagy szál, az operációs rendszer szálának logikai ábrázolása. soros kérelmekvégrehajtásakor az SQL Server adatbázismotorja egy feldolgozót hoz létre az aktív feladat végrehajtásához (1:1). párhuzamos kéréseksormódban végrehajtásakor az SQL Server adatbázismotorja hozzárendel egy feldolgozót a hozzájuk rendelt feladatok végrehajtásáért felelős gyermek feldolgozók koordinálásához (szintén 1:1), az úgynevezett szülőszál (vagy koordináló szál). A szülőszálhoz egy szülőfeladat van társítva. A szülőszál a kérés belépési pontja, és még azelőtt létezik, hogy a motor elemezni tudná a lekérdezést. A szülőszál fő feladatai a következők:
- Párhuzamos vizsgálat koordinálása.
- Párhuzamos gyermekmunkások indítása.
- Gyűjtse össze a párhuzamos szálak sorait, és küldje el az ügyfélnek.
- Helyi és globális összesítések végrehajtása.
Jegyzet
Ha egy lekérdezési terv soros és párhuzamos ágakkal rendelkezik, a párhuzamos feladatok egyike felelős a soros ág végrehajtásáért.
Az egyes tevékenységekhez létrehozott munkaszálak száma a következőktől függ:
Az, hogy a kérelem jogosult-e a párhuzamosságra, amit a Lekérdezésoptimalizáló határoz meg.
Mi a tényleges elérhető párhuzamossági fok (DOP) a rendszerben, az aktuális terhelés alapján. Ez eltérhet a becsült DOP-tól, amely a kiszolgáló maximális párhuzamossági fokának (MAXDOP) konfigurációján alapul. A MAXDOP kiszolgálókonfigurációja például 8 lehet, a futtatókörnyezetben elérhető DOP azonban csak 2 lehet, ami befolyásolja a lekérdezés teljesítményét. A memóriaterhelés és a feldolgozók hiánya két olyan feltétel, amely futásidőben csökkenti a rendelkezésre álló DOP-t.
Jegyzet
A maximális párhuzamossági (MAXDOP) korlát tevékenységenként van beállítva, nem kérésenként. Ez azt jelenti, hogy egy párhuzamos lekérdezés végrehajtása során egyetlen kérés több feladatot is létrehozhat a MAXDOP-korlátig, és minden tevékenység egy feldolgozót fog használni. További információ a MAXDOP-ról: A kiszolgáló konfigurációs beállításának maximális párhuzamossági fokának konfigurálása.
Ütemezők
Az ütemező, más néven SOS-ütemező kezeli azokat a munkaszálakat, amelyek feldolgozási időt igényelnek a feladatok nevében végzett munka elvégzéséhez. Minden ütemező egy egyedi processzorra (CPU-ra) van leképezve. Azt az időt, amikor egy feldolgozó aktív maradhat egy ütemezőben, operációsrendszer-kvantumnak nevezzük, legfeljebb 4 ms-tal. Kvantumideje lejárta után a munkavállaló átadja idejét más munkavállalóknak, akiknek hozzá kell férniük a CPU-erőforrásokhoz, és megváltoztatja az állapotát. A dolgozók közötti együttműködést a CPU-erőforrásokhoz való hozzáférés maximalizálása érdekében kooperatív ütemezésneknevezzük, amelyet más néven nem preemptív ütemezésként is ismerünk. A dolgozó állapotának változása viszont továbbítódik a munkáshoz társított feladatra, és a feladathoz társított kérésre. A munkavállalói állapotokkal kapcsolatos további információkért lásd: sys.dm_os_workers. További információ az ütemezőkről: sys.dm_os_schedulers.
Összefoglalva, egy kérés egy vagy több feladatot indíthat a munkaegységek végrehajtásához. Minden tevékenység egy munkaszálhoz van hozzárendelve,, aki a feladat végrehajtásáért felelős. Minden munkaszálat ütemezni kell (egy ütemezőre) a feladat aktív végrehajtásához.
Fontolja meg a következő forgatókönyvet:
- Az 1. feldolgozó egy hosszú ideig futó feladat, például egy olvasási lekérdezés, amely a lemezalapú táblákon végzett olvasási műveleteket használja. Az 1. feldolgozó úgy találja, hogy a szükséges adatoldalak már a pufferkészletben vannak, így nem kell várnia az I/O-műveletekre, és a teljes kvantumot felhasználhatja a hozam előtt.
- A 2. feldolgozó rövidebb, ezredmásodperc alatti feladatokat végez, ezért a teljes kvantum kimerülése előtt hozamra van szükség.
Ebben a forgatókönyvben és az SQL Server 2014-ig (12.x) az 1. feldolgozó lényegében monopolizálja az ütemezőt, mivel hosszabb kvantumideje van.
Az SQL Server 2016-tól (13.x) kezdődően a kooperatív ütemezés magában foglalja a Large Deficit First (LDF) ütemezést. LDF-ütemezés esetén a kvantumhasználati minták monitorozása biztosítja, hogy egy feldolgozó szál ne monopolizáljon egy ütemezőt. Ugyanebben a forgatókönyvben a 2. munkavállaló ismétlődően használhat kvantumokat még azelőtt, hogy az 1. munkavállaló számára több kvantum lenne engedélyezve. Ezáltal megakadályozza, hogy az 1. munkavállaló barátságtalan módon monopolizálja az ütemezőt.
Párhuzamos tevékenységek ütemezése
Képzeljen el egy MaxDOP 8-tal konfigurált SQL Servert, és a CPU-affinitás 24 processzorhoz (ütemezőkhöz) van konfigurálva a 0. és 1. NUMA-csomóponton. A 0 és 11 közötti ütemezők a 0. NUMA-csomóponthoz, a 12–23. ütemezők pedig az 1. NUMA-csomóponthoz tartoznak. Egy alkalmazás a következő lekérdezést (kérést) küldi el az adatbázismotornak:
SELECT h.SalesOrderID,
h.OrderDate,
h.DueDate,
h.ShipDate
FROM Sales.SalesOrderHeaderBulk AS h
INNER JOIN Sales.SalesOrderDetailBulk AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE (h.OrderDate >= '2014-3-28 00:00:00');
Borravaló
A példa lekérdezés a AdventureWorks2016_EXT mintaadatbázis adatbázis használatával hajtható végre. A Sales.SalesOrderHeader és Sales.SalesOrderDetail táblákat 50-szer bővítették, és átnevezték Sales.SalesOrderHeaderBulk és Sales.SalesOrderDetailBulk.
A végrehajtási terv két tábla közötti Hash Join-t mutat, és mindegyik operátor párhuzamosan hajtódik végre, amit a sárga kör két nyíllal jelez. Minden párhuzamossági operátor egy másik ág a tervben. Ezért a következő végrehajtási tervben három ág található.
Jegyzet
Ha egy végrehajtási tervet faként képzel el, a ág a terv azon része, amely egy vagy több operátort csoportosít a Párhuzamossági operátorok között, amelyeket más néven Exchange Iteratoroknak neveznek. A tervoperátorokról további információt a Showplan Logikai és Fizikai Operátorok Referenciájábantalál.
Bár a végrehajtási tervben három ág található, a végrehajtás során bármikor csak két ág hajthat végre egyszerre ebben a végrehajtási tervben:
- Az az ág, amelyben a fürtözött indexvizsgálatot használják a
Sales.SalesOrderHeaderBulk(az illesztés bemeneti oldala), önállóan hajtja végre. - Ezután az ág, amelyben a fürtözött indexvizsgálati használ az
Sales.SalesOrderDetailBulk(az illesztés mintavételi bemenete) párhuzamosan fut azzal az ággal, ahol a Bitmap létrejött, és jelenleg a kivonategyezés fut.
A Showplan XML azt mutatja, hogy 16 munkavégzőszál foglalt volt, és a 0. NUMA-csomóponton használták:
<ThreadStat Branches="2" UsedThreads="16">
<ThreadReservation NodeId="0" ReservedThreads="16" />
</ThreadStat>
A szálfoglalás biztosítja, hogy az adatbázismotor elegendő feldolgozószállal rendelkezik a kéréshez szükséges összes feladat végrehajtásához. A szálak több NUMA-csomóponton is lefoglalhatók, vagy csak egy NUMA-csomópontban foglalhatók le. A szálfoglalás futásidőben történik a végrehajtás megkezdése előtt, és az ütemező terhelésétől függ. A fenntartott feldolgozói szálak száma általánosan a concurrent branches * runtime DOP képletből származik, és kivételként kezeli a szülő-munkaszálat. Az egyes ágak munkaszálaik számában a MaxDOP értékének megfelelően vannak korlátozva. Ebben a példában két egyidejű ág van, és a MaxDOP értéke 8, ezért 2 * 8 = 16.
Referenciaként tekintse meg az élő végrehajtási tervet Élő lekérdezési statisztikák, ahol egy ág befejeződött, és két ág egyidejűleg fut.
Az SQL Server adatbázismotor egy munkavégző szálat rendel egy aktív tevékenység végrehajtásához (1:1), amely a lekérdezés végrehajtása során a sys.dm_os_tasks DMV lekérdezésével figyelhető meg, ahogyan az alábbi példában látható:
SELECT parent_task_address, task_address,
task_state, scheduler_id, worker_address
FROM sys.dm_os_tasks
WHERE session_id = <insert_session_id>
ORDER BY parent_task_address, scheduler_id;
Borravaló
A parent_task_address oszlop mindig NULL értékű a szülőfeladathoz.
Borravaló
Egy nagyon forgalmas SQL Server adatbázismotoron számos aktív tevékenység látható, amelyek túllépik a fenntartott szálak által beállított korlátot. Ezek a tevékenységek olyan ághoz tartozhatnak, amelyet már nem használnak, és átmeneti állapotban vannak, és karbantartásra várnak.
Itt van az eredményhalmaz. Figyelje meg, hogy a jelenleg végrehajtó ágakhoz 17 aktív tevékenység tartozik: a fenntartott szálaknak megfelelő 16 gyermekfeladat, valamint a szülőfeladat vagy a koordinációs tevékenység.
| szülő_feladat_cím | feladat cím | feladat_állapot | ütemező_azonosító | munkavállaló_címe |
|---|---|---|---|---|
| NULLA | 0x000001EF4758ACA8 |
FELFÜGGESZTETT | 3 | 0x000001EFE6CB6160 |
| 0x000001EF4758ACA8 | 0x000001EFE43F3468 | FELFÜGGESZTETT | 0 | 0x000001EF6DB70160 |
| 0x000001EF4758ACA8 | 0x000001EEB243A4E8 | FELFÜGGESZTETT | 0 | 0x000001EF6DB7A160 |
| 0x000001EF4758ACA8 | 0x000001EC86251468 | FELFÜGGESZTETT | 5 | 0x000001EEC05E8160 |
| 0x000001EF4758ACA8 | 0x000001EFE3023468 | FELFÜGGESZTETT | 5 | 0x000001EF6B46A160 |
| 0x000001EF4758ACA8 | 0x000001EFE3AF1468 | FELFÜGGESZTETT | 6 | 0x000001EF6BD38160 |
| 0x000001EF4758ACA8 | 0x000001EFE4AFCCA8 | FELFÜGGESZTETT | 6 | 0x000001EF6ACB4160 |
| 0x000001EF4758ACA8 | 0x000001EFDE043848 | FELFÜGGESZTETT | 7 | 0x000001EEA18C2160 |
| 0x000001EF4758ACA8 | 0x000001EF69038108 | FELFÜGGESZTETT | 7 | 0x000001EF6AEBA160 |
| 0x000001EF4758ACA8 | 0x000001EFCFDD8CA8 | FELFÜGGESZTETT | 8 | 0x000001EFCB6F0160 |
| 0x000001EF4758ACA8 | 0x000001EFCFDD88C8 | FELFÜGGESZTETT | 8 | 0x000001EF6DC46160 |
| 0x000001EF4758ACA8 | 0x000001EFBCC54108 | FELFÜGGESZTETT | 9 | 0x000001EFCB886160 |
| 0x000001EF4758ACA8 | 0x000001EC86279468 | FELFÜGGESZTETT | 9 | 0x000001EF6DE08160 |
| 0x000001EF4758ACA8 | 0x000001EFDE901848 | FELFÜGGESZTETT | 10 | 0x000001EFF56E0160 |
| 0x000001EF4758ACA8 | 0x000001EF6DB32108 | FELFÜGGESZTETT | 10 | 0x000001EFCC3D0160 |
| 0x000001EF4758ACA8 | 0x000001EC8628D468 | FELFÜGGESZTETT | 11 | 0x000001EFBFA4A160 |
| 0x000001EF4758ACA8 | 0x000001EFBD3A1C28 | FELFÜGGESZTETT | 11 | 0x000001EF6BD72160 |
Figyelje meg, hogy a 16 gyermekfeladat mindegyikéhez más munkaszál van hozzárendelve (az worker_address oszlopban látható), de az összes feldolgozó ugyanahhoz a nyolc ütemezőből álló készlethez van hozzárendelve (0,5,6,7,8,9,10,11), és hogy a szülőfeladat a készleten kívüli ütemezőhöz van rendelve (3).
Fontos
Ha egy adott ág első párhuzamos tevékenységkészlete ütemezve van, az adatbázismotor ugyanazt az ütemezőkészletet fogja használni a többi ágon végzett további feladatokhoz. Ez azt jelenti, hogy ugyanazt az ütemezőkészletet fogja használni a teljes végrehajtási terv összes párhuzamos tevékenységéhez, csak a MaxDOP korlátozza.
Az SQL Server adatbázismotor mindig ugyanabból a NUMA-csomópontból próbál ütemezőket hozzárendelni a feladat végrehajtásához, és egymás után (ciklikus időszeleteléses módon) hozzárendelni őket, ha az ütemezők elérhetők. A szülőfeladathoz rendelt munkaszál azonban más NUMA-csomópontba helyezhető, mint a többi tevékenység.
A munkaszál csak a kvantuma (4 ms) alatt maradhat aktív az ütemezőben, és a kvantum eltelte után vissza kell adnia az ütemezőt, hogy egy másik feladathoz rendelt munkaszál aktívvá válhasson. Amikor egy dolgozó kvantuma lejár, és már nem aktív, a megfelelő feladat egy FIFO sorba kerül FUTTATHATÓ állapotban, amíg újra FUTÓ állapotba nem kerül, feltéve, hogy a feladat nem igényel hozzáférést azokhoz az erőforrásokhoz, amelyek jelenleg nem érhetők el, például egy retesz vagy zárolás. Ebben az esetben a feladat FELFÜGGESZTETT állapotba kerül, nem pedig FUTTATHATÓ állapotba, mindaddig, amíg ezek az erőforrások elérhetők nem lesznek.
Borravaló
A fenti DMV kimenet alapján az összes aktív feladat FELFÜGGESZTETT állapotban van. A várakozási feladatokra vonatkozó további részletek a sys.dm_os_waiting_tasks DMV lekérdezésével érhetők el.
Összefoglalva, a párhuzamos kérések több feladatot is elindítanak. Minden feladatot egyetlen munkaszálhoz kell hozzárendelni. Minden munkaszálat egyetlen ütemezőhöz kell hozzárendelni. Ezért a használatban lévő ütemezők száma nem haladhatja meg az ágankénti párhuzamos tevékenységek számát, amelyet a MaxDOP-konfiguráció vagy a lekérdezési tipp állít be. A koordináló szál nem járul hozzá a MaxDOP korláthoz.
Szálak hozzárendelése CPU-khoz
Alapértelmezés szerint az SQL Server minden példánya elindítja az egyes szálakat, és az operációs rendszer a terhelés alapján elosztja a szálakat az SQL Server példányai között a processzorok (CPU-k) között. Ha a folyamat affinitása engedélyezve van az operációs rendszer szintjén, akkor az operációs rendszer minden szálat hozzárendel egy adott CPU-hoz. Ezzel szemben az SQL Server adatbázismotor az SQL Server munkaszálakat rendeli ütemezőkhöz, amelyek egyenletesen osztják el a szálakat a processzorok között, körkörös elosztás szerint.
Ha többfeladatos munkát szeretne végezni, például ha több alkalmazás is hozzáfér ugyanahhoz a processzorkészlethez, az operációs rendszer néha áthelyezi a feldolgozó szálakat a különböző CPU-k között. Bár az operációs rendszer szempontjából hatékony, ez a tevékenység csökkentheti az SQL Server teljesítményét nagy rendszerterhelések esetén, mivel az egyes processzorgyorsítótárak ismételten újratöltődnek adatokkal. A cpu-k adott szálakhoz való hozzárendelése ezen feltételek mellett javíthatja a teljesítményt azáltal, hogy megszünteti a processzorok újrabetöltését, és csökkenti a processzorok közötti áttelepítést (ezáltal csökkentve a környezetváltást); a szál és a processzor közötti ilyen társítást processzor-affinitásnak nevezzük. Ha az affinitás engedélyezve van, az operációs rendszer minden szálat hozzárendel egy adott CPU-hoz.
Az affinitási maszk beállítás a(z) ALTER SERVER CONFIGURATIONhasználatával van beállítva. Ha az affinitási maszk nincs beállítva, a SQL Server egy példánya egyenletesen elosztja a munkavégző szálakat a nem maszkolt ütemezők között.
Figyelem
Ne konfigurálja a cpu-affinitást az operációs rendszerben, és ne konfigurálja az affinitási maszkot az SQL Serveren. Ezek a beállítások ugyanazt az eredményt próbálják elérni, és ha a konfigurációk inkonzisztensek, előfordulhat, hogy kiszámíthatatlan eredmények érhetők el. További információ: affinitásmaszk beállítás.
A szálkészletezés segít optimalizálni a teljesítményt, ha nagy számú ügyfél csatlakozik a kiszolgálóhoz. Általában minden lekérdezéskéréshez külön operációsrendszer-szál jön létre. Ha azonban több száz kapcsolat van a kiszolgálóval, lekérdezési kérésenként egy szál használata nagy mennyiségű rendszererőforrást képes felhasználni. A maximális feldolgozószál-beállítás lehetővé teszi, hogy az SQL Server feldolgozószálak készletét hozza létre nagyobb számú lekérdezési kérés kiszolgálásához, ami javítja a teljesítményt.
A könnyű készletmegosztási lehetőség használata
Fontos
Az SQL Server 2025 -től (17.x) kezdődően a lehetőség által engedélyezett lightweight pooling funkció elavult, és az SQL Server egy későbbi verziójában tervezik az eltávolítást. Az ismert stabilitási és kompatibilitási problémák miatt a Microsoft azt javasolja, hogy ne használja ezt a funkciót az SQL Server bármely verziójában.
Előfordulhat, hogy a szálkörnyezetek közötti váltással járó többletterhelés nem túl nagy. Az SQL Server legtöbb példánya nem lát teljesítménybeli különbséget az egyszerűsített készletezési beállítás 0 vagy 1 értékre állítása között. Az SQL Server azon példányai, amelyek a könnyűsúlyú feladatkezelésből profitálhatnak, azok, amelyek egy olyan számítógépen futnak, amely az alábbi jellemzőkkel rendelkezik:
- Nagy méretű, több processzoros kiszolgáló
- Az összes PROCESSZOR a maximális kapacitás közelében fut
- A kontextusváltás magas szintű
Ezek a rendszerek kismértékű teljesítménynövekedést tapasztalhatnak, ha a könnyített összesítési érték 1.
Fontos
Ne használjon száloptikás ütemezést rutinműveletekhez. Ez csökkentheti a teljesítményt azáltal, hogy gátolja a környezetváltás rendszeres előnyeit, és mivel az SQL Server egyes összetevői szálas módban nem működnek megfelelően. További információért lásd: könnyű készletezés.
Szál- és szálvégrehajtás
A Microsoft Windows egy numerikus prioritású rendszert használ, amely 1 és 31 közötti tartományt használ a szálak végrehajtási ütemezéséhez. A nulla az operációs rendszer használatára van fenntartva. Ha több szál is végrehajtásra vár, a Windows a legmagasabb prioritással küldi el a szálat.
Alapértelmezés szerint az SQL Server minden példánya 7 prioritású, amelyet normál prioritásnak nevezünk. Ez az alapértelmezett beállítás elegendő prioritást biztosít az SQL Server-szálak számára ahhoz, hogy elegendő cpu-erőforrást szerezzenek be anélkül, hogy hátrányosan érintenék más alkalmazásokat.
Fontos
Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
A prioritás növelése konfigurációs beállítással növelheti a szálak prioritását egy SQL Server-példányról 13-ra. Ezt magas prioritásnak nevezzük. Ez a beállítás magasabb prioritást biztosít az SQL Server-szálak számára, mint a legtöbb más alkalmazás. Így az SQL Server-szálak általában akkor lesznek ütemezve, amikor készen állnak a futtatásra, és nem kerülnek kiszorításra más alkalmazások szálai által. Ez javíthatja a teljesítményt, ha egy kiszolgáló csak SQL Server-példányokat futtat, és nem futtat más alkalmazásokat. Ha azonban memóriaigényes művelet történik az SQL Serverben, akkor más alkalmazások valószínűleg nem rendelkeznek elég magas prioritással az SQL Server-szál előkezeléséhez.
Ha több SQL Server-példányt futtat egy számítógépen, és csak néhány példány esetében kapcsolja be a prioritás növelését, a normál prioritással futó példányok teljesítménye hátrányosan befolyásolhatja. Emellett a kiszolgálón lévő egyéb alkalmazások és összetevők teljesítménye is csökkenhet, ha a prioritás növelése be van kapcsolva. Ezért csak szigorúan ellenőrzött körülmények között szabad használni.
Gyakori elérésű processzor hozzáadása
Fontos
Az SQL Server 2025 (17.x) verziójától kezdve a hot add CPU funkció kivezetés alatt áll, és az SQL Server egy későbbi verziójában tervezik eltávolítani. Ismert stabilitási problémák miatt a Microsoft azt javasolja, hogy ne használja ezt a funkciót az SQL Server felügyeletében az SQL Server bármely verziójában.
A Hot add CPU funkció lehetővé teszi, hogy a processzorokat dinamikusan adjuk hozzá egy futó rendszerhez. A CPU-k hozzáadása fizikailag történhet új hardverek hozzáadásával, logikailag online hardverparticionálással vagy virtuálisan egy virtualizálási rétegen keresztül.
A CPU forró hozzáadásának követelményei:
- Olyan hardverre van szükség, amely támogatja a processzor forró hozzáadását.
- A Windows Server Datacenter vagy az Enterprise kiadás támogatott verzióját igényli. A Windows Server 2012-től kezdve a hot add funkció támogatott a Standard kiadásban.
- Sql Server Enterprise kiadást igényel.
- Az SQL Server nem konfigurálható a soft NUMA használatára. További információ a soft NUMA-ról: Soft-NUMA (SQL Server).
Az SQL Server nem használja automatikusan a processzorokat a hozzáadásuk után. Ez megakadályozza, hogy az SQL Server olyan processzorokat használ, amelyek más célra is hozzáadhatók. Cpu-k hozzáadása után hajtsa végre a RECONFIGURE utasítást, hogy az SQL Server felismerje az új CPU-kat elérhető erőforrásként.
Ha a affinitás64 maszk van konfigurálva, az affinitás64 maszkot módosítani kell az új CPU-k használatához.
Ajánlott eljárások az SQL Server 64-nél több processzort tartalmazó számítógépeken való futtatásához
Hardverszálak hozzárendelése processzorokhoz
Ne használja az affinitási maszkot és az affinitás64 maszkkiszolgáló konfigurációs beállításait a processzorok adott szálakhoz való kötéséhez. Ezek a lehetőségek legfeljebb 64 CPU-ra korlátozódnak. Ehelyett használja az ALTER SERVER CONFIGURATION SET PROCESS AFFINITY lehetőséget.
Tranzakciónapló fájlméretének kezelése
A tranzakciónapló-fájl méretének növeléséhez ne támaszkodjon az automatikus növekedésre. A tranzakciónapló növelésének soros folyamatnak kell lennie. A napló kiterjesztése megakadályozhatja a tranzakcióírási műveleteket a naplókiterjesztés befejezéséig. Ehelyett helyezze előre a naplófájlok helyét úgy, hogy a fájlméretet olyan értékre állítja, amely elég nagy ahhoz, hogy támogassa a környezet tipikus számítási feladatait.
Indexműveletek maximális párhuzamossági fokának beállítása
Az indexműveletek, például az indexek létrehozása vagy újraépítése javítható a sok CPU-val rendelkező számítógépeken, ha ideiglenesen az adatbázis helyreállítási modelljét a tömegesen naplózott vagy egyszerű helyreállítási modellre állítja. Ezek az indexműveletek jelentős naplótevékenységet eredményezhetnek, és a naplók versengése hatással lehet az SQL Server által választott párhuzamosság (DOP) legjobb fokára.
A kiszolgáló konfigurációs maximális párhuzamossági fokának (MAXDOP) beállítása mellett érdemes lehet módosítani az indexműveletek párhuzamosságát a MAXDOP beállításhasználatával. További információ: Párhuzamos indexelési műveletek konfigurálása. A párhuzamossági kiszolgáló konfigurációs beállításainak maximális fokának beállításával kapcsolatos további információkért és irányelvekért lásd: A párhuzamossági kiszolgáló konfigurációs beállításának maximális fokának konfigurálása.
A munkaszálak maximális számának beállítása opció
Az SQL Server dinamikusan konfigurálja a maximális feldolgozói szálakat kiszolgálókonfigurációs beállítást indításkor. Az SQL Server a rendelkezésre álló CPU-k és a rendszerarchitektúra alapján határozza meg a kiszolgáló konfigurációját az indítás során, dokumentált képlethasználatával.
Ez a beállítás egy speciális lehetőség, és csak tapasztalt adatbázis-szakembernek kell módosítania.
Ha arra gyanakszik, hogy teljesítményproblémáról van szó, akkor valószínűleg nem a munkavégző szálak rendelkezésre állása. Az ok valószínűleg valami olyan, mint az I/O művelet, ami miatt a munkaszálak várakozni kényszerülnek. A maximális munkaszál-beállítás módosítása előtt érdemes megtalálni a teljesítményproblémák kiváltó okát. Ha azonban manuálisan kell beállítania a feldolgozószálak maximális számát, ezt a konfigurációs értéket mindig a rendszeren található PROCESSZORok számának legalább hétszeresére kell állítani. További információ: A maximális feldolgozói szálak konfigurálása.
Az SQL Trace és az SQL Server Profiler használatának elkerülése
Azt javasoljuk, hogy éles környezetben ne használja az SQL Trace-t és az SQL Profilert. Az eszközök futtatásának többletterhelése a processzorok számának növekedésével is nő. Ha az SQL Trace-t éles környezetben kell használnia, korlátozza a nyomkövetési események számát a minimálisra. Gondosan profilozza és tesztelje a terhelés alatt lévő nyomkövetési eseményeket, és kerülje a teljesítményt jelentősen befolyásoló eseménykombinációk használatát.
Fontos
Az SQL Trace és az SQL Server Profiler elavult. A Microsoft.SqlServer.Management.Trace SQL Server Trace és Replay objektumokat tartalmazó névtér is elavult.
Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
Használja helyette a Bővített események parancsot. Kiterjesztett események további információiért tekintse meg a következőket: Gyors kezdési útmutató: Kiterjesztett események az SQL Serverben, valamint az SSMS XEvent Profiler.
Jegyzet
Az Analysis Services számítási feladataihoz készült SQL Server Profiler nem elavult, és továbbra is támogatott lesz.
A tempdb adatfájlok számának beállítása
A fájlok száma a (logikai) processzorok számától függ a gépen. Általános szabályként, ha a logikai processzorok száma kisebb vagy egyenlő nyolcnál, használja ugyanazt az adatfájlokat, mint a logikai processzorok. Ha a logikai processzorok száma meghaladja a nyolcat, használjon nyolc adatfájlt, majd ha a versengés folytatódik, növelje az adatfájlok számát 4 többszörösével, amíg a versengés elfogadható szintre nem csökken, vagy módosítsa a számítási feladatot/kódot. Ne feledkezzen meg a tempdbegyéb javaslatairól sem, amelyek a SQL Servertempdb teljesítményének optimalizálását tárgyaló részben találhatók.
Az tempdbegyidejűségi igényeinek gondos figyelembevételével azonban csökkentheti az adatbázis-kezelés többletterhelését. Ha például egy rendszer 64 CPU-val rendelkezik, és általában csak 32 lekérdezés használ tempdb, a tempdb fájlok számának 64-esre emelése nem növeli a teljesítményt.
64-nél több processzort használó SQL Server-összetevők
Az alábbi táblázat felsorolja az SQL Server-összetevőket, és jelzi, hogy használhatnak-e több 64 PROCESSZORt.
| Folyamat neve | Végrehajtható program | Több mint 64 processzor használata |
|---|---|---|
| SQL Server adatbázismotor | Sqlserver.exe | Igen |
| Jelentési szolgáltatások | Rs.exe | Nem |
| Analysis Services | As.exe | Nem |
| Integrációs szolgáltatások | Is.exe | Nem |
| Szolgáltatásközvetítő | Sb.exe | Nem |
| Full-Text Keresés | Fts.exe | Nem |
| SQL Server-ügynök | Sqlagent.exe | Nem |
| SQL Server Management Studio | Ssms.exe | Nem |
| SQL Server beállítása | Setup.exe | Nem |