Punctele de control și partea activă a jurnalului

Când se atinge punctele de control, paginile de date modificate sunt scrise din cache-ul tampon al bazei de date curente pe disc. Acest lucru minimizează partea activă a jurnalului, care trebuie tratată atunci când baza de date este complet restaurată. Când baza de date este complet restaurată, se efectuează următoarele acțiuni:







  • Modificările jurnalului rănit care nu au fost salvate pe disc până când sistemul nu sa oprit.
  • Revocarea tuturor modificărilor asociate tranzacțiilor în așteptare, cum ar fi tranzacțiile pentru care nu există nici o intrare COMMIT sau ROLLBACK în jurnal.

Punctul de control execută următoarele în baza de date.

  • Scrie o înregistrare în fișierul jurnal care marchează începutul punctului de control.
  • Salvează datele înregistrate pentru punctul de control în lanțul de înregistrare al jurnalului de control.
    Unul dintre elementele de date înregistrate în intrările punctului de control este numărul LSN al primei înregistrări a jurnalului, în absența căruia este imposibilă o retrocedare reușită pe scara întregii baze de date. Acest număr LSN este numit numărul minim de recuperare LSN (MinLSN). Numărul MinLSN este cel mai mic dintre:
    • Numărul LSN al începutului punctului de control;
    • Numărul LSN de la începutul celei mai vechi tranzacții active;
    • Numărul LSN de la începutul celei mai vechi tranzacții de replicare care nu a fost încă livrat la baza de date a distribuitorului.
    De asemenea, intrările punctului de control conțin o listă de tranzacții active care au schimbat baza de date.
  • Dacă baza de date utilizează un model simplu de recuperare, marcați pentru a reutiliza spațiul care precede numărul MinLSN.
  • Scrie toate paginile schimbate de jurnale și date pe disc.
  • Scrie o înregistrare în fișierul jurnal care marchează sfârșitul punctului de control.
  • Scrie numărul de start LSN al lanțului corespunzător la pagina de descărcare a bazei de date.

Acțiunile care duc la declanșarea punctelor de control

Punctele de control sunt declanșate în următoarele situații.

  • Când instrucțiunea CHECKPOINT este executată în mod explicit. Punctul de control este declanșat în baza de date curentă de conectare.
  • Când efectuați operații cu înregistrare minimă în baza de date, de exemplu, atunci când efectuați o operațiune de copiere în bloc pentru o bază de date care este acoperită de un model de recuperare parțială de înregistrare.
  • Când adăugați sau ștergeți fișiere de baze de date utilizând instrucțiunea ALTER DATABASE.
  • Când opriți o instanță a serverului SQL utilizând instrucțiunea SHUTDOWN sau când serviciul SQL Server este oprit (MSSQLSERVER). În ambele cazuri, va fi creat un punct de control al fiecărei baze de date în cazul instanței SQL Server.
  • Dacă instanța serverului SQL creează periodic în fiecare bază de date puncte de control automate pentru a reduce timpul de restaurare a bazei de date.
  • Când creați o copie de rezervă a bazei de date.
  • Când efectuați o acțiune care necesită dezactivarea bazei de date. Exemplele includ setarea parametrului AUTO_CLOSE la ON și închiderea ultimei conexiuni a utilizatorului către baza de date sau modificarea parametrului bazei de date care necesită reluarea bazei de date.

Componenta SQL Server Database Engine creează automat puncte de control. Intervalul dintre punctele de control automate este determinat pe baza spațiului utilizat în jurnal și a timpului scurs de la data creării ultimului punct de control. Intervalul dintre punctele de control automate variază foarte mult și poate fi destul de lung dacă baza de date este schimbată rar. În cazul modificărilor de date pe scară largă, frecvența punctelor automate de control poate fi mult mai mare.







Utilizați parametrul de configurare al serverului de interval de recuperare pentru a calcula intervalul dintre punctele de control automate pentru toate bazele de date de pe instanța serverului. Valoarea acestui parametru specifică durata maximă de timp pe care motorul de baze de date o ia pentru a restabili baza de date atunci când sistemul repornește. Motorul bazei de date evaluează numărul intrărilor de jurnal pe care le poate procesa în timpul intervalului de recuperare în timpul unei operații de restaurare.

În plus, intervalul dintre punctele de control automate depinde de modelul de recuperare, după cum se arată mai jos.

  • Dacă utilizați modelul de recuperare integrală sau model de recuperare logat în vrac, punctul de control automat este creat de fiecare dată când numărul de intrări jurnal atinge valoarea specificată în Database Engine ca o limită a numărului de înregistrări care se poate ocupa de specificat intervalul de timp de recuperare.
  • Dacă utilizați un model simplu de recuperare a bazei de date, un punct de control automat este creat de fiecare dată când numărul de intrări din jurnal ajunge la cea mai mică dintre cele două condiții limită:
    • jurnalul este ocupat de 70%;
    • numărul de intrări din jurnal atinge valoarea specificată de motorul de bază de date ca număr de înregistrări pe care le poate procesa în timpul specificat de parametrul intervalului de recuperare.

Dacă utilizați un model simplu de recuperare a bazei de date, atunci când se declanșează un punct de control automat, porțiunea neutilizată a jurnalului de tranzacții este ștearsă. Cu toate acestea, dacă utilizați modelul de recuperare integral sau modelul de recuperare cu înregistrare incompletă, jurnalul nu este trunchiat ca urmare a declanșării punctelor de control automate. Pentru mai multe informații, consultați Trunchierea jurnalului de tranzacții.

Instrucțiunea CHECKPOINT acceptă acum un argument opțional checkpoint_duration. Acesta este timpul (în secunde) atribuit punctelor de control pentru a fi finalizat. Pentru mai multe informații, consultați CHECKPOINT (Transact-SQL).

O porțiune a jurnalului, începând cu numărul MinLSN și terminând cu ultima înregistrare, se numește partea activă a jurnalului sau jurnalul activ. Această secțiune a jurnalului este necesară pentru a efectua o restaurare completă a bazei de date. Nici o parte a jurnalului activ nu poate fi trunchiată. Toate intrările în jurnal la numărul MinLSN trebuie eliminate din părțile jurnalului.

Figura următoare prezintă o diagramă simplificată a unui jurnal de finalizare a tranzacțiilor care conține două tranzacții active. Intrările de punct de control au fost comprimate într-o singură intrare.

Ultima intrare în jurnalul de tranzacții este o înregistrare cu numărul LSN egal cu 148. La momentul procesării LSN punct de control înregistrat cu numărul 147 de tranzacție 1 este deja stabilită, iar singura tranzacție activă este o tranzacție 2. Ca urmare, se creează prima intrare jurnal pentru tranzacția 2, devine cea mai veche înregistrare tranzacție activă la momentul ultimului punct de control. Astfel, numărul MinLSN devine numărul LSN egal cu 142 și corespunde înregistrării startului tranzacției 2.

Jurnalul activ ar trebui să includă toate elementele tuturor tranzacțiilor neangajate. O aplicație care inițiază o tranzacție și nu se angajează sau o revocă, împiedică motorul de bază de date să crească MinLSN. Acest lucru poate duce la probleme de două tipuri.

  • Dacă sistemul este oprit după ce au fost efectuate multe schimbări neangajate în tranzacție, faza de recuperare a unei reporneri ulterioare poate dura mult mai mult decât este specificat de parametrul intervalului de recuperare.
  • Jurnalul poate ajunge la un volum foarte mare, deoarece după numărul MinLSN nu poate fi trunchiat. Acest lucru este valabil chiar dacă se utilizează un model simplu de recuperare atunci când jurnalul de tranzacții este de obicei trunchiat la fiecare punct de control automat.

Cititorul de jurnal monitorizează jurnalul de tranzacții al tuturor bazelor de date pe care este configurată tranzacția de replicare a tranzacțiilor și copiază tranzacțiile marcate pentru replicare din jurnalul de tranzacții în baza de date de distribuție. Jurnalul activ trebuie să conțină toate tranzacțiile marcate pentru replicare, dar care nu au fost încă livrate la baza de date a distribuitorului. Dacă aceste tranzacții nu sunt reproduse într-un timp rezonabil, trunchierea jurnalului poate să nu fie posibilă. Pentru mai multe informații, consultați Cum funcționează Replicarea tranzacțiilor.







Trimiteți-le prietenilor: