- •Введение.
- •Лекция1.Введениевклиент-серверныеСубд.
- •InterbaseSqlServer.Общиесведения.
- •Платформы
- •Типыприложений
- •ФайлыбазыданныхInterBase
- •Лекция3.Триггерыихранимыепроцедуры
- •Хранимыепроцедуры(StoredProcedures)
- •Терминаторы
- •Заголовок
- •Телопроцедуры
- •Блоккодапроцедуры
- •Операторприсваивания
- •УсловныйоператорIf…then…else
- •ОператорSelect
- •ЦиклForselecTиSuspend
- •ЦиклWhile…do
- •ОператорыInsert,update,delete
- •ОператорExecuteprocedure
- •Исключения
- •СобытияиоператорPost_event
- •Измененияиудаленияхранимыхпроцедур
- •Примерысозданияивызовахранимыхпроцедур
- •Генераторы
- •Увеличениешагагенератора
- •Триггеры
- •ПеременныеNeWиOld
- •Реализацияавтоинкрементныхключевыхполей
- •Лекция4.Транзакции.Механизмтранзакций
- •Атомарность(Atomicity)
- •Согласованность(Consistency)
- •Изолированность(Isolation)
- •Устойчивость(Durability)
- •Неявныйиявныйстарттранзакций
- •Кактранзакцияработает
- •Уровниизолированноститранзакций
- •Параметрытранзакций
- •Компонентыдоступакданнымивизуальныекомпоненты МеханизмыдоступакБд
- •ПроблемырусскихбукввInterBase
- •Лекция5. Основы языка php. Функции php для работы с субд ИсторияPhp
- •ВозможностиPhp
- •Основнойсинтаксис
- •Разделениеинструкций
- •Комментарии
- •Переменные,константыиоператоры
- •Переменные
- •Константы
- •Операторы
- •Типыданных
- •Типboolean(булевилилогическийтип)
- •Типinteger(целые)
- •Типfloat(числасплавающейточкой)
- •Типstring(строки)
- •Одинарныекавычки
- •Двойныекавычки
- •Типarray(массив)
- •Определениеприпомощиarray()
- •Определениеспомощьюсинтаксисаквадратныхскобок
- •Типobject(объекты)
- •Типresource(ресурсы)
- •Решениезадачи
- •Построениеинтерфейсадлядобавленияинформации
- •Установкасоединения
- •Выборбазыданных
- •Получениеспискаполейтаблицы
- •Отображениеспискаполейвhtml-форму
- •Записьданныхвбазуданных
- •Отображениеданных,хранящихсявMySql
- •Заключение
Уровниизолированноститранзакций
Какужеупоминалосьвыше,каждаятранзакцияработаетизолированноотдругихтранзакций.Уровеньизолированноститранзакцииопределяет,какиеизменения,сделанныедругимитранзакциями,увидитданнаятранзакция
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)иеекомпонентовдляработысклиент-сервернойБД.