Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры о бд.docx
Скачиваний:
10
Добавлен:
23.09.2019
Размер:
461.01 Кб
Скачать

95) Табличные блокировки

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

Например, при обновлении строки таблицы CUSTOMERS транзакция устанавливает исключающую блокировку обновляемой строки. Кроме того, устанавливается и блокировка таблицы CUSTOMERS так, что другие транзакции не могут изменить или удалить эту таблицу до завершения первой транзакции.

Тупики

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

На рис. 2 транзакция 1 устанавливает исключающую блокировку строки 1 таблицы и ждет, пока транзакция 2 снимет исключающую блокировку строки 2. Одновременно транзакция 2 устанавливает исключающую блокировку строки 2 и ждет, пока транзакция 1 снимет свою блокировку строки 1. В результате ни одна из этих транзакций не может продолжить работу, и они, оказавшись в тупике, ждут друг друга.

УСТРАНЕНИЕ ТУПИКОВ. Когда транзакция выполняет оператор, вызывающий тупик, Oracle автоматически распознает тупик и откатывает такой оператор.

96) Уровень изолированности транзакций — значение, определяющее уровень, при котором в транзакции допускаются несогласованные данные, то есть степень изолированности одной транзакции от другой. Более высокий уровень изолированности повышает точность данных, но при этом может снижаться количество параллельно выполняемых транзакций. С другой стороны, более низкий уровень изолированности позволяет выполнять больше параллельных транзакций, но снижает точность данных.

77) INNER JOIN – внутреннее соединение. Объединяет две таблицы, где каждая строка обоих таблиц в точности соответствует условию. Если для строки одной таблицы не найдено соответствия в другой таблице, строка не включается в набор. Пример запроса:

SELECT Работники.ФамилияРаботника, Роли.НазваниеРоли

FROM Работники INNER JOIN Роли ON Работники.КодРолиРаботника=Роли.КодРоли;

Аналог запроса:

SELECT Работники.ФамилияРаботника, Роли.НазваниеРоли

FROM Работники, Роли WHERE Работники.КодРолиРаботника=Роли.КодРоли;

При выборке записей из таблицы практически всегда требуется задавать определённые условия, по которым мы определяем, какие записи нам нужны, а какие - нет. И именно эти условия можно задавать с помощью конструкции WHERE в SQL. Я уже знакомил Вас с ней, но в этой статье решил познакомить с WHERE немного поближе.

Начну с простого примера выборки с использованием конструции WHERE в SQL:

SELECT * FROM table WHERE count=5

Вернутся записи, в которых поле "count" имеет значение 5. Теперь усложним запрос:

SELECT * FROM table WHERE count=5 AND id < 100

Таким образом, вернутся записи, у которых поле "count" имеет значение 5 И поле "id" имеет значение меньше 100.

76) INNER JOIN – внутреннее соединение. Объединяет две таблицы, где каждая строка обоих таблиц в точности соответствует условию. Если для строки одной таблицы не найдено соответствия в другой таблице, строка не включается в набор. Пример запроса:

SELECT Работники.ФамилияРаботника, Роли.НазваниеРоли

FROM Работники INNER JOIN Роли ON Работники.КодРолиРаботника=Роли.КодРоли;

Аналог запроса:

SELECT Работники.ФамилияРаботника, Роли.НазваниеРоли

FROM Работники, Роли WHERE Работники.КодРолиРаботника=Роли.КодРоли;

Ключевое слово join в SQL используется при построении select выражений. �?нструкция Join позволяет объединить колонки из нескольких таблиц в одну. Объединение происходит временное и целостность таблиц не нару�?ается. Существует три типа join-выражений:

  • inner join;

  • outer join;

  • cross join;

В свою очередь, outer join может быть left, right и full (слово outer обычно опускается). В качестве примера (DBMS Oracle) создадим две простые таблицы и сконструируем для них SQL-выражения с использованием join. В первой таблице будет хранится ID пользователя и его nick-name, а во второй - ID ресурса, имя ресурса и ID пользователя, который может этот ресурс администрировать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]