Кіріспе
Деректер базаларында және мәмілелерді өңдеуде мәмілелерді орындау реті
databases and transaction processing
Деректер базалары және мәмілелерді өңдеу (мәмілелерді басқару) салаларында жүйелік кесте (немесе тарих) – жүйеде іске қосылатын мәмілелер жиынтығындағы орындалулардың тізбегін сипаттайтын абстрактілік модель. Әдетте, бұл жүйеде бірге орындалатын транзакциялар жиынтығымен орындалатын, уақыт бойынша реттелген операциялардың (әрекеттердің) тізімі болып табылады. Егер кейбір операциялардың арасындағы уақыт реті жүйемен анықталмаса, ішінара рет қолданылады. Мұндай операциялардың мысалдары: оқу сұранысы, оқу, жазу, тоқтату, бекіту, құлып қою сұранысы, құлыптау және т.б. Көбінесе, операция түрлерінің тек бір бөлігі ғана кестеге енгізіледі. Кестелер – деректер базасының бір мезгілде жұмыс істеуін басқару теориясының негізгі ұғымдары. Іс жүзінде, көптеген жалпы мақсаттағы деректер базасы жүйелері қақтығысқа қабілетті серияландырылатын және қатаң қалпына келтірілетін кестелерді қолданады.
Іс-қимылдың ұзақтығы мен реті
Көбінесе деректер базасында бірмезгілділік басқаруды талдау үшін, операция атомдық деп модельделеді, ол уақыттың бір сәтінде орындалады, ұзақтығы болмайды. Нақты орындалатын операциялардың бәрінің де белгілі бір ұзақтығы болады. Кестедегі транзакциялардың операциялары бір-бірімен араласуы мүмкін (яғни, транзакциялар бірмезгілде орындалуы мүмкін), бірақ әрбір транзакция ішіндегі операциялардың уақыт реті өзгермейді. Егер кестедегі транзакциялардың операциялары араласса, онда кесте ішінара реттелген болады (яғни, кесте қақтығысты тізбектеуге болады, бірақ тізбекті емес). Егер кестедегі транзакциялардың операциялары араласпаса, онда кесте толық реттелген болады (яғни, кесте тізбекті).
Жоспар түрлері
Толық кесте – әрбір транзакциясы үшін тоқтату (немесе кері қайтару) немесе қабылдау (commit) әрекетін қамтитын кесте болып табылады. Транзакцияның соңғы әрекеті – қабылдау немесе тоқтату болады. Атомдылықты сақтау үшін, транзакция тоқтатылса, оның жасаған барлық әрекеттерін кері қайтару қажет.
Серияға қосуға болады
Кесте, егер оның нәтижесі сериялық кестеге тең болса, серияландырылатын болады. E кестесінде транзакциялардың әрекеттері орындалу реті D кестесінен өзгеше, бірақ соңында E кестесі D кестесімен бірдей нәтиже береді. +ET1T2T3R(X)R(Y)R(Z)W(X)W(Y)W(Z)Ком. Ком. Ком. Серияландыру дерек элементіндегі деректерді тұрақты күйде ұстау үшін қолданылады. Бұл бір мезгілде орындалатын транзакциялар кестесінің дұрыстығын анықтаудың басты шарты болып табылады, сондықтан ол барлық мақсатына арналған деректер базасы жүйелерінде қолдауға ие. Серияландырылмаған кестелер қате нәтижелер тудыруы мүмкін, бұл өте зиянды болуы мүмкін (мысалы, банктердегі қаржылық операциялармен жұмыс істегенде). Егер қолданба кейбір транзакциялар арасында нақты реттілік талап етсе, онда ол негізгі серияландыру механизмдеріне тәуелсіз түрде сақталады. Бұл механизмдер әдетте нақты реттілікке бейжай болады және осы транзакциялардың бірнеше сериялық ретіне сәйкес келетін болжамсыз ішінара реттілік тудырады.
+ET1T2T3R(X)R(Y)R(Z)W(X)W(Y)W(Z)Com. Com. Com. Serializability is used to keep the data in the data item in a consistent state. It is the major criterion for the correctness of concurrent transactions' schedule, and thus supported in all general purpose database systems. Schedules that are not serializable are likely to generate erroneous outcomes; which can be extremely harmful (e. g., when dealing with money within banks). If any specific order between some transactions is requested by an application, then it is enforced independently of the underlying serializability mechanisms. These mechanisms are typically indifferent to any specific order, and generate some unpredictable partial order that is typically compatible with multiple serial orders of these transactions.
Конфликтті сериялауға болатын
Кесте бір немесе бірнеше тізбекті кестелерге қақтығыс тең болса, оны қақтығыс сериялық деп атайды. Басқаша айтқанда, кесте қақтығыс сериялық болады, егер және тек қана оның басымдық графигі жасалған транзакцияларды ескергенде ациклді болса. Егер график жасалмаған транзакцияларды да қамтитын болса, онда жасалмаған транзакцияларды қамтитын циклдар қақтығыс сериялықты бұзбауы мүмкін. K кестесі <T1, T2> тізбекті кестесіне қақтығыс тең, бірақ <T2, T1> кестесіне тең емес. +KT1T2R(A)R(A)W(B)Ком. W(A)Ком. Қақтығыс сериялықты басымдық графигіндегі цикл ішіндегі кез келген транзакцияны қайта іске қосу арқылы немесе екі кезеңді құлыптауды, уақыт белгісінің ретін немесе сериялық оқшаулауды қолдану арқылы қамтамасыз етуге болады.
Қайта қалпына келтірілетін
Қайта қалпына келтірілетін кестеде транзакциялар тек олар оқыған өзгерістерді жасаған транзакциялар бекітілгеннен кейін ғана бекітіледі. Егер транзакция басқа транзакциядан алынған өзгерістерге сүйеніп оқылса, содан кейін бекітіліп, кейін тоқтатылса, кесте қалпына келтірілмейтін болады. Ком. АбортКом. Ком. АбортАборт. Бұл кестелерді қалпына келтіруге болады. F кестесі қалпына келтіріледі, себебі T1, T2-ден бұрын бекітіледі, бұл T2 оқыған мәнді дұрыс етеді. Содан кейін T2 өзі бекітіле алады. F2 кестесінде, егер T1 тоқтатылса, T2 да тоқтатылуы керек, себебі ол оқыған A мәні дұрыс емес. Екі жағдайда да деректер базасы тұрақты күйде қалады. J транзакциясы қалпына келтірілмейді, себебі T2, T1 алдында T1 жазған мәнді оқығанмен, соған дейін бекітілді. T1, T2 бекітілгеннен кейін тоқтағандықтан, T2 оқыған мән қате. Транзакция бекітілгеннен кейін кері қайтару мүмкін емес болғандықтан, кесте қалпына келтірілмейді.
These schedules are recoverable. The schedule F is recoverable because T1 commits before T2, that makes the value read by T2 correct. Then T2 can commit itself. In the F2 schedule, if T1 aborted, T2 has to abort because the value of A it read is incorrect. In both cases, the database is left in a consistent state. Transaction J is unrecoverable because T2 committed before T1 despite previously reading the value written by T1. Because T1 aborted after T2 committed, the value read by T2 is wrong. Because a transaction cannot be rolled back after it commits, the schedule is unrecoverable.
Қатаң
Егер кез келген екі транзакция T1 және T2 үшін, T1 транзакциясының жазу операциясы T2 транзакциясының қақтығыс операциясынан (оқу немесе жазу) бұрын болса, онда T1 транзакциясының бекітілуі немесе тоқтатылуы T2 транзакциясының сол қақтығыс операциясынан бұрын болады. Кез келген қатаң кесте каскадтық емес, бірақ керісінше дұрыс емес. Қатаңдық деректер базасын ақаудан тиімді қалпына келтіруге мүмкіндік береді.