Q & sql

A. A válasz mindig lesz a kedvencem: ez attól függ! Engedjék meg, hogy elmagyarázza az oka néhány alapvető információt.

A lényeg az, hogy figyelembe kell venni az összenyomódás mértékét, amely mindegyike adatbázis mentés, amikor engedélyezve mentés tömörítés. A tömörítési arány segítségével bármilyen algoritmus határozza meg, hogy milyen adatok tömörítése.

Véletlen adatok (kis egész számok, például) zsugorodik, nem túl jó, úgy, hogy a lehető tömörítési arány határozza meg elsősorban a tartalmát a táblák és indexek az adatbázisban.

Íme néhány példa, amikor mentés tömörítés nem biztosítja a magas fokú tömörítés:

  • Ha az adatbázis engedélyezve van átlátható adattitkosítás, akkor a tömörítési arány nagyon alacsony lesz, mert az adatok tömörítve egy kis véletlen értékeket.
  • Ha a nagy részét az adatok az adatbázisban préselünk az oszlop szinten, akkor a tömörítési arány alacsony lesz ismét kompressziós oszlopokat, sőt, keverékek adatok.
  • Ha tömörítés engedélyezve van a legtöbb a táblák az adatbázisban, akkor a tömörítési arány alacsony lesz; adattömörítés, ami már inkább tömörített, általában kevés eredménnyel.

Abban az esetben, ha a tömörítési arány alacsony, a probléma nem a legalacsonyabb szinten, és hogy a CPU erőforrásokat végrehajtásához használt tömörítési algoritmus, használhatatlanok. Függetlenül attól, hogy milyen jól lehet tömöríteni az adatokat részét a CPU erőforrások mindig végrehajtásához használt tömörítés és kicsomagolás algoritmusok.

Ez azt jelenti, hogy a döntés meghozatala előtt az állandó használat tömörítési hogy az adatbázis, hogy ellenőrizze az egyes adatbázis tömöríti a mentést. Ellenkező esetben lehetőség van a hulladék processzor erőforrásait. Ez az alapja annak, amit hallottam.

Röviden, ha a többség az adatbázisok részesül hát tömörítés, akkor van értelme, hogy hát tömörítést a szerver szintjén, és egyenként át néhány biztonsági mentési feladatokat kifejezetten használja a WITH NO_COMPRESSION. Másfelől, ha a többség az adatbázis nem kap hasznot mentés tömörítés, érdemes letiltani mentés tömörítés a szerver szintjén, és egyenként át néhány biztonsági mentési feladatokat kifejezetten használja a tömörítéssel is.

Q. Tavaly frissített adatbázisunkban felvenni őket, tükrözés, így abban az esetben, ha nem megy tükörmásoiata, és folytatja a munkát. A rendszer kiépítése végeztünk ilyen transzferek az adatbázis, és jól működött. Abban állunk szemben egy igazi kudarc és az adatbázis átmenet történt a múlt héten, de minden alkalmazás leállt a tranzakció, és a kérelem nem kapcsolódik a tartalék szerver. Hogyan tudom telepíteni az SQL Server a jövőben, úgy, hogy nem esett alkalmazáskapcsolatok való áttérés során a tranzakció tovább?

A. Nézzük osztani a válasz két részre: milyen alkalmazások képesek megbirkózni a hiba tolerancia, hogyan kell kezelni az átirányítás használó ügyfelek adatbázis tükrözés.

Amikor egy failover használják a magas rendelkezésre állás technológiák rendelkezésre az SQL Server, a kliens a szerverrel való kapcsolat visszaáll az áldozat nem sikerül, és minden, ami elveszett a tranzakciót. Az átvitelt található a tranzakciós utak szerverek között nem lehetséges (például abban az esetben, átviteli hiba és minden más). Attól függően, hogy az alkalmazott technológia, a magas rendelkezésre található bármely ügylet nem is létezik egy tartalék szerver, vagy létezni fog, hogy az ügylet, de sajtológép vissza a fellendülés az eljárás hatékonyságát adatbázis a tartalék szerver.

Ami adatbázis tükrözés, folyamatosan továbbítja a tranzakciós napló bejegyzéseket az elsődleges kiszolgálóról a tükör szerver, ez általában történik a második - a tranzakciók állítja vissza a helyreállítási folyamat tükrözött adatbázis teljesítményét az adatokat egy új résztvevő biztonságát.

Ezért van két dolog, hogy egy alkalmazásnak képesnek kell lennie, hogy nem helyes, ha fut a szerveren azzal a lehetőséggel, a kapcsoló másik szerver meghibásodása esetén:

  1. Képesnek kell lennie arra, hogy elegánsan kezelni a szerver kapcsolat visszaáll, és próbálja helyreállítani a kapcsolatot, miután egy rövid ideig.
  2. Meg kell tudni, hogy pontosan egy tranzakció feldolgozására törlését követő kísérlet folytatódik az ügyletet, miután a kapcsolatot a tartalék szerver (esetleg egy köztes menedzser szintű tranzakció).

Az egyetlen nagy rendelkezésre állású technológia itt, amely nem igényel specifikus változások az ügyfél, hogy a jövőben az érintett ügyfél kapcsolat az átállás után - az átállási csoportosítás. Az ügyfelek csatlakozást a virtuális kiszolgáló nevét és transzparensen átirányítja az aktív csomópont fizikai klaszter.

Abban az esetben, magas rendelkezésre állású technológiák, mint például naplótovábbítási és a replikáció, tartalék szerver neve más, ami azt jelenti, hogy a váltás után ez a szerver meg kell átirányítani ügyfél kapcsolatok kézzel. Ez átirányítás lehet tenni több módon:

  • Bedrótozhatsz a tartalék szerver nevét az ügyfél, hogy újra kísérletet arra irányulnak, hogy ezen a szerveren.
  • Használhatja a hálózati terheléselosztás a beállítás 100 / 0-0 / 100, amely majd váltani a kapcsolatot a tartalék szerver.
  • Használhatja olyasmi, mint egy szerver alias vagy kapcsolási bejegyzéseket DNS táblázatban.

Az adatbázis tükrözés munkáját az alábbi lehetőségek bármelyikét. De adatbázis tükrözés is beépített képességek kliens irányba. az ügyfél kapcsolat húr könnyen adja meg a nevét a tükör szerver, amely automatikusan próbál kapcsolódni, ha ez nem lehetséges, hogy a mag. Ezt a folyamatot nevezik közvetlen továbbítása.

Ha az ügyfél kapcsolat string nem lehet változtatni, akkor lehet, hogy esetleges közvetett átirányítása, ha a sértett nem felel meg a kiszolgáló elindult a tükör szerver. Bármilyen kapcsolat akkor automatikusan átirányítja az új biztonsági igazgató -, de ez csak akkor működik, ha a tükör szerver fut.

Ábra. 1. Tanulmány a zár az asztalra, osztva

O. A megfigyelt problémát okozott a mechanizmust, amit zár eszkaláció. SQL Server szerez zárak adatokat, hogy megvédje őket, amíg a kérelmet adatokat olvas vagy ír. Meg tud a zár teljes táblák, adatállomány oldalain, vagy az egyes sorok táblák / indexek, és minden zárat kevés helyet foglal a memóriában.

Ha a kérelmet Túl sok zárak, SQL Server dönthet úgy, hogy cserélje ki a zárakat a vonalon vagy laptáblához egyetlen zár az egész asztal (küszöb, ahol ez megtörténik, körülbelül 5000 zárak bonyolult, de pontos algoritmus beállítása). Ezt a folyamatot nevezik zár eszkaláció.

Ezután a kérelem B működhet egy másik részén, anélkül, hogy blokkolja. B lekérdezés sőt billentyűbiztosító eszkaláció is, amely blokkolja csak partíció lekérdezés B dolgozik, ahelyett, hogy az egész asztal.

Ez a modell a zár eszkalációs lehet beállítani a következő szintaxis használatával:

Ez a szintaxis megadja a zár menedzser használni az SQL Server zár eszkaláció a partíció szinten, ha az asztal törik őket, majd a szokásos konszolidációs a tábla szinten, ha nem. Az alapértelmezett viselkedés az, hogy a zár eszkalációja az asztalra szinten. kell állítani ezt a módot óvatosan, hiszen attól függően, viselkedését lekérdezések vezethet holtpontok.

Például, ha minden egyes kérelem az A és B miatt a zár fokozódása különböző szakaszok a táblázatban, de aztán megpróbál hozzáférni a szakasz blokkolja egy másik egyik kérése megszakad monitor holtpontok.

Az ábra egy példát mutat a lekérdezés benyújtási rendszer katalógus sys.partitions (első szettet az eredmények) és a dinamikus vezetés nézet sys.dm_os_locks (második szettet az eredmények), hogy vizsgálja zárak tartott lekérdezések az asztalra szakaszokra oszlik, ahol a zár eszkalációja történt a szakasz szintű . Ebben az esetben a két kizárólagos zárak részén szint (HOBT zárak az output), de a táblázat zárak (Lock tárgy a kimenet) nem kizárólagos, tehát több lekérdezést érheti válaszfalak noha zár eszkaláció. Figyeljük meg, hogy az erőforrás-azonosítók a két partíció zár egyezik a partíció azonosítóját az első két szakasz a output tábla sys.partitions.

A. rövid válasz az, hogy a helyreállítás a tranzakció log tudtam gondolni csak visszaállítás mentés nem lehetséges. Bár ismert veszély helyreállítása ügyleti jegyzőkönyv (az olvasó láthatja a bejegyzést a blogomban, „Extreme Measures, alkalmazva az első helyen.” Ahhoz, hogy többet róluk), az a tény, hogy az adatbázis vált megbízhatatlanná, vagyis a hasznosítás nem; - bármilyen hiba hasznosítás, vagy ha a rollback tranzakciót. Ez azt jelenti, hogy lehetséges a valódi adatok korrupció az adatbázisban.

Bár a probléma, és volt egy csendes időt, gondoltál ütemezett és a háttér feladatokat? Abban az időben a napló megsérült is jól működik karbantartási feladat, helyreállítása, illetve fürtözött index átszervezi. Háttér feladat is jól vezet fantom razzia oldalakon egy kupacban vagy fürtözött index. Minden ilyen probléma, például, lehet, hogy változik fürtözött index struktúrák, hogy a hiba kijavítása a visszatérés vezetne kárt az adatbázis és az esetleges adatvesztés.

Általában a hasznosítás a tranzakciós napló mindig az utolsó, és a legvégső bármilyen katasztrófa-helyreállítási megoldás, mert a hatalmas lehetőségeket a további károk és az adatvesztés. Legalább adatok alapján, akkor végre kell hajtani a teljes DBCC CHECKDB, hogy ellenőrizze az esetleges károkat.

Ezután meg kell változtatni a biztonsági stratégia, hogy képes legyen elvégezni időben történő helyreállítása, valamint hogy ne menjen drasztikus intézkedéseket, mint helyreállítani a tranzakciós napló. Hozzászólások a fejlődés ezen stratégia túlmutat ezt a cikket, de azt tervezi, hogy ezzel a témával egy speciális magas minőségű papír ebben az évben. Úgyhogy stay tuned!

Kapcsolódó cikkek