Автор работы: Пользователь скрыл имя, 21 Января 2015 в 12:18, курс лекций
Систе́ма управле́ния ба́зами да́нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
Основные функции СУБД:
управление данными во внешней памяти (на дисках);
управление данными в оперативной памяти;
ВInterBaseприсутствует механизм удаления старых версий, который запускается новымитранзакциями. Новаятранзакция, запрашивая запись, считывает все версии этой записи. При этом делается проверка на то, была литранзакция, сделавшая эту версию, отменена (RollBack) или подтверждена (Commit). Еслитранзакциябыла отменена, значит, эта версия - мусор, который следует удалить. Если же имеется несколько версий, сделанных подтвержденнымитранзакциями, то актуальной считается версия с наибольшим идентификаторомтранзакций. Остальные версии считаются устаревшими и также подлежат удалению.
Таким образом, молодыетранзакцииприбирают базу данных от мусора, оставленного более старымитранзакциями. Но чистят они не все старые версии подряд, а только версии той записи (или записей), к которой обращаются сами.
Поскольку на сервере одновременно может выполняться множествотранзакций, имеется терминология определения этихтранзакций.
В данном контексте, сборкой мусора занимается старейшая активнаятранзакция. Так как версий записи, сделанных более молодымитранзакциями, она видеть не может, то убирает мусор, оставленный еще более старымитранзакциями. Когда этатранзакциязаканчивает свою работу, то статус "старейшей активной" переходит к другойтранзакции. Таким образом,транзакциипередают друг другу обязанность по сборке мусора.
Как уже упоминалось выше,
каждаятранзакцияработает изолированно от другихтранзакций.Уровень изолированноститранзакцииопред
InterBase имеет три уровня изолированности:
READ COMMITTED- Читать подтвержденные данные. Этот уровень изоляции позволяеттранзакциивидеть изменения, сделанные другими,транзакциями, если эти изменения были подтверждены. К примеру, стартовалитранзакцииТ1 и Т2. Обе они изменили запись. Однако Т1 не увидит изменений, сделанных Т2, пока та не подтвердит сделанных ей изменений (поCommit). Этот уровень изоляции считается самым низким, открытым, позволяятранзакциивидеть "самые свежие" данные.
SNAPSHOT- Моментальный снимок данных.
Это средний уровень изолированности.
Он позволяеттранзакциивидеть
только те данные, которые
существовали в момент стартатранзакции.
Если другие заинтересованныетранзакцииизме
SNAPSHOT TABLE STABILITY-
еще более закрытый уровень
изоляции.Транзакциитакого уровня не только
делают снимок данных, они
также блокируют на запись
те данные, с которыми работают.
Пока такаятранзакцияне подтверждена, остальныетранзакциигарантирова
Мы имеем возможность гибко управлять параметрамитранзакций, добиваясь наилучших результатов. Параметры, установленные по умолчанию, далеко не всегда являются самыми удачными. Рассмотрим эти параметры.
Таблица 24.1. Возможные параметры транзакций | |
Параметр |
Описание |
Read |
Разрешается чтение данных. |
Write |
Разрешается запись данных. |
Wait |
При возникновении конфликта с другойтранзакцией, текущаятранзакцияожидает определенное время (по умолчанию, 10 сек.), прежде чем попытается решить этот конфликт. |
NoWait |
При возникновении конфликта с другойтранзакциейсразу генерируется ошибка. |
Read_committed Rec_Version |
Read_committedпозволяет читать подтвержденные изменения данных, сделанные другимитранзакциями. Дополнительный параметрRec_Version, кроме того, позволяет читать и неподтвержденные изменения. |
Read_committed No_Rec_Vesion |
Read_committedпозволяет читать подтвержденные
изменения данных, сделанные
другимитранзакциями. Дополнительный параметрNo_Rec_Versionиспользу |
Concurrency |
Создает уровень изоляцииSNAPSHOT. |
Consistency |
Создает уровень изоляцииSNAPSHOT TABLE STABILITY |
Программист может задатьтранзакциинесколько параметров одновременно. Например, если нужно, чтобытранзакциямогла и читать, и изменять данные, можно задать параметры
Read
Write
Какие параметры устанавливать, решается для каждой конкретной задачи. Однако можно сделать такие рекомендации:
Еслитранзакцияиспользуется только для чтения, например, для вывода данных в сетку запросомSELECT, то она должна иметь параметры, позволяющие только читать данные, что значительно ускорит работутранзакции. Причем данные должны быть самыми "свежими", даже из неподтвержденныхтранзакций. И, кроме того,транзакцияне должна ожидать разрешения возможного конфликта. Набор параметров тут может быть следующим:
Read
Read_Committed
Rec_Version
NoWait
Еслитранзакцияиспользуется для построения отчетов, то она также должна только читать данные, но только подтвержденные. При этом желательно сделать снимок данных, чтобы не зависеть от возможных изменений. Для подобнойтранзакциипараметры удобней всего делать такими:
Read
Concurrency
NoWait
И, наконец, еслитранзакцияпредназначена для изменения данных в БД, то ей лучше задать более жесткие параметры, например:
Write
Concurrency
NoWait
Лекция5-6.
Компонентыдоступакданнымивизуа
VCL-
Этиклассыпредставленыследующим
Основнымимеханизмамидоступакда
Самыйпростоймеханизмуправления
Графическисхемуработысбазамида
МашинабазданныхBDE |
ПровайдерыOLEDB |
dbExpress |
InterBase | |||
TDatabase(необязательный) |
TADOConnection |
TSQLConnection |
TIBDatabase | |||
Невизуальныекомпонентынаборада | ||||||
TTable,TQuery,TDataSet,TField |
TADODataSet,TADOTable,TADOQuer |
TSQLDataSet,TSQLQuery,TSQLTabl |
TIBDataSet,TIBTable,TIBQury | |||
( | ||||||
( |
ДлясохраненияданныхизБДвXML-
Графическисхемасохраненияданны
Наборданных(TTable,TQueryилидр | |||
(свойствоDataSet) | |||
КлиентскийнаборданныхTClientDa |
(свойствоProviderName) |
ПровайдерданныхTDataSetProvide | |
Файлводномизследующихформатов: |
Соединениеклиентскойпрограммыс
ЧтокасаетсяADO,
Вкратцевсежезаметим,
Информация о работе Лекции по "Систе́ма управле́ния ба́зами да́нных "