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.
Studentu galdsTā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
izvade3. 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:
izvade4. 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:
izvadePaskaidrojums:
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:
izvade6. 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
SELECTvaicājumus. - Rakstīt darījumus : Tie ietver datu pārveidošanu datubāzē ar
INSERTUPDATEvaiDELETEoperā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, izmantojot
BEGIN TRANSACTIONCOMMITunROLLBACK.
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ājumiKurš 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.
Š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
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
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.
“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.
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”.
Viktorī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 >