Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Кластеризованный индекс




END

END

ROLLBACK

PRINT

BEGIN

END

PRINT

ROLLBACK

BEGIN

BEGIN

AS

IF (SELECT oklad

FROM inserted) < '20000'

'Нельзя вставлять запись о сотруднике, с окладом менее 20 000 рублей'

IF (SELECT oklad

FROM deleted) >= '50000'

'Нельзя удалять запись о сотрудике, оклад которого более 50000'

 

go

Порядок запуска триггеров при никак не определен и не гарантирован. В SQL Server 2000 появилась документированная процедура sp_settriggerorder. Она позволяет указать какие триггеры AFTER срабатывают первыми или последними.

EXEC Sp_settriggerorder 'dbo.TestTrigger02', 'first', 'insert'

EXEC Sp_settriggerorder 'dbo.TestTrigger03', 'last', 'insert'

26. Транзакции: определение, назначение, свойства ACID, уровни изоляции, операторы TCL и их применение.

BEGIN TRANSACTION - начать транзакцию

COMMIT TRAN - зафиксировать транзакцию

ROLLBACK TRAN - откатить транзакцию

SAVEPOINT - точка остановки

Транзакция - это группа логически связанных операторов SQL, результаты которых могут быть зафиксированы или отменены как единое целое.

Используется для многопользовательских баз данных. То есть при сетевых запросах к ней.

Вот к примеру, в инете есть БД авиакомпании. Клиент делает запрос на наличие свободного 14го места на такой то такойто рейс. Место свободно, и он его бронирует. Вот вся эта группа команд и будет транзакцией. Ее результат можно сохранить. То есть вызвать оператор commit и место будет забронировано в базе данных. А можно ROLLBACKом откатить изменения и место останется свободным, если клиент передумал покупать это место.

4 свойства ACID:

1)Атомарность.Это когда все входящие в транзакцию операторы SQL рассматриваются как единая неделимая группа. То есть либо она выполняется ВСЯ, либо никакой из операторов не выполнится.

2)Непротиворечивость(Согласованность) Это означает, что состояние БД остается согласованным и непротиворечивым после завершения транзакции.

3)Изолированность.Вот это самое интересное

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

4)Долговременность.После фиксации транзакции изменения в БД сохраняются при отключении компьютера или при выходе его из строя.

Уровни изоляции:

SET TRANSACTION ISOLATION LEVEL [READ COMMITED|READ UNCOMMITED| REPEATABLE READ|SERIALIZABLE]

Незавершенное (грязное) чтение (read uncommitted) — минимальный уровень изоляции гарантирует только физическую целостность при записи данных. Процессы-читатели могут считывать данные незавершенной транзакции процесса-писателя.

Подтвержденное чтение (read committed) — процессы-читатели не могут считывать данные незавершенной транзакции, но процессы-писатели могут изменять уже прочитанные читателем данные.

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

Сериализуемость (serializable) — максимальный уровень изоляции, гарантирует неизменяемость данных другими процессами до завершения транзакции.

Моментальный срез (snapshot) — данный вид изоляции не входит в рекомендации стандарта SQL 92, но он реализован во многих СУБД. Процессы-читатели не ждут завершения транзакций писателей, а считывают данные, точнее их версию, по состоянию на момент начала своей транзакции.

Сериализуемость (serializable), или полная изоляция

Уровень сериализуемости SERIALIZABLE гарантирует, что все затронутые в транзакции данные не будут изменены другими транзакциями. На этом уровне появление фантомов исключается.

Transaction Control Language (работа с транзакциями) BEGIN TRANSACTION, COMMIT, ROLLBACK;

BEGIN TRANSACTION;

INSERT INTO books (title, author, year, description)

VALUES ('Новая книга', 'Василий Ежиков', 2005, 'Книга о новом');

COMMIT work;

 

27. Индексы: определение, типы, назначение, создание и применение.

Индексы - объект БД, позволяющий быстрее находить нужные данные, без чтения всей таблицы данных.

Существует два типа индексов: кластерные и не кластерные. Не кластерные индексы в свою очередь подразделяются на:

l заданные на неупорядоченной таблице.

l заданные на кластеризованном индексе.

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

Все индексы имеют страницы листового уровня и нелистовых уровней. При B-Дереве(сбалансорованном) листовым называется уровень, на котором хранитьсяится

“ключ”, идентифицирующий конкретную строку, а страницы нелистовых уровней используются в качестве указателей, направляющих к листовому уровню.

 

Индексы создаются либо на кластеризованной таблице (таковой называется таблица, имеющая кластеризованный индекс), либо на так называемой неупорядоченной таблице (не имеющая кластеризованного индекса).

 

Кластеризованная таблица

Применение кластеризованного индекса влечет за собой то, что данные в таблице, на которой он задан, хранятся физически в указанном порядке. Отдельные строки в таблице однозначно идентифицируются с помощью кластеризованного ключа; так называются столбцы, которые определяют кластеризованный индекс.

Неупорядоченной таблица

При использовании таких таблиц создается уникальный идентификатор, называемый идентификатором строки (Row ID - RID). Идентификатор RID формируется на основе использования данных об экстенте, странице и смещения строки. Идентификатор RID требуется, только если отсутствует кластеризованный ключ (на таблице не задан кластеризованный индекс)

 

Для каждой конкретной таблицы кластеризованный индекс является уникальным; на каждой таблице может быть задан только один кластеризованный индекс.

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 683; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.