Кіріспе
Деректер қорының транзакциялық тұтастығы туралы түсінік
Деректер қоры жүйелерінде оқшаулау – ACID (Atomicity, Consistency, Isolation, Durability) транзакциялық қасиеттерінің бірі. Ол транзакциялық тұтастықтың басқа пайдаланушылар мен жүйелерге қалай көрінетінін анықтайды. Оқшаулау деңгейінің төмендеуі көптеген пайдаланушылардың бір уақытта бір деректерге қол жеткізу мүмкіндігін арттырады, бірақ сонымен қатар пайдаланушылар кездесетін қатарлы оқиғалардың (мысалы, «кір» оқулар немесе жоғалған жаңартулар) санын да арттырады. Керісінше, оқшаулау деңгейінің жоғарылауы пайдаланушылар кездесетін қатарлы оқиғалардың түрлерін азайтады, бірақ жүйе ресурстарын көбірек қажет етеді және бір транзакцияның екіншісін тоқтату ықтималдығын арттырады.
БҚЖБ-ның бір мезгілділігін бақылау
Бір мезгілдегі басқару – ДБЖС-де оқшаулануды басқаратын және тиісті дұрыстықты қамтамасыз ететін негізгі механизмдерді қамтиды. Ол деректер қоры мен сақтау қозғалтқыштарында бір мезгілдегі транзакциялардың дұрыс орындалуына кепілдік беру үшін және (әртүрлі механизмдер арқылы) басқа ДБЖС процестерінің дұрыстығын қамтамасыз ету үшін кеңінен қолданылады. Транзакциялармен байланысты механизмдер әдетте деректер қорына деректерге қол жеткізу операцияларының уақытын (транзакция кестелерін) серияландыру және қалпына келтіру қасиеттері ретінде сипатталатын белгілі бір ретке келтіреді. Деректер қорына қол жеткізу операциясын орындауды шектеу әдетте өнімділіктің төмендеуіне (орындалу жылдамдығымен өлшенетін) әкеледі, сондықтан бір мезгілдегі басқару механизмдері шектеулер бойынша мүмкін болатын ең жақсы өнімділікті қамтамасыз ету үшін жасалады. Көбінесе, мүмкін болса және дұрыстыққа зиян келтірмей, жақсы өнімділік үшін серияландыру қасиеттерінен бас тарылады. Дегенмен, қалпына келтіру қасиетінен бас тартуға болмайды, өйткені мұндай жағдай әдетте деректер қорының тұтастығын тез бұзуға әкеледі. Екі кезеңді құлыптау – ДБЖС-де транзакциялардың бір мезгілдегі басқаруының ең көп таралған әдісі, ол серияландыруды және дұрыстықты қалпына келтіруді қамтамасыз ету үшін қолданылады. Деректер қорының нысанына қол жеткізу үшін транзакция алдымен осы нысанға құлыпты алуы керек. Қол жеткізу операциясының түріне (мысалы, нысанды оқу немесе жазу) және құлыптың түріне байланысты, егер басқа транзакция сол нысанға құлыпты ұстап тұрса, құлыпты алу тоқтатылып, кейінге қалдырылуы мүмкін.
Клиент жағындағы оқшаулау
Оқшаулау әдетте дерекқор деңгейінде күшіне енгізіледі. Дегенмен, әртүрлі клиенттік жүйелерді де қолдануға болады. Оны J2EE Entity Beans сияқты қолданбалық аялар немесе орындалу орталарында басқаруға болады.
Оқшаулау деңгейлері
Деректерді басқару жүйесіндегі (ДББЖ) ACID қасиеттерінің төртеуінің ішінде оқшаулану қасиеті ең көп жеңілдетіледі. Оқшауланудың ең жоғары деңгейін сақтауға тырысқанда, ДББЖ әдетте деректерге құлып қояды, бұл қатарлылықтың төмендеуіне әкелуі мүмкін, немесе көп нұсқалы қатарлылықты басқаруды іске асырады. Бұл қолданбаның дұрыс жұмыс істеуі үшін қосымша логиканы қажет етеді. Көптеген ДББЖ транзакциялардың оқшаулану деңгейлерін ұсынады, олар деректерді таңдаған кезде болатын құлыптау дәрежесін реттейді. Көптеген деректер қоры қолданбалары үшін деректер қоры транзакцияларының көпшілігі жоғары оқшаулану деңгейлерін (мысалы, SERIALIZABLE деңгейі) қажет етпеу үшін құрастырылуы мүмкін, осылайша жүйе үшін құлыптауды азайтуға болады. Бағдарламашы деректер қорына кіру кодын мұқият талдап, оқшауланудың кез келген жеңілдетуі бағдарламалық жасақтамада анықтау қиын болатын қателерге себеп болмауын қамтамасыз етуі керек. Керісінше, егер оқшаулану деңгейі жоғарырақ болса, тұйықталу мүмкіндігі артады, бұл да мұқият талдау және бағдарламалау әдістерін қажет етеді. Әрбір оқшаулану деңгейі төменгі деңгейлерден күшті болғандықтан, жоғарырақ оқшаулану деңгейі төменгі деңгейде тыйым салынған әрекетті орындауға рұқсат бермейді, сондықтан стандарт ДББЖ-ге сұралғаннан күштірек оқшаулану деңгейінде транзакцияны орындауға мүмкіндік береді (мысалы, "Оқуды міндеттеген" транзакция "Қайталамалы оқу" оқшаулану деңгейінде орындалуы мүмкін). ANSI/ISO SQL стандартында анықталған оқшаулану деңгейлері төменде тізімделген.
Қайталанатын оқулар
Бұл оқшаулау деңгейінде бұғаттауға негізделген бір мезгілдестікті басқару жүйесі (DBMS) транзакция аяқталғанға дейін таңдалған деректерге қойылған оқу және жазу бұғаттауларын сақтайды. Дегенмен, диапазондық бұғаттаулар басқарылмайды, сондықтан фантомдық оқулар пайда болуы мүмкін. Кейбір жүйелерде осы оқшаулау деңгейінде жазу қисығы (write skew) болуы мүмкін. Жазу қисығы – екі түрлі жазушының (олар жаңартып жатқан бағандарды алдынан оқыған) бір кестедегі бір немесе бірнеше бағанға жазу жасауына рұқсат етілетін құбылыс, нәтижесінде бағанда екі транзакциядан алынған аралас деректер пайда болады.
Қаулыны қабылдау
Бұл оқшаулау деңгейінде бұғаттауға негізделген бір мезгілдестікті басқару жүйесі (DBMS) транзакция аяқталғанға дейін жазу бұғаттауларын (таңдалған деректерге қойылған) сақтайды, бірақ SELECT операциясы орындалғаннан кейін оқу бұғаттаулары босатылады (сол себепті осы оқшаулау деңгейінде деректердің қайталамасыз оқылуы мүмкін). Бұрынғы деңгейдегідей, диапазондық бұғаттаулар басқарылмайды. Тұжырымдырақ айтқанда, "оқылған деректерге берілген" оқшаулау деңгейі, оқылған кездегі барлық деректердің міндетті түрде сақталғанын кепілдейді. Бұл оқырманға аралық, сақталмаған, "кір" деректерді көруге тыйым салады. Транзакция деректерді қайта оқыса, сол деректерді табады деген кепілдік жоқ; деректер оқылғаннан кейін өзгеріп, жаңа мәнге ие болуы мүмкін.
Қатыспаған деп оқу
Бұл ең төменгі оқшаулау деңгейі. Бұл деңгейде, деректердің бұзылуына жол беріледі, сондықтан бір транзакция басқа транзакциялардың әлі бекітілмеген өзгерістерін көре алады.