Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БДиСУБД.docx
Скачиваний:
17
Добавлен:
19.11.2019
Размер:
494.91 Кб
Скачать

Уровниизолированноститранзакций

Какужеупоминалосьвыше,каждаятранзакцияработаетизолированноотдругихтранзакций.Уровеньизолированноститранзакцииопределяет,какиеизменения,сделанныедругимитранзакциями,увидитданнаятранзакция

InterBaseимееттриуровняизолированности:

READCOMMITTED-Читатьподтвержденныеданные.Этотуровеньизоляциипозволяеттранзакциивидетьизменения,сделанныедругими,транзакциями,еслиэтиизменениябылиподтверждены.Кпримеру,стартовалитранзакцииТ1иТ2.Обеониизменилизапись.ОднакоТ1неувидитизменений,сделанныхТ2,покатанеподтвердитсделанныхейизменений(поCommit).Этотуровеньизоляциисчитаетсясамымнизким,открытым,позволяятранзакциивидеть"самыесвежие"данные.

SNAPSHOT-Моментальныйснимокданных.Этосреднийуровеньизолированности.Онпозволяеттранзакциивидетьтолькотеданные,которыесуществоваливмоментстартатранзакции.Еслидругиезаинтересованныетранзакцииизменилизаписьиподтвердилиизменения,тоSNAPSHOT-транзакциявсеравнонеувидитэтихизменений.Однакоонанеблокируетданные,скоторымиработает.

SNAPSHOTTABLESTABILITY-ещеболеезакрытыйуровеньизоляции.Транзакциитакогоуровнянетолькоделаютснимокданных,онитакжеблокируютназаписьтеданные,скоторымиработают.Покатакаятранзакциянеподтверждена,остальныетранзакциигарантированнонесмогутизменитьэтиданные.Крометого,транзакцияSNAPSHOTTABLESTABILITYпростонесможетполучитьдоступктаблице,есливнастоящиймоментдругаятранзакцияизменяетвнейданные.

Параметрытранзакций

Мыимеемвозможностьгибкоуправлятьпараметрамитранзакций,добиваясьнаилучшихрезультатов.Параметры,установленныепоумолчанию,далеконевсегдаявляютсясамымиудачными.Рассмотримэтипараметры.

Таблица24.1.Возможныепараметрытранзакций

Параметр

Описание

Read

Разрешаетсячтениеданных.

Write

Разрешаетсязаписьданных.

Wait

Привозникновенииконфликтасдругойтранзакцией,текущаятранзакцияожидаетопределенноевремя(поумолчанию,10сек.),преждечемпопытаетсярешитьэтотконфликт.

NoWait

Привозникновенииконфликтасдругойтранзакциейсразугенерируетсяошибка.

Read_committedRec_Version

Read_committedпозволяетчитатьподтвержденныеизмененияданных,сделанныедругимитранзакциями.ДополнительныйпараметрRec_Version,крометого,позволяетчитатьинеподтвержденныеизменения.

Read_committedNo_Rec_Vesion

Read_committedпозволяетчитатьподтвержденныеизмененияданных,сделанныедругимитранзакциями.ДополнительныйпараметрNo_Rec_Versionиспользуетсяпоумолчанию,инепозволяетчитатьнеподтвержденныеизменения.

Concurrency

СоздаетуровеньизоляцииSNAPSHOT.

Consistency

СоздаетуровеньизоляцииSNAPSHOTTABLESTABILITY

Программистможетзадатьтранзакциинесколькопараметроводновременно.Например,еслинужно,чтобытранзакциямоглаичитать,иизменятьданные,можнозадатьпараметры

Read

Write

Какиепараметрыустанавливать,решаетсядлякаждойконкретнойзадачи.Однакоможносделатьтакиерекомендации:

Еслитранзакцияиспользуетсятолькодлячтения,например,длявыводаданныхвсеткузапросомSELECT,тоонадолжнаиметьпараметры,позволяющиетолькочитатьданные,чтозначительноускоритработутранзакции.Причемданныедолжныбытьсамыми"свежими",дажеизнеподтвержденныхтранзакций.И,крометого,транзакциянедолжнаожидатьразрешениявозможногоконфликта.Наборпараметровтутможетбытьследующим:

Read

Read_Committed

Rec_Version

NoWait

Еслитранзакцияиспользуетсядляпостроенияотчетов,тоонатакжедолжнатолькочитатьданные,нотолькоподтвержденные.Приэтомжелательносделатьснимокданных,чтобынезависетьотвозможныхизменений.Дляподобнойтранзакциипараметрыудобнейвсегоделатьтакими:

Read

Concurrency

NoWait

И,наконец,еслитранзакцияпредназначенадляизмененияданныхвБД,тоейлучшезадатьболеежесткиепараметры,например:

Write

Concurrency

NoWait

Лекция5-6.Описаниеинтерфейсасреды(Delphi,C++Builder,FoxPro)иеекомпонентовдляработысклиент-сервернойБД.