logo

SQL DARĪJUMI

SQL transakcija ir vienas vai vairāku SQL darbību secība (piem.INSERT UPDATE DELETE) izpildīts kā viena darba vienība. Darījumi nodrošina, ka visas darbības ir veiksmīgas vai netiek piemērotas, saglabājot datu integritāti.

SQL transakciju galvenās īpašības: ACID

SQL transakciju integritāti regulē ACID rekvizīti, kas garantē uzticamas datu bāzes transakcijas. Šie četri rekvizīti darbojas kopā, lai garantētu datu bāzes konsekvenci un uzticamību.

  • Atomiskums: Darījuma iznākums var būt gan pilnīgi veiksmīgs, gan pilnīgi neveiksmīgs. Viss darījums ir jāatceļ, ja viena tā daļa neizdodas.
  • Konsekvence: Darījumi saglabā integritātes ierobežojumus, pārvietojot datubāzi no viena derīga stāvokļa uz citu.
  • Izolācija: Vienlaicīgi darījumi ir izolēti viens no otra, nodrošinot datu precizitāti.
  • Izturība: Kad darījums ir veikts, tā izmaiņas paliek spēkā pat sistēmas kļūmes gadījumā.

SQL transakciju vadības komandas

SQL transakciju vadības komandas pārvalda SQL operāciju izpilde, nodrošinot datu bāzes transakciju integritāti un uzticamību. Šīs komandas palīdz pārvaldīt datubāzē veikto izmaiņu sākšanu un atcelšanu. Tālāk ir sniegtas galvenās transakciju vadības komandas SQL, kas izskaidrotas ar katras sintaksi un piemēriem.



1. START TRANSACTION Komanda

TheBEGIN TRANSACTIONkomanda iezīmē jauna darījuma sākumu. Visi SQL priekšraksti, kas seko šai komandai, būs daļa no viena un tā paša darījuma līdz aCOMMIT vai ROLLBACK tiek sastapta. Šī komanda neveic nekādas izmaiņas datu bāzē, tā tikai sāk darījumu.

Sintakse:

BEGIN TRANSACTION transaction_name ;

SQL transakcijas piemērs ar bankas pārveduma scenāriju

Apskatīsim piemēru bankas pārskaitījumam starp diviem kontiem. Šis piemērs parāda vairāku vaicājumu izmantošanu vienā darījumā.

BEGIN TRANSACTION;  

-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';

-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';

-- Commit the transaction if both operations succeed
COMMIT;

Ja rodas kāda kļūda, piemēram, problēma arUPDATEvaicājums, ko varat izmantotROLLBACKlai atsauktu visas darījuma laikā veiktās izmaiņas:

ROLLBACK;

Tas nodrošina, ka sistēma nenonāk nekonsekventā stāvoklī, piemēram, naudas atskaitīšana no viena konta, nepievienojot to citam.

BEGIN TRANSACTION TransferFunds;

2. COMMIT komanda

TheCOMMITkomanda tiek izmantota, lai datu bāzē saglabātu visas pašreizējā darījuma laikā veiktās izmaiņas. Kad darījums ir noslēgts, izmaiņas ir pastāvīgas. 

Sintakse:

COMMIT;

Piemērs

Šeit ir paraugsStudenttabula, kas tiks izmantota, lai veiktu darbības šajā piemērā. Šajā tabulā ir ietverta pamata informācija par studentiem, piemēram, ID vārda vecums un cita būtiska informācija, ar kuru tiks manipulēts, izmantojot dažādus darījumu kontroles komandas.

izvade' title=Studentu galds

Tālāk ir sniegts piemērs, kas no tabulas izdzēš tos ierakstus, kuru vecums ir 20, un pēc tam IESNIEDZ izmaiņas datu bāzē. 

DELETE FROM Student WHERE AGE = 20;  
COMMIT;

Izvade

izvade' loading='lazy' title=izvade

3. ROLLBACK komanda

TheROLLBACKkomanda tiek izmantota, lai atsauktu visas pašreizējā darījumā veiktās izmaiņas. To izmanto, ja rodas kļūda vai ja vēlamās izmaiņas nevar pabeigt. Datubāze atgriezīsies stāvoklī, kādā tā bija pirms BEGIN TRANSACTION tika izpildīts.

Sintakse:

ROLLBACK;

Piemērs

Izdzēsiet no tabulas tos ierakstus, kuru vecums ir 20, un pēc tam ATVIETOJIET izmaiņas datu bāzē. Šajā gadījumā DELETE darbība tiek atsaukta un datu bāzē veiktās izmaiņas netiek saglabātas.

DELETE FROM Student WHERE AGE = 20;  
ROLLBACK;

Izvade:

izvade' loading='lazy' title=izvade

4. SAVEPOINT komanda

ASAVEPOINTtiek izmantots, lai izveidotu a kontrolpunkts darījuma ietvaros. Mēs varam atgriezties pie konkrētaSAVEPOINTtā vietā, lai atsauktu visu darījumu. Tas ļauj mums atsaukt daļu darījuma, nevis visu darījumu.

Sintakse:

SAVEPOINT SAVEPOINT_NAME;

Piemērs

SAVEPOINT SP1;  
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.

Izvade:

izvade' loading='lazy' title=izvade

Paskaidrojums:

No iepriekš minētā piemēra 1. tabulas paraugs izdzēsiet no tabulas tos ierakstus, kuru vecums ir 20, un pēc tam ATVIETOJIET izmaiņas datu bāzē, saglabājot saglabāšanas punktus. Šeit SP1 ir pirmais SAVEPOINT, kas izveidots pirms dzēšanas. Šajā piemērā ir notikusi viena dzēšana. Pēc dzēšanas atkal tiek izveidots SAVEPOINT SP2. 

5. ATGRIEŠANA UZ SAVEPOINT

TheROLLBACK TO SAVEPOINTkomanda ļauj mums atgriezt darījumu uz noteiktu saglabāšanas punktu, efektīvi atsaucot izmaiņas, kas veiktas pēc šī punkta.

Sintakse:

ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;

Piemērs

Dzēšana ir notikusi, pieņemsim, ka esam mainījuši savas domas un nolēmuši ATGRIEZTIES uz SAVEPOINT, kuru identificējām kā SP1, kas ir pirms dzēšanas. Tātad šajā gadījumāDELETEdarbība tiek atsaukta un darījums tiek atgriezts stāvoklī, kādā tas bijaSP1saglabāšanas punkts.

ROLLBACK TO SP1;  
//Rollback completed

Izvade:

izvade' loading='lazy' title=izvade

6. ATBRĪVOT SAVEPOINT komandu

Šī komanda tiek izmantota, lai noņemtu mūsu izveidoto SAVEPOINT. Kad SAVEPOINT ir atbrīvots, mēs vairs nevaram izmantot ATGĀŠANAS komanda, lai atsauktu kopš pēdējās SAVEPOINT veiktās transakcijas. To izmanto, lai iniciētu datu bāzes transakciju, un izmantotu, lai norādītu sekojošā darījuma raksturlielumus. 

Sintakse:  

RELEASE SAVEPOINT SAVEPOINT_NAME;

Piemērs

Vienreiz saglabāšanas punktsSP2tiek atbrīvots, mēs vairs nevaram atgriezties pie tā.

int virknē java
RELEASE SAVEPOINT SP2; -- Release the second savepoint.

Kāpēc izmantot darījumus banku jomā?

Šādā gadījumā bez darījuma jūs riskējat ar scenārijiem, kad nauda tiek atskaitīta no viena konta, bet netiek pievienota otram, atstājot sistēmu nekonsekventā stāvoklī. Darījumi nodrošina, ka šādas problēmas tiek novērstas, garantējot, ka abas darbības kopā izdodas vai neizdodas.

SQL transakciju veidi

Ir dažādi darījumu veidi, pamatojoties uz to raksturu un konkrētajām darbībām, ko tie veic:

  • Izlasiet Darījumus : izmanto tikai datu lasīšanai, parasti ar SELECT vaicājumus.
  • Rakstīt darījumus : Tie ietver datu pārveidošanu datubāzē ar INSERT UPDATEvaiDELETEoperācijas.
  • Sadalītie darījumi : šīs transakcijas aptver vairākas datu bāzes un nodrošina konsekvenci tajās.
  • Netieši darījumi : SQL Server automātiski palaiž noteiktām darbībām.
  • Skaidri darījumi : manuāli kontrolēti darījumi, kuros lietotājs sāk un beidz darījumu, izmantojotBEGIN TRANSACTION COMMITunROLLBACK.

SQL transakciju uzraudzība un optimizēšana

Lai saglabātu veiktspēju un novērstu problēmas, apsveriet šādas metodes:

1. Monitoru slēdzenes : izsekojiet bloķēšanas darbību un pielāgojiet vaicājumus, lai samazinātu bloķēšanas konfliktus.

2. Darījuma apjoma ierobežojums : ierobežojiet darījuma ietekmēto rindu vai ierakstu skaitu, lai paātrinātu apstrādi.

3. Izmantojiet pakešu apstrādi : ja apstrādājat lielus datu apjomus, sadaliet darbības mazākos darījumos vai grupās, lai izvairītos no sistēmas pārslodzes.

Ieteiktā viktorīna Rediģēt viktorīnu 5 Jautājumi

Kurš no šiem scenārijiem vislabāk raksturo ACID rekvizīta “Izolācija” pārkāpumu?

  • A

    Darījums atstāj datu bāzi stāvoklī, kas pārkāpj primārās atslēgas ierobežojumu.

  • B

    Divas transakcijas, kas darbojas vienlaikus, lasa un raksta uz tiem pašiem datiem, kā rezultātā tiek iegūti pretrunīgi rezultāti.

  • C

    Lietotājs veiksmīgi atjaunina ierakstu, bet sistēmas avārija izdzēš izmaiņas.

  • D

    Darījums neizdodas pusceļā, un visas tā izmaiņas tiek atsauktas.

Paskaidrojums:

Šis ir klasisks izolācijas pārkāpuma piemērs, kad viena darījuma starpstāvoklis ir redzams citam.

Bankas pieteikumā līdzekļu pārskaitījums ietver viena konta debetēšanu un cita konta kreditēšanu. Kurš ACID rekvizīts nodrošina, ka abas darbības tiek pabeigtas vai neviena no tām netiek veikta?

  • A

    Izolācija

  • B

    Atomiskums

  • C

    Izturība

  • D

    Konsekvence

Paskaidrojums:

Atomicity nodrošina, ka visas operācijas darījuma ietvaros tiek veiksmīgi pabeigtas; pretējā gadījumā viss darījums tiek atcelts.

Darījums tiek izpildīts un tiek izsniegta 'COMMIT'. Tūlīt pēc strāvas padeves pārtraukuma. Kurš ACID rekvizīts garantē, ka darījuma veiktās izmaiņas joprojām pastāv pēc sistēmas restartēšanas?

  • A

    Konsekvence

  • B

    Atomiskums

  • C

    Izturība

  • D

    Izolācija

Paskaidrojums:

Izturība ir īpašība, kas nodrošina, ka pēc darījuma veikšanas tas tāds saglabāsies pat strāvas zuduma vai sistēmas avārijas gadījumā.

Kāds ir komandas SAVEPOINT galvenais mērķis darījumā?

  • A

    Lai veiktu daļu no darījuma.

  • B

    Lai atzīmētu darījuma punktu, uz kuru vēlāk varat atgriezties.

  • C

    Lai neatgriezeniski saglabātu darījuma stāvokli.

  • D

    Lai beigtu darījumu un padarītu visas izmaiņas pastāvīgas.

Paskaidrojums:

“SAVEPOINT” ļauj veikt daļēju atcelšanu darījuma ietvaros.

Apsveriet šādu darījumu: "SĀKT DARĪJUMU; IEVIETOT ...; SAVEPOINT A; ATJAUNINĀT ...; SAVEPOINT B; DZĒST...; ATGĀŠANA UZ SAVEPOINT A;' Kāds ir darījuma stāvoklis pēc komandas 'ROLLBACK'?

  • A

    Viss darījums tiek atcelts.

  • B

    Ir atsaukts tikai “DZĒŠANA”.

  • C

    Radās kļūda, jo nevarat atgriezties pie saglabāšanas punkta, kas nav jaunākais.

    dinamisks java masīvs
  • D

    'IEVADĪT' ir saglabāta, bet 'UPDATE' un 'DELETE' ir atsaukti.

Paskaidrojums:

Atgriežoties pie “SAGLABĀŠANAS PUNKTAS A”, tiek atsauktas visas pēc šī saglabāšanas punkta veiktās izmaiņas, kas ir “ATJAUNINĀT” un “DZĒST”.

SQL DARĪJUMIViktorīna ir veiksmīgi pabeigta, jūsu rezultāts:  2/5Precizitāte: 0%Piesakieties, lai skatītu skaidrojumu 1/5 1/5 < Previous Nākamais >