Транзакциялар Дәріс 11-12
Келесі сұлба транзакцияларды қолдану принципін көрсетеді:
Өзгерістерді автоматты фиксациялау
Транзакцияларды параллельді қолданудағы қиындықтар
Қайталанбайтын оқу
Жоғалған жаңарту
Фантомдық кірістіру
Изоляция деңгейлері
Клиенттік және серверлік бөлімдер арасында өзара байланыс принциптері
574.77K
Категория: ИнформатикаИнформатика

Транзакциялар Дәріс 11-12

1. Транзакциялар Дәріс 11-12

2.

Транзакция деп деректер қоймасында толық
фиксацияланатын
немесе
толық
қайтарылатын
әрекеттердің жиынтығын айтады. Кейде транзакция
деп
SQL-операторларының
тобын
емес,
SQLоператорларының
барлығын
фиксациялап
немесе
керісінше
қайтарып
жіберуге
кететін
уақыт
интервалын айтады.
Осылайша, ақшаны бір шоттан екінші шотқа
аударым операциясы бір транзакциядан тұру қажет.
Әйтпесе, бірінші SQL-оператор ақшаны басқа шотқа
аударатын болса, ал оларды шоттан түсіретін
екіншісі келеңсіз жағдай арқасында соңына дейін
орындалмай қалу жағдайын тудыру мүмкін.

3.

• Транзакцияны
фиксациялау
SQL-операторымен
немесе
әрбір
SQL-оператордың
аяқталуын
орындаумен
жүзеге
асуы
мүмкін.
Екінші
жағдайда
автокоммит
тәртібінде
орындалуы
мүмкін. Әдетте, SQL-операторының интерактивті
тәртіпте орындалуы автокоммитті қолданады. Жиі
құрудың
қосарланған
орталарында
жұмысты
деректер
қоймаларымен
инкапсуляциялайтын
класстар, қалыпты жағдайда автокоммит тәртібін
ұсынады.

4. Келесі сұлба транзакцияларды қолдану принципін көрсетеді:

Келесі сұлба транзакцияларды қолдану принципін
көрсетеді:

5.

Жаңа транзакция деректер қоймасымен жұмыстың
әрбір жаңа сеансының басталуымен басталады. Сонан
соң барлық орындалатын SQL-операторлар COMMIT WORK
немесе ROLLBACK WORK операторлары орындалмайынша
бір транзакцияға кіреді.
COMMIT
WORK
операторы
деректер
қоймасында
өзгерістерді орындап, ағымды транзакцияны аяқтайды.
Кейде COMMIT WORK операторы транзакцияны орындайды
деп те айтады.
ROLLBACK
WORK
операторы
ағымды
транзакцияда
орындалған
барлық
SQLоператорлардың
әрекетін
қайтарып, транзакцияны қайтарады.
Логика бойынша транзакция өзара байланысқан
операциялардың
орындалуын
қамтамасыздандырады.
Осылайша, егер транзакцияларды өзара байланыспаған
операторлар тізбегінен тұратындай «өте үлкен» ететін
болсақ, онда транзакцияны автоматты қайтаратын кез
келген істен шығу, "қысқа" транзакцияларда табысты
аяқталуы мүмкін әрекеттердің қайтарылуына әкеледі.

6. Өзгерістерді автоматты фиксациялау

Көптеген
коммерциялық
ДҚБЖ
(СУБД)
өзгерістерді
автоматты
фиксациялау
тәртібін
қосуға мүмкіндік береді - автокоммит.
Бұл тәртіпті қосу үшін (барлық ДҚБЖ-лармен
емес) SET AUTOCOMMIT ON қолдануға болады, ал
тәртіпті қайтару үшін - SET AUTOCOMMIT OFF
қолданылады.

7. Транзакцияларды параллельді қолданудағы қиындықтар

Транзакцияларды
параллельді
қолдануда
келесідей қиындықтар кездесуі мүмкін:
қайталанбайтын оқу (non-repeatable read);
"лас"
оқу
(dirty
read)

қайтарылған
транзакциямен жазылған деректерді оқу;
жоғалған жаңарту (lost update);
фантомдық кірістіру (phantom insert).
Берілген
қиындықтар
мүмкін
болатын
жағдайларды қарастыру.

8. Қайталанбайтын оқу

Болжамға
сәйкес,
әртүрлі
қосымшалармен
ашылған
және
келесідей
орындалған
SQLоператорлары бар екі транзакция бар делік:

9.

2-транзакцияда f2 алаңының мәні алынады, сонан соң1-транзакцияда f2 алаңының
мәні өзгертіледі. f2 алаңынан мәнді қайта алу жағдайында 1-транзакцияда басқа нәтиже
алынады ( 7.1-сурет). Бұл жағдай деректердің бөлшектеп өзгерту және деректер қоймасына
қайта жазу кезінде әсіресе жағымсыз.

10.

• "Лас" оқу
Болжамға сәйкес, әртүрлі қосымшалармен ашылған және
келесідей орындалған SQL-операторлары бар екі транзакция бар
делік:
1-транзакцияда f1 алаңының мәні өзгертіледі, сонан соң 2транзакцияда f2 алаңының мәні алынады. Осыдан кейін 1транзакцияның қайтарылуы орындалады. Нәтижесінде 2транзакциямен алынған нәтиже деректер қоймада сақталған
мәннен өзгеше болады.

11. Жоғалған жаңарту

Болжамға сәйкес, әртүрлі қосымшалармен ашылған және
келесідей
орындалған
SQL-операторлары
бар
екі транзакция бар делік:
1-транзакцияда f1 алаңының мәні өзгертіледі, ал
сонан
соң
2-транзакцияда
бұл алаң мәні тағы да
өзгертіледі.
Нәтижесінде
бірінші транзакциямен орындалған өзгерту жоғалған болып
шығады.

12. Фантомдық кірістіру

Болжамға сәйкес, әртүрлі қосымшалармен ашылған және
орындалған SQL-операторлары бар екі транзакция бар делік:
келесідей
2-транзакция f2 алаңының барлық мәндерін қолданатын SQL-оператор
орындалады. Сонан соң 1-транзакцияда жаңа жол кірістіріледі де, 2транзакцияда SQL-операторының қайта орындалуы басқа нәтиже береді.
Мұндай жағдай фантомдық кірістіру болып табылады да, қайталанбайтын
оқудың жеке түрі болып келеді. Мұнда, егер орындалатын SQL-оператор
f2 алаңының барлық мәндерін алмай, тек кестенің бір жолының мәнін
алатын болса (WHERE предикаты қолданылады), онда INSERT операторының
орындалуы фантомдық кірістіру жағдайына әкелмейтін болады.

13. Изоляция деңгейлері

• SQL-92
стандарты
берілген
деңгейлерін анықтайды.
келеңсіз
жағдайлардың
алдын
алатын
изоляция
• Изоляция деңгейлерінің келесідей төрт түрі енгізілген:
• SERIALIZABLE – тізбекті орындалу (қалыпты жағдайда қолданылады). Бұл деңгей
жоғарыда
көрсетілген
барлық
келеңсіз
жағдайлардың
алдын
алуын
қамтамасыздандырады, алайда, сәйкесінше, параллелизмнің ең төмен деңгейі
байқалады;
• REPEATABLE READ – қайталанатын оқу. Бұл деңгейде"фантомдық кірістіру" келеңсіз
жағдайына әкелетін INSERT операторларының орындалуы мүмкін. Бұл деңгейді егер
орындалатын SQL-операторына жаңа жолдарды қосу әсер етпесе өолданған жөн;
• READ COMMITTED – фиксацияланған оқу . Бұл деңгей бірдей сұратуларға әртүрлі
нәтиже алу қажет болған жағдайда қолданған жөн, алайда тек деректерде
өзгертулерді орындаған транзакцияны фиксациялағаннан кейін;
• READ UNCOMMITTED – фиксацияланбаған оқу . Мұнда
бірдей сұратулар үшін әртүрлі нәтиже алуға болады.
транзакцияны
фиксациялаусыз

14.

• Келесі кестеде изоляция деңгейлері формалды
түрде келтірілген.

15. Клиенттік және серверлік бөлімдер арасында өзара байланыс принциптері

16.

Көптеген басатын жүйелер жалғыз сол концептуалды жалпы
сұлбамен жұмыс жасайтынын біле отырып, әртүрлі өнімдер арасында
көп архитектуралық айырмашылықтар бар. Ең тиімдісі ДҚБЖ үлестіруі
болып табылды.
Нұсқа және әкелушілер бойынша ДҚБЖ архитектурасы
Көп ағымды
2N
Oracle Version 7 (optional)
Oracle Version 6 және үнсіз күйде Oracle Version 7
Sybase v4.9.x, System10
Informix v5.x
Ingres v6.x
Ingres v5.x
Progress version 7
ADABASE version 2.1
Progress version 6

17.

18.

Жүйенің екі негізгі класын айта кеткен жөн: "2N"
(немесе “бірге-бір”) принципі бойынша құрылған
жүйелер және көп ағымды жүйелер. Көптеп ескі 2Nүлестіруінде әрбір клиент үшін тіптен клиентпрограммасы физикалық түрде жеке жүйеде
орындалса да, серверде жеке процесс қолданылады.
Осы мақсатпен, әрбір клиенттік қосымша үшін екі
процесс қолданылады, біреуі серверде және біреуі
клиенттік жүйеде. Осындай көптеген процестерді
басқаратын ұйымдардың қосымша шығынын азайту
мақсатында көп ағымды қосымшалар сол үшін
өңделіп жасалынған.

19.

Деректер қорының сервері, ол өзінің артықшылықтары мен
кемшіліктері бар SQL тілінде ғана негізделген интерфейс болып
табылады. Белгілі артықшылығы – интерфейстің стандартты болуы.
ДҚБЖ-дегі SQL-бағдарының клиенттік бөлімі кез келген
SQLсервермен, оны кім шығарғанына қарамастан жұмыс жасай
алады.
Кемшілігі:Осындай жоғары деңгейде жүйенің клиенттік және
серверлік бөлімі клиенттің жағында ДҚБЖ-ның өте аз программасы
жұмыс жасайды. Егер клиенттің жағына аз қуатты жұмыс
станциясы қолданылатын болса, онда бұл қалыпты жағдай. Ал егер
клиенттік компьютердің қуаты жеткілікті болса, онда оған көп
деректер қорын басқаратын функцияларды жүйе үшін тар орын
болып саналатын серверді іске қосуды жүзеге асыру мүмкіндігі
туындайды.

20.

ДҚБЖ-ның
перспективті
бағыттарының
бірі
иілгіш
конфигурациялы жүйелер болып табылады, ДҚБЖ-ның клиенттік және
пайдаланушы бөлімдері арасындағы тағайындамалар функциясы
жүйені орнату кезінде анықталады. Өшірілген шақыру процедурасы
кезіндегі протоколдардың артықшылықтары. Жоғарыда ескерілген
өшірілген шақыру процедурасының протоколдары әсіресе «клиентсервер» архитектурасында негізделген, деректер қорын басқару
жүйесінде өте маңызды.
Біріншіден, өшірілген процедуралар механизімін қолдану
жүйенің клиенттік және серверлік бөлімдері арасындағы
функцияларды тағайындай алады, себебі өшірілген процедура
шақыру программасы мәтінде өшірілген шақырудан ешқандай
айырмашылығы жоқ, осыған орай жүйенің кез келген компоненті
теория тұрғысынан сервер жағына да, клиент жағына да орналаса
алады.

21.

Екіншіден, өшірілген шақыру механизмі өзара байланысатын
компьютерлер арасындағы айырмашылықтарды жояды. Физикалық
біртекті емес компьютерлердің локальды желісі логикалық біртекті
өзара байланысатын программа компоненттерімен шығарылды.
Нәтижесінде пайдаланушылар сәйкес серверлермен жұмыс
станцияларының бір рет қолданатын пакеттерін сатып алуға байыпты
қарауының қажеті жоқ.

22.

Бақылау сұрақтары:
1.ДҚБЖ-ның архитектурасын нұсқасы ойынша сипаттаңыз
және талдау жасаңыз.
2.Клиенттік және серверлік арасындағы өзара байланыс
принциптерін сипаттаңыз?
3.Аппаратты мүмкіндіктерге талаптарды сипаттаңыз.
4.Сұратуды баптауға мысал келтіріңіз.
5.Өшірілген шақыру процедуралар протоколының
артықшылығын сипаттаңыз.
English     Русский Правила