Megosztás a következőn keresztül:


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.

Az 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. Az SQL Server adatbázismotor bemeneti és kimeneti követelményeiről további információt az SQL Server adatbázismotor bemeneti/kimeneti (I/O) követelményeiben talál.

Lemez I/O

A pufferkezelő csak olvasási és írási műveleteket végez az adatbázisba. Más 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ők hajtják végre.

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 helytelenül módosított napló I/O) 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. Az affinitás I/O maszk beállítás az SQL Server-lemez I/O-ját a PROCESSZORok egy meghatározott részhalmazához köti. 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. Ez azt jelenti, hogy az SQL Server gyorsan kitöltheti vagy kiürítheti a puffer-gyorsítótárat, miközben elkerülheti a több fizikai I/O-kérést.

Hosszú I/O-kérések

A pufferkezelő minden olyan I/O-kérésről jelentést készít, amely legalább 15 másodpercig nem áll le. Ez segít a rendszergazdának megkülönböztetni az SQL Server-problémákat és az I/O-alrendszer problémáit. 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ás vagy írás; jelenleg nem szerepel az üzenetben. 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 arról számolnak be, hogy a rendszer a rendszergazdának segít gyorsabban megtalálni a gyenge SQL Server-válaszidők okát, és meg tudja kü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 üzenetből nem lehet megállapítani, hogy melyik forgatókönyvről van szó, bár az elveszett I/O gyakran reteszes 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.

A hosszú I/O-t az I/O-útvonal egyik összetevője (például illesztőprogram, vezérlő vagy belső vezérlő) is okozhatja, amely folyamatosan elhalasztja a régi I/O-kérések karbantartását, az újabb kérések kiszolgálása mellett. Ez olyan összekapcsolt környezetekben fordulhat elő, mint az iSCSI és a szálcsatornás hálózatok (helytelen konfiguráció vagy elérési út hibája miatt). Ezt nehéz lehet alátámasztani a Teljesítményfigyelő eszközzel, mert a legtöbb I/OS-t azonnal szervizelik. A hosszú I/O-kérelmeket súlyosbíthatják azok a 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áblázatvizsgálatokat, rendezést, indexek létrehozását, tömeges betöltést és a fájlok nullázását.

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 olyan lekérdezések okozhatják, amelyek nincsenek hatékonyan megírva, vagy nem megfelelően hangoltak indexekkel és statisztikákkal. 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 nem optimalizált lekérdezésekkel vagy helytelenül konfigurált víruskereső programokkal gyakrabban figyelhető meg kisebb I/O-késés.

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ár használata nélkül végrehajtott I/O-átvitelek jelentősen hosszabbak lehetnek a mechanikus meghajtókban 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-installációk olyan rendszerekre irányulnak, amelyek gyorsítótárvezé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ásainak használatával 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ő rendszer (DBMS) környezetben való használatra vannak tervezve. 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 ennek eléréséhez általában nem elegendő, mert a teljesítményhez nem kapcsolódó meghibásodási módok is előfordulhatnak.

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 legtöbb új célú kiszolgálóplatform, amely ezeket tartalmazza, 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.

Előzetes naplózás

Az SQL Server adatmódosítási utasításai logikai lapírásokat hoznak létre. Ez az írási adatfolyam két helyen ábrázolható: a napló és maga az adatbázis. Teljesítménybeli okokból az SQL Server defers saját gyorsítótárpufferrendszeren keresztül ír az adatbázisba. A naplóba történő írások csak ideiglenesen halasztódnak COMMIT időpontig. A gyorsítótárazásuk nem ugyanúgy történik, mint az adatok írása. Mivel egy adott oldal naplóírásai mindig megelőzik a lap adatírásait, a naplót néha írás előtti naplónak (WAL) is nevezik.

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 igazodik a Write Ahead Logging (WAL) protokoll specifikációhoz az adatok 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égeknek számítanak, amelyeket vagy teljesen alkalmaznak, vagy teljesen visszavonnak. Az SQL Server előreíró tranzakciónaplója a tranzakciós integritás megvalósításának alapvető összetevője.

Minden relációs adatbázisrendszernek a tranzakciós integritáshoz szorosan kapcsolódó fogalommal is foglalkoznia kell, amely a nem tervezett rendszerhiba utáni helyreállítás. Ezt a hibát számos nem ideális, valós 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. Az energia helyreállítása után a kiszolgáló hardvere újraindul, a hálózati szoftver betöltődik és inicializálva lesz, é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álhatják, egészen az utolsó tranzakcióig.

Az SQL Server tranzakciós integritása és automatikus helyreállítása hatékony idő- és munkamegtakarítási képességet jelent. 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, így megsérülhet az adatbázis. Ez 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.

Írási gyorsítótárazás és tárolóeszköz-vezérlők

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árazási funkció nem mindig tiltható le.

Még ha a kiszolgáló UPS-t is használ, ez 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.

Lehetőség van hardveres írási gyorsítótár megtervezésére, amely figyelembe veszi a piszkos gyorsítótár adatainak elvetésének minden lehetséges okát, így az adatbázis-kiszolgáló biztonságosan használhatja őket. Ezen tervezési funkciók némelyike magában foglalja az RST buszjel elfogását, hogy elkerülje a gyorsítótárazási vezérlő ellenőrizetlen alaphelyzetbe állítását, a fedélzeti akkumulátor biztonsági mentését, valamint a tükrözött vagy hibaellenőrzési és -javító (ECC) memóriát. 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 atomiságát és tartósságát, miközben az aktuális végrehajtást, a több tranzakciót és a különböző meghibásodási pontokat is figyelembe kell vennie. Ezt gyakran acid (atomiság, 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. Javasoljuk, hogy olvassa el az alábbi cikkeket a Microsoft tudásbázisában a gyorsítótárazással és az alternatív hibamóddal kapcsolatos további kérdések tisztázásához:

A következő dokumentumok is ajánlottak:

Ez a két dokumentum az SQL Server összes jelenleg támogatott verziójára vonatkozik.

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. Ezek közül sok 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. Néhány nagy memóriatároló területet tartalmaz. 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 jelentősen javíthatják az adatbázis teljesítményét. Az akkumulátorral támogatott gyorsítótárazási megoldások használatával az SQL Server által elvárt adatok tartóssága és konzisztenciája biztosítható.

Tárolóalrendszer implementációi

Az alrendszer-implementációknak számos típusa van. A RAID (független lemezek redundáns tömbje) és a TÁROLÓ (tárolóhálózat) két példa az ilyen típusú alrendszer-implementációkra. Ezek a rendszerek általában SCSI-alapú meghajtókkal vannak felépítve. Ennek több oka is van. A következő szakasz általánosan ismerteti a magas szintű tárolási szempontokat.

SCSI, SAS és NVMe

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

  • Általában nagy teherbírású használatra gyártják.
  • Általában többfelhasználós, kiszolgálóalapú implementációkra irányulnak.
  • Tipikusan jobb a meghibásodásig eltelt átlagos idő, mint más implementációk esetén.
  • Kifinomult heurisztikusokat tartalmaz a közelgő hibák előrejelzéséhez.

Megjegyzés:

Az SQL Server támogatott az iSCSI technológiájú összetevők esetében, 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. Ez lehetővé teszi, hogy az SQL Server az IP-hálózatok távoli blokkszintű tárolójából olvasson és írjon. Mivel az iSCSI a hálózatoktól függ, késéseket vagy szűk keresztmetszeteket tapasztalhat, ezért optimalizálnia kell a kiszolgáló gyorsítótárazási teljesítményét, és minimalizálnia kell a késést. 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 teherbírású használatra gyártják.
  • Á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. Amíg az egyik meghajtó tétlen marad, a másik kezeli a függőben lévő parancsot. 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

Vannak olyan helyzetek, amikor egy asztali meghajtó vagy tömb megfelelő alacsony költségű megoldás. Ha például írásvédett adatbázist állít be jelentéskészítéshez, akkor nem fogja tapasztalni az OLTP-adatbázisok teljesítménytényezői közül sokat, ha a meghajtó gyorsítótárazása ki van kapcsolva.

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. Ezek 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.

A meghajtó gyorsítótárazását le kell tiltani a meghajtó SQL Serverrel való használatához. Alapértelmezés szerint a meghajtó gyorsítótára engedélyezve van. A Windows Serveren a Lemeztulajdonságok>hardver lapon érheti el a Tulajdonságok>házirend lapját a meghajtógyorsítótár-beállítás vezérléséhez.

Megjegyzés:

Egyes meghajtók nem tartják be ezt a beállítást. Ezekhez a meghajtókhoz egy adott gyártói segédprogram szükséges a gyorsítótár letiltásához.

Az IDE- és ATA-alapú rendszerek elhalaszthatják a gazdagépparancsokat, ha olyan műveleteket hajtanak végre, mint például a rossz blokkbeállítás. Ez elakadt I/O-tevékenységhez vezethet.

Az SAS előnyei közé tartozik a speciális, akár 256 szintű sorba állítás, valamint a sor eleje és a sorrenden kívüli 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ó

A szilárdtest-tárolásnak előnye van a mechanikus (forgó) merevlemezekkel szemben, de számos olyan meghibásodási mintára érzékeny, mint a forgó adathordozó. A szilárdtest-tároló különböző felületeken csatlakozik 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ű bithibá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: Az 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 solid-state storage 512 bájtos szektorméretet 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 használt technika az volt, hogy egy ismert mintával teleírtuk a teljes meghajtót. Amikor ezután végrehajtjuk az adatbázis-tevékenységet ugyanazon a meghajtón, azonosítani tudjuk a helytelen viselkedést, mint például elavult olvasás, elveszett írás vagy helytelen olvasási eltolás, amikor 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-műveletei elpusztítják a mintát. A szilárd állapotú tároló szemétgyűjtés (GC) tevékenysége, a kopás kiegyenlítés, az arányos/tartalék blokkok listája és egyéb optimalizálások általában azt okozzák, hogy az írások különböző fizikai helyeket szereznek, ellentétben a forgó adathordozó szektorának ú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. Például a GC meghatározza, hogy egy blokk egy ideig írásvédett állapotban volt, és át kell helyezni. Ez a mozgás általában egy kopottabb blokkra igaz, így az eredeti blokk írásra használható. Ez segít kiegyensúlyozni a meghajtó kopását, de áthelyezi az írásvédett adatokat egy olyan helyre, ahol nagyobb a kopás, és matematikailag növeli a meghajtó meghibásodásának esélyeit, még ha kissé is.

Az SQL Server esetében a kopás simításának egy másik mellékhatása 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ó nem rendelkezik a fizikai fejével, ami kiküszöböli a keresés idejét. Számos szilárdtest-eszköz úgy van kialakítva, hogy párhuzamos műveleteket lehessen lehetővé tenni a különböző blokkokon párhuzamosan. Ez azt jelenti, hogy 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 javíthatja a teljesítményt, csökkentheti a meghajtó kopását és 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ájl növekedési méretei megfelelő méretű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 média 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. Az éles környezetben való üzembe helyezés előtt ne felejtsen el tesztelni az új tárolási forgatókönyveket.

Ö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ásait.

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

Az adatok teljes védelme érdekében gondoskodnia kell arról, hogy az összes adat-gyorsítótárazás helyesen legyen kezelve. Ez sok esetben azt jelenti, hogy le kell tiltania a meghajtó írási gyorsítótárazását.

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.

A Microsoft több SCSI- és IDE-meghajtón végzett tesztelést az SQLIOSim segédprogrammal. Ez a segédprogram nagy aszinkron olvasási/írási tevékenységet szimulál egy szimulált adateszközre és naplóeszközre. Az SQLIOSim szolgáltatással kapcsolatos további információkért és részletekért lásd : Az SQLIOSim segédprogrammal szimulálhatja az SQL Server-tevékenységeket egy lemezalrendszeren.

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 nem mindig ez a helyzet, ezért mindig tesztelje teljesen. Ha bármilyen 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édprogram- vagy jumperbeállításokat az írási gyorsítótárazási műveletek letiltásához.

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 SQL Server adatbázismotor bemeneti és kimeneti követelményeiről további információt az SQL Server adatbázismotor bemeneti/kimeneti (I/O) követelményeiben talál.