Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
612-4 / Клиент-серверные ИТ / Лекции Клиент-серверные технологии.doc
Скачиваний:
119
Добавлен:
02.04.2015
Размер:
2.03 Mб
Скачать
  1. Транзакции и целостность бд

Транзакция — совокупность логически взаимосвязанных запросов, направленных на согласованное изменение некоторого множества строк в одной или нескольких таблицах БД. Обычно при выполнении транзакций обновляется несколько таблиц и индексов, связанных с этими таблицами. Для того чтобы гарантировать синхронизацию обновления и целостность данных, в серверах обычно используется принцип «все или ничего», означающий, что в БД вносятся либо все обновления или ни одно из них. С этой целью ведется журнал транзакций, в котором регистрируется информация обо всех затребованных изменениях. Этот журнал обеспечивает возможность «прокрутить назад» совершенных транзакции и восстановить предыдущее состояние БД. Это становится важно, когда изменения в БД, предусмотренные в одной транзакции, реализованы лишь частично, например, из-за сбоя аппаратуры.

Согласованность чтения

Характерна для многопользовательских СУБД. Для её реализации серверы обладают средствами автоматической блокировки. Уровни, на которых блокируется таблица во время обновлений: - вся таблица; - страница (физический блок размером от 1 до 4 Кбайт, содержащий несколько записей).

Тупиковые ситуации

Серверы БД должны иметь средства определения состояния взаимоблокировки (dead lock)При возникновении такой ситуации выполнение одной из транзакций прерывается, выводя другую транзакцию из состояния вечного ожидания. Прерванная транзакция после исключения возможности её блокировки выполняется сначала.

Схемы оптимизации работ на языке SQL

Цель оптимизации состоит в обеспечении как можно более быстрого получения ответа на запрос с минимальным числом обращений к БДСуществует два типа оптимизации на языке SQL-оптимизация по синтаксису; -оптимизация по затратам; Оптимизация по синтаксису использует тот факт, что в языке SQL эффективность запроса зависит от того, как он сформулирован. В данном случае оптимизация зависит от квалификации программиста. При оптимизации по затратам происходит сбор сведений о БД — числе таблиц, числе строк, типе данных в каждой строке, доступности индексирования для конкретного столбца и т. д. Оптимизатор использует эту информацию для выработки наилучшего плана обработки запросов. Преимущества метода оптимизации по затратам: задача определения наилучшего способа выполнения запроса перекладывается с пользователя на процессор БД. Недостаток: нахождение оптимального метода само по себе может занять много времени.

  1. Создание и использование индексов и фильтров бд

Индекс(Index) - свойство поля, позволяющее ускорить поиск данных и сортировку по значению этого поля. Индексация применяется практически во всех СУБД, и от того, как она организована, зависит быстродействие СУБД.

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

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

Построение индекса и его обновление выполняется автоматически самой СУБД. Файл базы данных, для которого создан хотя бы один индекс, называется индексированным файлом.

Дополняя табл. 1.0 сведениями о номерах страниц, на которых хранятся записи с данными (для простоты будем полагать, что каждая запись хранится на отдельной странице внешней памяти) (табл. 1.1):

Таблица 1.1

Сведения о поставках товаров в магазин

Номер накладной

Название товара

Артикул

Количество

Дата

поставки

Номер страницы

37

Костюм

500

50

10.12.05

1

54

Сапоги

200

75

10.12.05

2

18

Туфли

100

120

11.12.05

3

60

Костюм

500

35

11.12.05

4

28

Костюм

300

20

12.12.05

5

74

Костюм

400

50

12.12.05

6

80

Туфли

100

100

12.12.05

7

Индекс, созданный для поля Название товара, обеспечивающий быстрый поиск данных в этом поле, будет иметь вид (табл. 1.2):

Таблица 1.2

Индекс Товар

Название товара

Номера страниц

Костюм

1, 4, 5, 6

Сапоги

2

Туфли

3, 7

Поиск и выборка нужных записей в базе данных осуществляются в следующей последовательности:

1.   Выбирается индекс, соответствующий условию поиска (например Товар, если в запросе выполняется поиск товара с конкретным названием).

2.   В индексе находится строка с заданным условием поиска (например Туфли).

3.    Из найденной строки выбираются номера страниц, где хранятся искомые записи.

4.   Полученные номера страниц используются для чтения необходимой информации.

Большинство СУБД реализует этот процесс автоматически, без участия пользователя.

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

Например, для поля Дата поставкитабл. 3.3 создан также индексДата(табл. 1.3):

Таблица 1.3

Индекс Дата

Дата поставки

Номера страниц

10.12.05

1, 2

11.12.05

3, 4

12.12.05

5, 6, 7

При выполнении запроса «Найти сведения о туфлях, поступивших 11 декабря 2005 г.», номера страниц в индексеТовардля значения данныхТуфлибудут сравниваться с номерами страниц значения11.12.05в индексеДата. В результате будет выбран номер страницы, встречающийся в обоих индексах, равный 3.

Если поиск достаточно часто производится по одним и тем же полям, желательно создать составной индекс, включающий несколько полей. При использовании составного индекса сокращается время поиска, так как не приходится сравнивать значения данных из нескольких индексов.

Проиллюстрируем процесс создания индексов на примере MS Access.

Если индекс создается по одному полю, необходимо выполнить действия:

1.   Открыть таблицу в режиме Конструктора.

2.   Активизировать поле, для которого создается индекс.

3.   Выбрать свойство поля Индексированное поле.

4.   Выбрать для данного свойства одно из значений:

Да (Допускаются совпадения);

Да (Совпадения не допускаются).

Для ключевого поля индекс в MS Access создается автоматически.

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

В MS Access имеются следующие ограничения:

·      в таблице не может быть более 32 индексов;

·      в составном индексе не может быть более 10 полей.

Индексы могут быть плотными, когда в них содержатся указатели на все записи индексированной таблицы, инеплотными– указатели создаются для блоков, включающих наборы записей. Детальная характеристика и примеры указанных понятий приводятся в работах [ 2, 4 ].

Для больших таблиц сами индексы могут занимать несколько страниц во внешней памяти. В таких ситуациях создаются многоуровневые индексы, например, в виде сбалансированных деревьев(B-дерево или Balanced-tree), имеющих иерархическую структуру [ 2, 4 ]. Целью создания B-дерева является ускорение поиска, стремление избежать просмотра всего индекса.

Рассмотрим процесс построения B-дерева на простом примере. Предположим, таблица сведений о поставках товаров в магазин включает 18 записей и индексируется по номерам накладных: 18, 28, 37, 54, 59, 60, 61, 67, 68, 70, 77, 80, 83, 91, 93, 96, 98, 99. На каждой странице в памяти содержатся только два адреса (фактически их может быть больше).

Размещаем на корневой странице дерева значения данных в поле Номер накладной, равные 60 и 82, и три указателя (рис. 5). Данные со значениями в полеНомер накладной, меньшие или равные 60, могут быть найдены с помощью левого указателя; бульшие 60 и меньшие или равные 82 – с помощью среднего указателя; бульшие 82 – с помощью правого указателя (см. рис. 5). Другие страницы индекса интерпретируются аналогичным образом.

На нижнем уровне B-дерева находится множество страниц с указателями на страницы, где хранятся данные (см. рис. 5).

Для нахождения с помощью B-дерева адреса размещения во внешней памяти любой страницы с данными, достаточно последовательно рассмотреть только три страницы индекса (на рис. 5 жирными стрелками указан маршрут поиска страницы с номером накладной 77), что существенно меньше общего количества страниц с данными.

Фильтр(Filter) - способ отбора записей из таблицы или запроса. В Access применяются несколько видов фильтров.

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

-      фильтр по выделенному;

-      фильтр для;

-      фильтр по исключенному;

-      расширенный фильтр;

-      универсальный фильтр.

Любой фильтр можно создать или через команду главного меню Записи/Фильтр,или нажатием соответствующей кнопки панели инструментов, или, находясь в таблице, нажатием правой кнопки мыши. Фильтр можно сохранить. Возможно применение фильтра к фильтру.

Фильтр по выделенному

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

Фильтр для

Аналогичен вышерассмотренному. Однако нет необходимости искать запись в таблице. Достаточно ввести критерий поиска в текстовое поле (рис. 16) и нажать Enterили Применить фильтр.

Фильтр по исключенному

Аналогичен фильтру по выделенному, но исключает выделенную информацию из просмотра.

Запускфильтра

Универсальный фильтр

Для задания критерия поиска надо выполнить команду Изменить фильтр.Фильтр позволяет использовать выражения и операторы И и ИЛИ. При нажатии кнопки возникаетКонструктор фильтра(рис. 1). Для каждого поля таблицы здесь имеется всплывающий список значений, которые можно выбрать. Кроме того, в соответствующей строке можно написать условие поиска с использованием операций  >, <  и т. п., операций И (обязательное совпадение обоих условий), ИЛИ (выполнение хотя бы одного критерия поиска).

Расширенный фильтр

Этот фильтр позволяет выполнять и сортировку данных. В верхней части окна указана структура таблицы, откуда можно переместить нужное поле в бланк фильтра мышью. Возможности фильтра приближаются к простейшему запросу.