Tippek a hatékony Adatbázis karbantartás adatbázis sql szerver - sql szerver - szoftverek

Hetente többször I procyat tanácsot, hogyan lehet hatékonyan fenntartani a termelési adatbázis. Előfordul, hogy a kérdések érkeznek a DBA-k, akik végrehajtó új megoldások és keres segítséget illeszkedő gyakorlat szolgáltatások jellemzői az új adatbázisba. Gyakran kérdések jönnek az emberek, akik nem szakmai DBAs de egyik vagy másik ok, saját adatbázis vagy viseli a felelősséget. Inkább hívni őket „kényszerű DBA.” A feladat ebben a cikkben, hogy egy tutorial a legjobb lehetőség az adatbázis-karbantartás SQL Server.

Mint ahogy az a legtöbb feladatokat és eljárásokat a világon az információs technológia, Godea bármilyen alkalomra hatékony megoldásokat szolgáltató adatbázis nem létezik, de van néhány kulcsfontosságú területen, hogy szinte mindig szükség van a figyelmet. Az én személyes top öt ilyen régiók felsorolása nem adott fontossági sorrendben:

  • Fájlkezelők adat- és naplófájlok
  • fragmentáció index
  • statisztika
  • hibaészlelésre
  • mentések

A felügyelet nélkül (vagy rosszul karbantartott) adatbázis lehet probléma egy vagy több ilyen területen, amely végül a gyenge alkalmazás teljesítményét, vagy akár leállás és az adatvesztés.

Fájlkezelők adat- és naplófájlok

Az első terület mindig javasoljuk, hogy ellenőrizze, ha így az adatbázis-kezelő - a paraméterek kezelésével kapcsolatos adatok és naplófájlok (tranzakció). Pontosabban, akkor biztosítania kell, hogy:

  • adatok és a log fájlok vannak elválasztva egymástól, és izoláljuk a többi
  • Automatikus növekedés helyesen van konfigurálva
  • Egyéni automata inicializáló fájlok
  • Automatikus tömörítés ki, és az összehúzódás nem része semmilyen karbantartási terv

Amikor az adatokat és naplófájlokat (ami ideális esetben általában különböző kötetek) ugyanabban a hangerőt bármely más alkalmazás, amely létrehozza vagy kitágul fájlokat, lehetőség van a fájlok töredezettsége. Az adatfájlok túlzott fájlok töredezettsége tehet egy kis hozzájárulást a gyenge teljesítmény a lekérdezések (különösen azok, amelyeket beolvasni nagyon nagy mennyiségű adat). A naplófájlok okozhat sokkal súlyosabb teljesítmény hit, különösen, ha az automatikus kiterjesztés telepítése csak nagyon kis méretének növekedése a fájl minden alkalommal felmerül a szükség.

Ami a mérete az adatok és naplófájlok, akkor a legjobb, hogy hozzon létre számukra megfelelő kezdő méret. Az adatok fájlokat, ha az eredeti méretének kiválasztásához kell figyelembe venni azt a lehetőséget, hozzátéve, hogy az alap a további adatok a közeljövőben. Például, ha az eredeti adat mérete 50 GB, de azt tudjuk, hogy a következő hat hónapban kerül majd további 50 GB adat, akkor van értelme, hogy azonnal létrehozza a mérete az adatállomány 100 GB helyett nőnek erre a méretre néhány hónapon belül.

A fájlok foglalkozó magazinok, sajnos, ez kissé bonyolultabb - meg kell venni az olyan tényezőket, mint a méret a tranzakció (hosszú lejáratú ügyletekre nem lehet eltávolítani a naplóból, amíg nem teljes) és log mentés gyakorisága (hiszen ha eltávolítjuk az inaktív része a napló). További információkért lásd a „8 lépés a jobb Transaction Log Teljesítmény (” 8 lépés, hogy javítsa a teljesítményt az ügyleti jegyzőkönyv „)”, a népszerű blogbejegyzések SQLskills.com, írta a feleségemet, Kimberly Tripp (Kimberly Tripp).

Miután a fájl mérete az őket ellenőrizni kell különböző pontjain, és növelni kell előre kézzel a megfelelő napszakban. Automatikus növekedést kell hagyni elővigyázatosságból, csak abban az esetben, így a fájlok nőhet szükség esetén bármilyen szokatlan esemény. Az ok a fájlkezelő nem hagyhatja teljesen automatikus növekedését az a tény, hogy az automatikus növekedését apró darabokra vezet a töredezettség a fájlokat és hogy az automatikus növekedését is időigényes, ez meggátolja a mű váratlan pillanatokban.

automatikus méretének növekedése kell állítani egy meghatározott értéket, hanem egy százalék, hogy korlátozza a tér és idő szükséges, hogy automatikusan növeli, ha az bekövetkezik. Például, abban az esetben a 100 gigabyte-os adatfájl mérete kívánatos, hogy rögzítse az automatikus növekedését, mint egy 5 GB, ahelyett, mondjuk, 10%. Ez azt jelenti, hogy mindig nőni 5GB, függetlenül az aktuális fájl méretét, hanem a mennyiségi növekedés után az elkészült kép (10 GB, 11 GB, 12 GB, és így tovább).

Automatikus tömörítés különösen káros, mert 30 percenként közlekedik a háttérben, és megpróbálja tömöríteni az adatbázist, amely az opció számlázott automatikus tömörítés. Ez a folyamat nem teljesen kiszámítható, hogy tömöríti az adatbázis több mint 25% szabad hely. Automatikus tömörítés használ sok erőforrást és okoz teljesítmény töredezettség visszaváltás, így nem kívánatos minden körülmények között. Meg mindig lehet tiltani:

Tervezze rendszeres bádogozás, beleértve a parancsoknak alapuló tömörítési adatok kézzel majdnem olyan rossz. Ha úgy találja, hogy az adatbázis folyamatosan nő, miután a karbantartási terv zsugorodik úgy, hogy ez annak a ténynek köszönhető, hogy ennek alapján területre van szükség az adatokat.

fragmentáció index

Eltekintve töredezettség a fájlrendszer szinten és a log fájl is lehetséges töredezettség belül adatfájlokat struktúrák adatokat tároló táblák és indexek. Belül az adatállományt is előfordulhat két alaptípusa töredezettség:

Ábra. 1. A szerkezetet az adatbázisban oldalak

A leggyakoribb a belső töredezettség okozta ezeket a változásokat, mint a betétek, frissítések, és töröl, amely elhagyja üres hely az oldalon. Hibás ártalmatlanítás terhelhetőség is elősegítheti töredezettség részletek a dokumentációban. Attól függően, hogy a rendszer az asztal / index és az alkalmazások teljesítményét egy üres hely nem lehet alkalmas az újrafelhasználásra a bekövetkezése után, ami ahhoz vezethet, hogy egy állandó növekedése a nem használt helyet az adatbázisban.

Vegyünk például egy asztal 100 millió sor, ahol az átlagos rekord méretű 400 bájt. Idővel az alkalmazás adatait megváltoztatja a mintát eredményez átlagosan 2800 byte szabad hely az oldalon. Összesen szükséges helyet a táblázat 59 GB, ez a származik a következő képlettel számítható: 8096-2800 / 400 = 13 bejegyzéseket egy 8-KB oldalak, majd ossza 100 millió 13, megszerezni az oldalak számát. Ha a hely nem veszett el, akkor ugyanazon az oldalon lehetett illeszteni 20 bejegyzés, ami csökkenti a teljes terület szükséges, akár 38 GB. Egy hatalmas megtakarítás!

A fel nem használt helyet data / index oldalak ezért vezet tartani ugyanazt a mennyiségű adatot a nagy oldalak száma. Ez nemcsak nagyobb mértékű fogyasztása lemezterület, hanem azt is jelenti, hogy a kérelem kell tölteni több I / O olvasni az azonos mennyiségű adat. És mindezek külön oldalak több helyet foglalhat el az adat cache, így figyelembe a szerver memóriájában.

Ábra. A 2. ábra az újonnan létrehozott index oldal 100 százalékos terhelhetőség - a teljes oldal, és a fizikai lapsorrendet megegyezik a logikai sorrendben. Ábra. A 3. ábra a töredezettség után esetlegesen előforduló véletlen insert / update / törlések.

Ábra. 2. Az újonnan létrehozott index oldalon nincs töredezettség, az oldalak tele vannak 100%

A széttagoltság néha megelőzhető megváltoztatásával asztal / index séma, de ahogy már említettük, akkor nagyon nehéz vagy lehetetlen. Ha a megelőzés nem lehetséges, vannak olyan módon, hogy megszüntesse törés utáni fogva - különösen azáltal, hogy csökkenti vagy átszervezésével az index.

Néhány felhasználó egyszerűen úgy dönt, hogy javítási vagy újjáépíteni az összes indexet minden éjszaka, vagy minden héten (például egy variáns szolgáltatási terv), ahelyett, kitalálni, hogy melyik indexet töredezettek, és milyen előnyöket megszünteti töredezettség. Bár ez lehet egy jó megoldás egy önkéntelen DBA, aki csak kívánja alkalmazni valamilyen megoldást minimális erőfeszítéssel, ez lehet egy nagyon rossz választás a nagyobb adatbázisok és rendszerek, ahol az erőforrások elegendőek.

Bármelyik módszert is használjuk, akkor erősen ajánlott, hogy rendszeresen keresik, és megszünteti fragmentáció.

A lekérdezés feldolgozó része SQL Server, amely úgy dönt, hogyan kell elvégezni a vizsgálatot - vagyis hogyan kell használni a táblák és indexek, és bármelyik műveletét őket, hogy eredményeket; ezt nevezik a lekérdezési terv. A legfontosabb bemeneti a döntéshozatali folyamat magában leíró statisztikák eloszlása ​​adatértékeit oszlopok a táblában vagy indexet. Nyilvánvaló, hogy hasznos lehet a Query processzor, a statisztikák pontosnak kell lennie, és a friss, egyébként terméketlen lekérdezési tervek lehet választani.

Statisztika által generált adatok olvasása tábla / index és eloszlását meghatározó adatokat a megfelelő oszlopokban. Statisztikák épülhet beolvasásával az összes adatot értékeket egy adott oszlopban (teljes ellenőrzést), de ez is lehet építeni alapján százalékos adatok a felhasználó által megadott (teszt példák). Ha az értékek eloszlásának egy oszlopban viszonylag egyenletes, a teszt példák elegendő lehet, és ez teszi létrehozása és folyamatos frissítése a statisztikát gyorsabb, mint a teljes ellenőrzést.

Ábra. 4. Változó adatbázis beállításait az SQL Server Management Studio

Ha azt szeretnénk, hogy frissítse a statisztika részeként rendszeres karbantartási terv, akkor tisztában kell lenniük a trükk. ÉS FRISSÍTÉS statisztika és sp_updatestats használhatók korábban meghatározott szintű adatgyűjtés alapértelmezés (ha megadjuk néhány) - és lehet, hogy kevesebb, mint egy teljes ellenőrzést. hasznosítás index automatikusan frissíti a statisztikák alapján a teljes ellenőrzést. Abban az esetben manuálisan frissíteni statisztika után index újjáépíteni, akkor kap még kevésbé pontos statisztikák! Ez akkor fordulhat elő, ha a teszt példa a kézi frissítés felülírja a teljes scan, hozzon létre egy helyreállítási index. Másrészt, a statisztikák nem frissíti, ha az index átszervezés.

Ismét sok van egy karbantartási tervet, amely frissíti az összes statisztikát bizonyos ponton előtt vagy után a hasznosítás minden indexek - és anélkül, hogy tudnánk, akkor bizonyulhat kevésbé pontos statisztika. Ha úgy dönt, egy egyszerű helyreállítási összes indexek időről időre, akkor vigyázni a statisztikákat. Ha úgy dönt, egy sokkal kifinomultabb módon a megszüntetése töredezettség, érdemes csinál, és a statisztikák szolgáltatás. I-hez a következőket:

  • Elemzése indexek és megállapítják, index kell dolgozni, és hogyan töredezettségmentesítéséről.
  • Frissítse a statisztika az összes indexek már helyreállt.
  • Frissítse a statisztika az összes nem-indexelt oszlopok.

hibaészlelésre

Beszéltem a service kapcsolódó teljesítményt. Most itt az ideje váltani egy történet a felfedezés kár és enyhítésére.

Nagyon valószínűtlen, hogy az adatbázis tartalmaz teljesen felesleges információ, hogy senki sem törődik - igen, hogyan lehet biztosítani, hogy az adatok sértetlen marad és hasznosítható a vészhelyzet esetén? Részletek megszilárdítása teljes katasztrófa-helyreállítási stratégia és a magas rendelkezésre állás túlmutat ezt a cikket, de az első, meg tudod csinálni néhány egyszerű dolgot.

A túlnyomó többsége sérülések okozta „hardver”. Miért idézőjelbe? Nos, a berendezés itt - ez valójában a rövidítése: „valamit az input-output alrendszer keretében az SQL Server”. I / O alrendszer elemekből áll, mint például az operációs rendszer, a fájlrendszer vezetők, eszközmeghajtók, RAID-vezérlők, kábelek és hálózati meghajtók magukat. Sok helyen, ahol lehet (és vannak) problémák.

Az egyik leggyakoribb probléma, áramszünet, amikor a hajtás írása adatbázis oldalra. Ha a lemez nem lesz képes befejezni a rekordot, mielőtt elfogyott a villamos energia (vagy ha írási műveletek cache és a redundáns tápegység nem elég tiszta a lemez cache), az eredmény lehet hiányos oldal képét a lemezen. Ez akkor történhet meg, mert a 8-KB oldalak az adatbázisban valóban áll, 16 egybefüggő 512 bájtos lemezszektorokat. Hiányos rekord leírhatják néhány ágazatban az új oldal, de hagyja néhány szektorban a kép az előző oldalra. Ezt a helyzetet nevezzük szakadt oldalon. Hogyan lehet felismerni, ha ez megtörténik?

Az SQL Server mechanizmust biztosít felismerni ezt a helyzetet. Ez magában foglalja a megőrzése több bitet minden ágazatban az oldal és az írás egy bizonyos mintát a helyére (ez történik most, mielőtt az oldal a lemezre). Ha olvasod lapsablon változik, az SQL Server tudja, hogy az oldal a „szakadt”, és hibát jelez.

Ábra. 5. rendszerek szerelése minden komoly hibák 24

Ha ez a parancs valami kiemelkedő, DBCC talált kárt az adatbázisban. A kérdés akkor válik: „Mit tegyünk, ha DBCC CHECKDB találja kárt?”. Itt, a színpadon és van mentés.

Abban az esetben, sérülés vagy egyéb üzemzavar a leghatékonyabb módja, hogy az adatbázis visszaállítása kilábalás biztonsági másolatot. Természetesen ez feltételezi az ilyen másolatokat, és hogy ők maguk nem sérült. Túl gyakran, az emberek szeretnék tudni, hogyan lehet komolyan sérült adatbázis újra dolgozni, ha nem van egy tartalék. Az egyszerű válasz az, hogy ez lehetetlen, legalább adatvesztés nélkül, amelyek torzítják az összes üzleti logika és a relációs adatok integritását.

Másodszor, ne mentést néhány napig, ha az egyik közülük sérült - a régi mentés jobb mint a semmi. Azt is ellenőrizni kell a integritását a mentések segítségével a restore VERIFYONLY (ismét látni. Elektronikus dokumentáció). Ha létrehoz egy biztonsági opció, ellenőrző összeggel, a teszt csapat tesztelni fogja, hogy egy másik ellenőrző biztonsági és ellenőrző összegeket oldalak belül.

Mint látható, hogy biztosítsa az egészségügyi és a rendelkezésre állás az adatbázis igényel több kötelező feladatokat. Itt van az utolsó ellenőrző listát akaratlan DBA, aki elment az adatbázis-kezelő:

Adtam a cikket a csapat T-SQL, de sokat lehet tenni a Management Studio. Remélem, te is hasznos útmutatást hatékony adatbázis-karbantartás.

Kapcsolódó cikkek