Az SQL Server I/O alapjai

A következőkre vonatkozik:SQL ServerFelügyelt Azure SQL-példánySQL Server azure-beli virtuális gépeken

Az SQL Server-adatbázisok elsődleges célja az adatok tárolása és lekérése, így az intenzív lemezbemenet/-kimenet (I/O) az adatbázismotor alapvető jellemzője. Mivel a lemez I/O-műveletei sok erőforrást használhatnak fel, és viszonylag hosszú időt is igénybe vehetnek, az SQL Server az I/O rendkívül hatékonyvá tételére összpontosít.

A SQL Server tárolóalrendszerei több formában is elérhetők, beleértve a mechanikus meghajtókat és a szilárdtest-tárolást is. Ez a cikk részletesen bemutatja, hogyan használhatja a meghajtó gyorsítótárazási alapelveit az adatbázismotor I/O-teljesítményének javítása érdekében.

Az SQL Server megköveteli, hogy a rendszerek támogassák az SQL Server I/O megbízhatósági programra vonatkozó követelményeiben ismertetett garantált teljesítést a stabil adathordozóra.

Ez a követelmény a következő feltételeket tartalmazza, de nem kizárólagosan:

Az ezen követelményeknek megfelelő rendszerek támogatják SQL Server adatbázis-tárolást. A rendszereknek nem kell szerepelniük SQL Server tárolási megoldásokat tartalmazó programokban, de garantálniuk kell a követelmények teljesítését.

Lemez I/O

A pufferkezelő csak olvasási és írási műveleteket végez az adatbázisba. Az egyéb fájl- és adatbázisműveleteket, például a megnyitást, a bezárást, a kiterjesztést és a zsugorítást az adatbázis-kezelő és a fájlkezelő összetevői kezelik.

A pufferkezelő lemez I/O-műveletei a következő jellemzőkkel rendelkeznek:

  • Az I/O-t általában aszinkron módon hajtják végre, ami lehetővé teszi a hívó szál feldolgozását, amíg az I/O-művelet a háttérben zajlik. Bizonyos körülmények között, például a helytelenül igazított napló I/O esetén, szinkron I/O-k fordulhatnak elő.

  • Az összes I/O művelet a hívó szálakon keresztül történik, hacsak nincs használatban az affinitási I/O beállítás. A affinity I/O-maszk beállítás a processzorok meghatározott részhalmazához köti SQL Server lemez I/O-ját. A csúcskategóriás SQL Server online tranzakciófeldolgozási (OLTP) környezetekben ez a bővítmény növelheti az I/Os-t kibocsátó SQL Server-szálak teljesítményét.

  • A többoldalas I/O műveletek elvégzése elosztott I/O-val valósítható meg, amely lehetővé teszi az adatok átvitelét a nem összefüggő memóriaterületekre vagy azon kívül. SQL Server gyorsan kitöltheti vagy kiürítheti a puffergyorsítótárat, így elkerülheti a több fizikai I/O-kérést.

Hosszú I/O-kérések

A pufferkezelő az I/O-kéréseket jelenti be, amelyek fennállnak legalább 15 másodpercig. Ez a folyamat segít a rendszergazdának különbséget tenni az SQL Server-problémák és az I/O-alrendszer problémái között. A MSSQLSERVER_833 hibaüzenet a következőképpen jelenik meg az SQL Server hibanaplójában:

SQL Server has encountered ## occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [##] in database [##] (#). The OS file handle is 0x00000. The offset of the latest long I/O is: 0x00000.

A hosszú I/O lehet olvasási vagy írási művelet. Az üzenet jelenleg nem jelzi, hogy melyiket. A hosszú I/O-üzenetek figyelmeztetések, nem hibák. Nem az SQL Serverrel, hanem a mögöttes I/O-rendszerrel kapcsolatos problémákat jeleznek. Az üzenetek segítenek a rendszergazdának gyorsabban megtalálni a gyenge SQL Server-válaszidők okát, és megkülönböztetni az SQL Serveren kívül eső problémákat. Ezért nem igényelnek semmilyen műveletet, de a rendszergazdának meg kell vizsgálnia, hogy az I/O-kérés miért tartott ilyen sokáig, és hogy az idő indokolható-e.

A hosszú I/O-kérések okai

Egy hosszú I/O-üzenet azt jelezheti, hogy az I/O véglegesen le van tiltva, és soha nem fejeződik be (az elveszett I/O néven ismert), vagy csupán azt, hogy még nem fejeződött be. Az üzenet alapján nem lehet megmondani, melyik forgatókönyv áll fenn, bár az elveszett I/O gyakran zárolási időtúllépéshez vezet.

A hosszú I/Os gyakran olyan SQL Server-számítási feladatot jelez, amely túl intenzív a lemezalrendszer számára. Nem megfelelő lemezalrendszer akkor jelezhető, ha:

  • Egy nehéz SQL Server-számítási feladat során több hosszú I/O-üzenet jelenik meg a hibanaplóban.
  • A Teljesítményfigyelő számlálók hosszú lemezkéséseket, hosszú lemezsorokat vagy nincs lemez üresjárati időt mutatnak.

Az I/O-útvonal egyik összetevője (például illesztőprogram, vezérlő vagy belső vezérlő) hosszú I/O-t okozhat, ha folyamatosan elhalasztja egy régi I/O-kérés karbantartását, az újabb kérések kiszolgálása mellett. Ez a probléma olyan összekapcsolt környezetekben fordulhat elő, mint például az iSCSI - és a Fibre Channel-hálózatok (helytelen konfiguráció vagy elérésiút-hiba miatt). A Teljesítményfigyelő eszköz megnehezítheti a probléma megerősítését, mert a legtöbb I/OS-t azonnal szervizelik. Az olyan számítási feladatok, amelyek nagy mennyiségű szekvenciális I/O-t hajtanak végre, például biztonsági mentést és visszaállítást, táblavizsgálatokat, rendezést, indexek létrehozását, tömeges betöltést és fájlok nullázását, súlyosbíthatják a hosszú I/O-kéréseket.

Az olyan izolált hosszú I/OS-eket, amelyek nem jelennek meg az előző feltételek egyikével kapcsolatban sem, hardver- vagy illesztőprogram-probléma okozhatja. A rendszeresemény-napló tartalmazhat egy kapcsolódó eseményt, amely segít diagnosztizálni a problémát.

Nem hatékony lekérdezések vagy szűrőillesztők által okozott I/O-teljesítményproblémák

A lassú I/O-t az indexekkel és statisztikákkal nem hatékonyan írt vagy megfelelően hangolt lekérdezések okozhatják. Az I/O késésének egy másik gyakori tényezője az adatbázisfájlokat beolvasó víruskereső vagy más biztonsági programok jelenléte. Ez a beolvasó szoftver kiterjedhet a hálózati rétegre, amely hálózati késést ad hozzá, ami közvetetten befolyásolja az adatbázis késését. Bár a nagyjából 15 másodperces I/O-val leírt forgatókönyv gyakoribb a hardverösszetevőknél, a rövidebb I/O-késéseket gyakrabban figyelik meg a nem optimalizált lekérdezésekkel vagy helytelenül konfigurált víruskereső programokkal.

A problémák megoldásáról további információt az I/O-problémák által okozott lassú SQL Server-teljesítmény hibaelhárítása című témakörben talál.

További információ az SQL Server víruskereső védelmének konfigurálásáról: Víruskereső szoftverek konfigurálása az SQL Serverrel való együttműködéshez.

Írási gyorsítótárazás tárolóvezérlőkben

A gyorsítótárat nem használó I/O-átvitelek sokkal tovább tarthatnak a mechanikus meghajtókon a merevlemezek pörgetési sebessége, a meghajtófejek mozgatásához szükséges mechanikai idő és egyéb korlátozó tényezők miatt. Az SQL Server olyan célrendszereket telepített, amelyek gyorsítótárazási vezérlőket biztosítanak. Ezek a vezérlők letiltják a lemezen tárolt gyorsítótárakat, és stabil média-gyorsítótárakat biztosítanak az SQL Server I/O-követelményeinek megfelelően. A gyorsítótárazási vezérlő különböző optimalizálásai segítségével elkerülik a tárolók keresésével és írási idejével kapcsolatos teljesítményproblémákat.

Megjegyzés:

Egyes tárológyártók gyorsítótár helyett állandó memóriát (PMEM) használnak tárolóként, ami javíthatja az általános teljesítményt. További információ: Állandó memória konfigurálása (PMEM) windowsos SQL Serverhez , és állandó memória konfigurálása (PMEM) linuxos SQL Serverhez.

Az írási gyorsítótárazási (más néven visszaíró gyorsítótárazási) tárolóvezérlő használata javíthatja az SQL Server teljesítményét. Az írási gyorsítótárazási vezérlők és a tárolási alrendszerek biztonságosak az SQL Server számára, ha adatkritikus tranzakciós adatbázis-kezelő rendszerben (DBMS) való használatra tervezték őket. Ezeknek a tervezési funkcióknak rendszerhiba esetén meg kell őrizniük a gyorsítótárazott adatokat. A külső szünetmentes tápegység (UPS) használata a védelem eléréséhez általában nem elegendő, mert a teljesítménytől független meghibásodási módok is előfordulhatnak.

Important

Az SQL Server a tranzakciós integritás és helyreállítás érdekében a stabil adathordozóra történő garantált kézbesítéstől függ. A nem biztonságos gyorsítótárazás, amely nem biztosítja az adatok meghibásodások közötti megőrzését, az adatbázisok sérülését okozhatja, függetlenül a tranzakciónapló-írások konzisztenciájától. Mindig ellenőrizze, hogy minden írási gyorsítótárazási mechanizmus garantálja a teljes tartósságot.

A gyorsítótárazási vezérlők és a tárolási alrendszerek biztonságosan használhatók az SQL Server számára. A vezérlőket tartalmazó új, célként létrehozott kiszolgálóplatformok többsége biztonságos. Ellenőrizze azonban a hardvergyártónál, hogy a tárolóalrendszer tesztelése és jóváhagyása megtörtént-e adatkritikus tranzakciós relációs adatbázis-kezelő rendszer (RDBMS) környezetben való használatra.

Gyorsítótár-alrendszer biztonsági irányelvei

A visszaíró gyorsítótárazási vezérlők javíthatják a teljesítményt, ha megfelelnek bizonyos biztonsági követelményeknek:

  • Akkumulátoros gyorsítótár vagy nemvolatilis memória, például NVDIMM vagy szuperkondenzátor által támogatott flash.
  • Az adatkritikus OLTP-adatbázis-környezetekhez a szállítónak hitelesítenie kell.
  • Olyan védelmet biztosít, amely az összes meghibásodási feltételt lefedi, nem csak az áramkimaradást.

Important

Ne csak külső UPS-ekre támaszkodjon. A teljesítménytől független hibák, például a belső vezérlőprogram hibái vagy a hardverhibák továbbra is gyorsítótárvesztéshez vezethetnek.

Előzetes naplózás

Az SQL Server adatmódosítási utasításai logikai lapírásokat hoznak létre. Ezt az írási adatfolyamot két helyen ábrázolhatja: a naplót és magát az adatbázist. Teljesítménybeli okokból az SQL Server késlelteti az írásokat az adatbázisba a saját gyorsítótár-pufferrendszerén keresztül. A rendszer csak egy rövid időre halasztja el az írást a naplóba, amíg el nem érkezik a COMMIT időpont. Ezek az írások nem gyorsítótárazódnak ugyanúgy, mint az adatírások. Mivel egy adott oldal naplóírásai mindig a lap adatainak írása előtt jönnek létre, a naplót néha előre író naplónak (WAL) is nevezik.

SQL Server fenntartja a tranzakciók atomikáját, konzisztenciáját, elkülönítését és tartósságát (ACID) a WAL protokollon keresztül.

Előre írási naplózási (WAL) protokoll

A protokoll kifejezés kiváló módszer a WAL leírására. Az SQL Server által használt WAL-t ARIES-nek (Algoritmus a helyreállítási és elkülönítési szemantikához) nevezzük. További információ: Gyorsított adatbázis-helyreállítás kezelése.

Ez egy konkrét és meghatározott megvalósítási lépéssorozat, amely az adatok megfelelő tárolásának és cseréjének biztosításához szükséges, és hiba esetén egy ismert állapotba állítható vissza. Ahogyan a hálózat tartalmaz egy meghatározott protokollt az adatok konzisztens és védett cseréjéhez, úgy a WAL is leírja a protokollt az adatok védelme érdekében. Az SQL Server minden verziója a Win32 CreateFile függvénnyel nyitja meg a naplókat és az adatfájlokat. A dwFlagsAndAttributes elem tartalmazza a FILE_FLAG_WRITE_THROUGH opciót, amikor SQL Server nyitja meg.

Állomány_Flag_Írás_Keresztül_visszaírás

Az SQL Server a jelzővel hozza létre az FILE_FLAG_WRITE_THROUGH adatbázisfájljait. Ez a beállítás arra utasítja a rendszert, hogy bármely köztes gyorsítótáron keresztül írjon, és lépjen közvetlenül a tárolóba. A rendszer továbbra is képes gyorsítótárazni az írási műveleteket, de nem tudja lazán kiüríteni őket. További információ: CreateFileA.

A FILE_FLAG_WRITE_THROUGH beállítás biztosítja, hogy amikor egy írási művelet sikeres befejezést ad vissza, az adatok megfelelően tárolódnak stabil tárolóban. Ez a funkció megfelel a Write-Ahead naplózási (WAL) protokoll specifikációjának az adatintegritás biztosítása érdekében. Számos tárolóeszköz (NVMe, PCIe, SATA, ATA, SCSI és IDE-alapú) 512 KB-os, 1 MB-os és nagyobb beépített gyorsítótárakat tartalmaz. A tárolási gyorsítótárak általában kondenzátorra támaszkodnak, nem pedig akkumulátoralapú megoldásra. Ezek a gyorsítótárazási mechanizmusok nem garantálják az írást áramkimaradás alatt vagy hasonló meghibásodási helyzetben. Csak a szektor írási műveleteinek befejezését garantálják. A tárolóeszközök méretének növekedésével a gyorsítótárak egyre nagyobbak lesznek, és nagyobb mennyiségű adatot tehetnek elérhetővé meghibásodás esetén.

További információ a Linux-disztribúció FUA-támogatásáról és az SQL Serverre gyakorolt hatásáról: SQL Server On Linux: Forced Unit Access (FUA) Internals.

Tranzakciós integritás és SQL Server-helyreállítás

A tranzakciós integritás a relációs adatbázisrendszer egyik alapvető fogalma. A tranzakciók olyan atomi munkaegységek, amelyek vagy teljes egészében alkalmazásra kerülnek, vagy teljesen visszaállításra kerülnek. Az SQL Server előreíró tranzakciónapló nélkülözhetetlen szerepet játszik a tranzakciós integritás megvalósításában.

Minden relációs adatbázisrendszernek a tranzakciós integritáshoz szorosan kapcsolódó fogalmat is kezelnie kell: a nem tervezett rendszerhiba utáni helyreállítást. Ezt a hibát számos nem ideális, a valós világban előforduló hatás okozhatja. Számos adatbázis-kezelő rendszeren a rendszer meghibásodása hosszú, ember által irányított manuális helyreállítási folyamatot eredményezhet.

Ezzel szemben az SQL Server helyreállítási mechanizmusa automatikus, és emberi beavatkozás nélkül működik. Az SQL Server például egy kritikus fontosságú éles alkalmazást támogathat, és rendszerhibát tapasztalhat egy pillanatnyi energiaingadozás miatt. A teljesítmény helyreállítása után a kiszolgáló hardvere újraindul, a hálózati szoftver betöltődik és inicializál, és az SQL Server újraindul. Az SQL Server inicializálása során automatikusan futtatja a helyreállítási folyamatot a tranzakciónapló adatai alapján. Ez az egész folyamat emberi beavatkozás nélkül történik. Amikor az ügyfél-munkaállomások újraindulnak, a felhasználók az összes adatukat megtalálják, egészen az utolsó tranzakcióig.

Az automatikus helyreállítás és a tranzakciós integritás együttműködve csökkenti a hibák utáni műveletek visszaállításához szükséges időt és erőfeszítést. Ha az írási gyorsítótárazási vezérlő nem megfelelően van kialakítva adatkritikus tranzakciós DBMS-környezetben való használatra, az veszélyeztetheti az SQL Server helyreállításának képességét, ami potenciálisan ronthatja az adatbázist. Ez a probléma akkor fordulhat elő, ha a vezérlő elfogja az SQL Server tranzakciónapló-írásait, és puffereli őket egy hardveres gyorsítótárban a vezérlőtáblán, de rendszerhiba esetén nem őrzi meg ezeket az írott lapokat.

Warning

Ha a gyorsítótárazott írásokat a rendszer újraindítása miatt elvetik, megsérülhet az adatbázis akkor is, ha UPS van jelen a rendszerben. Az adatmegőrzés biztosítása érdekében mindig győződjön meg arról, hogy az írási gyorsítótárak akkumulátorral vagy azzal egyenértékű technológiával vannak alátámasztva.

Lemezen történő írási gyorsítótárazás kockázatai

A legtöbb tárolóeszköz gyorsítótárazási vezérlője írási gyorsítótárazást végez. Az írási gyorsítótár funkció nem mindig tiltható le.

Még ha a kiszolgáló UPS-t is használ, az eszköz nem garantálja a gyorsítótárazott írások biztonságát. Számos olyan rendszerhiba léphet fel, amellyel egy UPS nem foglalkozik. Például egy memóriaparitási hiba, az operációs rendszer (OS) csapdája vagy a rendszer alaphelyzetbe állítását okozó hardverhibák szabályozatlan rendszerkimaradást okozhatnak. A hardveres írási gyorsítótár memóriahibája a fontos naplóadatok elvesztését is eredményezheti.

Egy írási gyorsítótárazás vezérlővel kapcsolatos másik lehetséges probléma előfordulhat a rendszer leállásakor. Nem ritka az operációs rendszer ciklusa vagy a rendszer újraindítása a konfigurációs módosítások során. Még ha egy gondos operátor is követi az operációs rendszer javaslatát, hogy várjon, amíg az összes tárolási tevékenység megszűnik a rendszer újraindítása előtt, a gyorsítótárazott írások továbbra is jelen lehetnek a vezérlőben. Ctrl + Alt + Del A billentyűkombináció lenyomásakor vagy a hardver alaphelyzetbe állítására szolgáló gomb megnyomásakor a gyorsítótárazott írások elvethetők, ami az adatbázis sérülését okozhatja.

Lehetséges olyan hardveres írási gyorsítótár tervezése, amely figyelembe veszi a piszkos gyorsítótáradatok elvetésének minden lehetséges okát, ami biztonságossá teszi az adatbázis-kiszolgáló általi használatot. Ezen tervezési funkciók közé tartozik az RST (alaphelyzetbe állítás) buszjel elfogása a gyorsítótár-vezérlő ellenőrizetlen alaphelyzetbe állításának elkerülése érdekében, a fedélzeti akkumulátor biztonsági mentése, valamint a tükrözött vagy hibaellenőrzési és -javító (ECC) memória. Kérdezze meg a hardvergyártót, hogy az írási gyorsítótár tartalmazza-e ezeket és az adatvesztés elkerüléséhez szükséges egyéb funkciókat.

Tárgyorsítótárak használata az SQL Serverrel

Az adatbázisrendszer elsősorban az adatok pontos tárolásáért és lekéréséért felelős, még váratlan rendszerhibák esetén is.

A rendszernek garantálnia kell a tranzakciók atomitását és tartósságát, miközben az aktuális végrehajtást, több tranzakciót és különböző meghibásodási pontokat is figyelembe kell vennie. Ezt a tulajdonságot gyakran ACID (Atomitás, Konzisztencia, Elkülönítés és Tartósság) tulajdonságoknak is nevezik.

Ez a szakasz a tároló gyorsítótárak következményeit tárgyalja. Az olyan témákkal kapcsolatos információkért, mint a gyorsítótárazás és a hibakezelési módokról szóló megbeszélések, lásd:

Tekintse át az alábbi archivált tartalmakat is:

A jelen két cikkben szereplő fogalmak továbbra is széles körben alkalmazhatók az SQL Server aktuális verzióira.

Akkumulátorral támogatott gyorsítótárazási megoldások

A továbbfejlesztett gyorsítótárazási vezérlőrendszerek letiltják a lemez gyorsítótárát, és funkcionális, akkumulátorral támogatott gyorsítótárazási megoldást biztosítanak. Ezek a gyorsítótárak több napig is megőrizhetik a gyorsítótárban lévő adatokat, és még a gyorsítótárkártyát is elhelyezhetik egy második számítógépen. Ha az energiaellátás teljesen helyreállt, az íratlan adatok teljesen kiürülnek, újbóli adat-hozzáférés engedélyezése előtt. Számos ilyen rendszer lehetővé teszi az olvasási és írási gyorsítótár százalékos arányának megállapítását az optimális teljesítmény érdekében. Egyes rendszerek nagy memóriatároló területeket tartalmaznak. Egyes hardvergyártók több gigabájtnyi gyorsítótárral rendelkező, csúcskategóriás akkumulátoros meghajtó gyorsítótárazási rendszereket biztosítanak. Ezek a rendszerek jelentősen javíthatják az adatbázis teljesítményét. Az akkumulátorral támogatott gyorsítótárazási megoldások biztosítják az SQL Server által elvárt adatok tartósságát és konzisztenciáját.

Tárolóalrendszer implementációi

A tárolási alrendszerek számos típusban léteznek. Két gyakori példa a RAID (független lemezek redundáns tömbje) és a SAN (tárolóhálózat). Ezek a rendszerek általában SCSI-alapú meghajtókat használnak. A következő szakasz a magas szintű tárolási szempontokat ismerteti.

SCSI, SAS és NVMe

SCSI-, SAS- és NVMe-tárolóeszközök:

  • Általában nagy teherbírású használatra tervezték.
  • Általában többfelhasználós, kiszolgálóalapú implementációkra irányulnak.
  • Általában jobb átlagos hibaarányokkal rendelkezik, mint más implementációk.
  • Kifinomult heurisztikusokat tartalmaz a közelgő hibák előrejelzéséhez.

Megjegyzés:

Az SQL Server támogatja az Internet Small Computer System Interface (iSCSI) technológia összetevőit, amelyek megfelelnek a Windows hardverkompatibilitási program követelményeinek. Bár az SQL Server nem kommunikál közvetlenül az iSCSI-vel, zökkenőmentesen működik, mert a Windows az iSCSI-tárolót standard meghajtóként jeleníti meg. Az SQL Server ezután képes olvasni és írni a távoli blokkszintű tárolóból az IP-hálózatok között. Mivel az iSCSI a hálózatoktól függ, késéseket vagy szűk keresztmetszeteket tapasztalhat. Győződjön meg arról, hogy a kiszolgáló gyorsítótárazási teljesítménye optimális, és a késés minimalizálva van. További információ: iSCSI-tárolókiszolgáló méretezhetőségi korlátai.

Nem SCSI

Egyéb meghajtómegvalósítások, például IDE, ATA és SATA:

  • Általában könnyű és közepes teljesítményű használatra tervezték.
  • Ezek általában egyfelhasználós alkalmazásokra irányulnak.

A nem SCSI-alapú asztali vezérlők nagyobb processzor-sávszélességet igényelnek, és gyakran egyetlen aktív parancs korlátozza. Ha például egy nem SCSI-meghajtó rossz blokkot állít be, a meghajtónak várnia kell a gazdagépparancsokat. Az ATA-busz egy másik példát mutat be: az ATA-busz két eszközt támogat, de csak egyetlen parancs lehet aktív. Ez a korlátozás miatt az egyik meghajtó üresjáratban van, amíg a másik meghajtó az elintézendő parancsot végrehajtja. Az asztali technológiákra épülő RAID-rendszerek mind tapasztalhatják ezeket a tüneteket, és a leglassabb válaszadók jelentősen befolyásolhatják őket. Ha ezek a rendszerek nem használnak fejlett kialakítást, teljesítményük nem olyan hatékony, mint az SCSI-alapú rendszerek teljesítménye.

Tárolási szempontok

Az asztali meghajtók vagy tömbök bizonyos helyzetekben olcsó megoldást jelenthetnek. Például, ha írásvédett adatbázist állít be jelentéskészítéshez, akkor nem találkozik az OLTP-adatbázisok számos teljesítménytényezőjével, amikor a meghajtó gyorsítótárazása le van tiltva.

A tárolóeszköz mérete továbbra is nő. Az alacsony költségű, nagy kapacitású meghajtók vonzóak lehetnek. Ha azonban konfigurálja a meghajtót az SQL Serverhez, és az üzleti válaszidőre van szüksége, gondosan vegye figyelembe a következő problémákat:

  • Elérési út tervezése
  • A lemezen lévő gyorsítótár letiltásának követelménye

Mechanikus merevlemezek

A mechanikus meghajtók forgó mágneses tálakat használnak az adatok tárolásához. Számos kapacitásban és formában érhetők el, például IDE, SATA, SCSI és Soros csatlakoztatott SCSI (SAS). Egyes SATA-meghajtók hiba-előrejelzési szerkezeteket tartalmaznak. Az SCSI-meghajtók nagyobb terhelésű ciklusokhoz és csökkentett meghibásodási arányokhoz lettek tervezve.

Az IDE és az ATA-alapú rendszerek elhalaszthatják a gazdaparancsokat, ha olyan tevékenységeket hajtanak végre, mint például a rossz blokkbeállítás, ami elakadt I/O-tevékenységekhez vezet.

Az SAS előnyei közé tartozik a speciális, akár 256 szintű sorba állítás, valamint a sor elejére helyezés és a rendeléstől eltérő sorba állítás. Az SAS-háttérsík úgy lett kialakítva, hogy az sas- és SATA-meghajtók ugyanazon a rendszeren belül is használhatók legyenek.

Az SQL Server telepítése attól függ, hogy a vezérlő képes-e letiltani a lemezgyorsítótárat, és stabil I/O-gyorsítótárat biztosítani. Az adatok különböző meghajtókra történő írása nem akadályozza az SQL Servert, ha a vezérlő biztosítja a megfelelő stabil adathordozó-gyorsítótárazási képességeket. A vezérlő kialakításának összetettsége olyan fejlett adatbiztonsági technikákkal nő, mint a tükrözés.

Szilárdtest-tárolás

A szilárdtest-tárolás előnye a mechanikus (forgó) merevlemezekkel szemben, de a forgó adathordozóval azonos meghibásodási minták közül sokra érzékeny. A szilárdtest-tárolót különböző interfészek használatával csatlakoztathatja a kiszolgálóhoz, beleértve az NVM Expresst (NVMe), a PCI Expresst (PCIe) és a SATA-t. Kezelje a szilárdtest-adathordozót úgy, ahogy a forgó adathordozót, és győződjön meg arról, hogy a megfelelő biztonsági intézkedések érvényben vannak az áramkimaradás esetén, például egy akkumulátorral támogatott gyorsítótárazási vezérlő.

Az áramkimaradás által okozott gyakori problémák a következők:

  • Bitsérülés: A rekordok véletlenszerű bit hibákat mutatnak.
  • Repülő írások: A jól formázott rekordok rossz helyre kerülnek.
  • Shorn írja: A műveletek részben a várt szektorméret alatti szinten vannak végrehajtva.
  • Metaadatok sérülése: A flash fordítási réteg (FTL) metaadatai sérültek.
  • Nem válaszoló eszköz: Az eszköz egyáltalán nem működik, vagy többnyire nem működik.
  • Nem szerializálhatóság: A tároló végső állapota nem szerializálható műveleti sorrendből ered.

512e

A legtöbb szilárdtest-tárolóeszköz 512 bájtos szektorméreteket jelent, de 4 KB-os oldalakat használ az 1 MB-os törlési blokkokon belül. Az SQL Server naplóeszköz 512 bájtra igazított szektorainak használata több olvasási/módosítási/írási (RMW) tevékenységet eredményezhet, ami hozzájárulhat a lassabb teljesítményhez és a kopáshoz.

Javaslat: Győződjön meg arról, hogy a gyorsítótárazási vezérlő tisztában van a tárolóeszköz megfelelő oldalméretével, és képes megfelelően igazítani a fizikai írásokat a szilárd állapotú tárolási infrastruktúrához.

0xFFFFFFFF

Az újonnan formázott meghajtók általában minden nullát tárolnak. A folytonos állapotú eszközök törölt blokkja mind 1s, így a törölt blokkok nyers olvasása minden 0xFF karaktert tartalmaz. A felhasználók számára azonban szokatlan, hogy a normál I/O-műveletek során egy törölt blokkot olvasnak.

Mintabélyegzés

A múltban egy olyan technikát használtak, amely során egy ismert mintát írtak a teljes meghajtóra. Ezután, amikor az adatbázis műveletek ugyanazon a meghajtón végrehajtódnak, a rendszer hibás viselkedése (például elavult adat olvasása, elveszett írás vagy helytelen eltolásnál történő olvasás) észlelhető, ha a minta váratlanul megjelenik.

Ez a technika nem működik jól a szilárd állapotú tárolókban. Az írások törlési és RMW-tevékenységei elpusztítják a mintát. A szilárdtest-tároló hulladékgyűjtési (GC) tevékenysége, a kopáskiegyenlítés, az arányos/tartalék listablokkok és más optimalizációk általában azt eredményezik, hogy az írások különböző fizikai helyszíneket kapnak, ellentétben a forgó adathordozók szektorainak újrafelhasználásával.

Készülékszoftver

A szilárdtest-tárolóban használt belső vezérlőprogram általában összetett, ha összehasonlítjuk a forgó adathordozó megfelelőit. Sok meghajtó több feldolgozási magot használ a bejövő kérések és szemétgyűjtési tevékenységek kezeléséhez. Győződjön meg arról, hogy naprakészen tartja a szilárd állapotú eszköz belső vezérlőprogramját az ismert problémák elkerülése érdekében.

Adatsérülések és kopáskiegyenlítések olvasása

A szilárdtest-tárolók gyakoribb hulladékgyűjtési (GC) megközelítése segít megelőzni az adatsérülést az ismétlődő olvasás során. Ha ugyanazt a cellát többször olvassa, lehetséges, hogy az elektron aktivitása kiszivároghat, és kárt okozhat a szomszédos sejtekben. A solid-state storage különböző hibajavítási kóddal (ECC) és más mechanizmusokkal védi az adatokat.

Az egyik ilyen mechanizmus a kopás simításához kapcsolódik. A solid-state storage nyomon követi a tárolóeszköz olvasási és írási tevékenységét. A hulladékkezelés képes azonosítani a problémás pontokat, illetve azokat a helyeket, amelyek gyorsabban kopnak, mint mások. A például, a szemétgyűjtő határozza meg, hogy egy blokk írásvédett állapotban van, és áthelyezni szükséges. Ez a mozgás általában egy kopottabb blokkra igaz, így az eredeti blokk írásra használható. Ez a folyamat segít kiegyensúlyozni a meghajtó kopását, de az írásvédett adatokat olyan helyre helyezi át, ahol nagyobb a kopás, és matematikailag növeli a meghibásodási esélyeket, még ha kissé is.

A kopás simításának egy másik mellékhatása az SQL Serverrel is előfordulhat. Tegyük fel, hogy végrehajtja a DBCC CHECKDB-t, és hibát jelez. Ha másodszor futtatja, kisebb az esély arra, hogy DBCC CHECKDB további vagy más hibamintát jelez, mert a szilárd állapotú tárolási GC-tevékenység módosításokat hajthat végre a DBCC CHECKDB végrehajtások között.

665-ös operációsrendszer-hiba és töredezettségmentesítés

A forgó adathordozónak egymás közelében kell tartania a blokkokat a meghajtó fejmozdulatának csökkentése és a teljesítmény növelése érdekében. A szilárdtest-tárolónak nincs fizikai feje, ami megszünteti a keresés idejét. Számos szilárdtest-eszköz úgy van kialakítva, hogy lehetővé tegye a párhuzamos műveleteket a különböző blokkokon. Ezért a szilárdtest-adathordozók töredezettsége szükségtelen. A soros tevékenységek a legjobb I/O-minták, amelyek maximalizálják az I/O átviteli sebességét a szilárd állapotú tárolóeszközökön.

Megjegyzés:

A solid-state storage előnyei a vágási funkcióból származnak, amely egy operációsrendszer-szintű parancs, amely törli a már nem használt blokkokat. A Windowsban a Meghajtók optimalizálása eszközzel heti ütemezést állíthat be a meghajtók optimalizálásához.

Ajánlások:

  • Használjon egy megfelelő, akkumulátorral támogatott vezérlőt, amelyet az írási tevékenységek optimalizálására terveztek. Ez a választás javíthatja a teljesítményt, csökkentheti a meghajtó kopását és csökkentheti a fizikai töredezettség szintjét.

  • Fontolja meg a ReFS fájlrendszer használatát az NTFS attribútumkorlátozások elkerülése érdekében.

  • Győződjön meg arról, hogy a fájlnövekedési beállítások megfelelőek.

A 665-ös operációsrendszer-hiba töredezettséghez kapcsolódó hibaelhárításáról további információt az SQL Server-fájlok 665-ös és 1450-ös operációsrendszer-hibáinak jelentésében talál.

Tömörítés

Mindaddig, amíg a meghajtó fenntartja a stabil adathordozó szándékát, a tömörítés meghosszabbíthatja a meghajtó élettartamát, és pozitívan befolyásolhatja a teljesítményt. Előfordulhat azonban, hogy egyes belső vezérlőprogramok már láthatatlanul tömörítik az adatokat. Ne felejtse el tesztelni az új tárolási forgatókönyveket, mielőtt üzembe helyezné őket az éles környezetben.

Összefoglalás

  • Megfelelő biztonsági mentési és vészhelyreállítási eljárások és folyamatok fenntartása.
  • Tartsa naprakészen a belső vezérlőprogramot.
  • Figyelje meg a hardvergyártó útmutatását.

Meghajtógyorsítótár konfigurálása

Ha sql Server-meghajtót szeretne használni, tiltsa le a meghajtó gyorsítótárazását. Alapértelmezés szerint a meghajtó gyorsítótára engedélyezve van. Windows Serveren a Lemeztulajdonságok>hardverszabályzat> lapján tiltsa le az írási gyorsítótárazást az operációs rendszer szintjén.

Ne hagyatkozz csak az operációsrendszer-szintű beállításokra. Egyes meghajtók figyelmen kívül hagyják a Windows beállításait, és a gyártó által biztosított segédprogramokat vagy belső vezérlőprogram-beállításokat követelik meg az írási gyorsítótárazás letiltásához. Ellenőrizze a szállítói eszközök segítségével, hogy az írási gyorsítótárazás ténylegesen le van tiltva.

Megjegyzés:

Még ha az írásgyorsítótárazás le van tiltva is, a meghajtó firmware-je belső optimalizálásokat vezethet be, amelyek késleltetik a parancsok végrehajtását. Az üzembe helyezés előtt mindig ellenőrizze a gyorsítótár tényleges állapotát olyan tesztelési eszközökkel, mint az SQLIOSim.

Gyorsítótár-szempontok és SQLIOSim

A tranzakciós tartóssági garanciák megerősítéséhez ellenőrizze és érvényesítse az I/O-alrendszert az SQLIOSim használatával, mielőtt éles környezetbe lépne. Ez a segédprogram nagy aszinkron olvasási és írási tevékenységeket szimulál egy szimulált adateszközre és naplóeszközre. További információ: SqlIOSim-segédprogram használata az SQL Server-tevékenységek szimulálásához egy lemezalrendszeren. A szélesebb körű tárolási teljesítményértékeléshez használhatja a diskspd storage tesztelési eszközt is.

Megjegyzés:

Győződjön meg arról, hogy bármely alternatív gyorsítótárazási mechanizmus több hibatípust képes megfelelően kezelni.

Számos pc-gyártó rendeli meg a meghajtókat, ha az írási gyorsítótár le van tiltva. A tesztelés azonban azt mutatja, hogy ez a feltétel nem mindig igaz, ezért minden esetben alaposan ellenőrizze. Ha kérdése van a tárolóeszköz gyorsítótárazási állapotával kapcsolatban, forduljon a gyártóhoz, és szerezze be a megfelelő segédprogramot az írási gyorsítótárazási műveletek letiltásához. A régebbi tárolóeszközökön szükség lehet a jumper beállításokra is.

Az SQL Server megköveteli, hogy a rendszerek támogassák a stabil adathordozóra történő garantált teljesítést az SQL Server I/O megbízhatósági programra vonatkozó követelményei szerint.

Az írási gyorsítótár helytelen használatának kockázatai

Ha megfelelő biztosítékok nélkül engedélyezi az írási gyorsítótár használatát, egyes tároló alrendszerek befejezettnek tekintik az írási műveleteket, mielőtt az adatok biztonságosan tartós adathordozóra íródnának. Áramkimaradás vagy rendszerhiba esetén ez a feltétel a következőt eredményezheti:

  • Adatvesztés, ahol a véglegesített tranzakciók soha nem maradnak meg.
  • Az adatbázis sérülését az írási sorrend garanciáinak megsértése okozza.

Important

Tiltsa le az SQL Server-adatok és a naplómeghajtók írási gyorsítótárazását, kivéve, ha a hardvergyártó dokumentációjában megerősíti, hogy:

  • A gyorsítótár akkumulátoros, vagy állandó flash tárolót használ.
  • A meghajtó garantálja a tartósságot az áramkimaradások és a rendszer összeomlása esetén.

A külső UPS-eszközök nem elegendőek, mert előfordulhat, hogy nem minden meghibásodási mód ellen védenek, például a vezérlő belső vezérlőprogramjának hibája ellen.

I/O-problémák támogatása

Microsoft teljes mértékben támogatja SQL Server és SQL Server-alapú alkalmazásokat, de az eszköz gyártója felelős a támogatásért, ha az I/O-megoldás problémákat okoz. A tünetek közé tartoznak, de nem korlátozódnak a következőkre:

  • Adatbázis sérülése
  • Biztonsági mentés sérülése
  • Váratlan adatvesztés
  • Hiányzó tranzakciók
  • Váratlan I/O-teljesítményeltérések

Megjegyzés:

Microsoft nem igazolja vagy ellenőrzi, hogy a külső hardver- vagy szoftvertermékek együttműködnek-e SQL Server. Microsoft közzéteszi a környezetvédelmi követelményeket, beleértve az I/O-alrendszer és a gyorsítótárazási rendszer követelményeit a tranzakciós szemantikák támogatásához. A külső gyártók felelősek annak ellenőrzéséért, hogy termékeik megfelelnek-e ezeknek a követelményeknek. Ha egy harmadik féltől származó terméket tartalmazó konfigurációban probléma merül fel, SQL Server támogatási szolgálata kérheti, hogy a vizsgálat folytatása előtt a harmadik fél terméke nélkül reprodukálja a problémát.

További információkért lásd:

Fájlrendszer konfigurálása

Az alábbi táblázat hivatkozásokat tartalmaz az adott I/O-konfigurációkra vonatkozó további információkra.

Konfiguráció Részletek
Fájlrendszerfunkciók SQL Server adatbázisokat nem támogatjuk tömörített köteteken, kivéve, ha azok írásvédett fájlok. További információkért lásd:

- A tömörített köteteken SQL Server adatbázisok támogatásának leírása
- Csökkent teljesítmény az SQL Serverben, amikor az adatbázisfájlok titkosítására EFS-t használnak
Fizikai elrendezés és kialakítás - Fizikaiadatbázis-tároló tervezése
- Méretezhető megosztott adatbázisok áttekintése
tempdb - Microsoft SQL Server tempdb-adatbázis I/O-alrendszerkövetelményei
- Ajánlások a kiosztási ütközések csökkentésére a SQL Server tempdb adatbázisban
Diagnosztika Az aszinkron lemez I/O szinkronként jelenik meg a Windows rendszeren
- SQL Server diagnosztika nem jelentett I/O-problémákat észlel elavult olvasások vagy írási hibák miatt
- MSSQLSERVER-hiba: 823
Hálózathoz csatlakoztatott tároló (NAS) A hálózati adatbázisfájlok támogatásának leírása a SQL Server
Always On AG és FCI - Az Always On rendelkezésre állási csoportok előfeltételei, korlátozásai és javaslatai
- Always On feladatátvevő fürtpéldányok