Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МІСТ Іспит 1 семестр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
504.83 Кб
Скачать
  1. Організація обміну між оперативною і зовнішньою пам’яттю

Одиницею обміну даними між оперативною і зовнішньою пам'яттю є фізичний запис. Фізичний запис читається (записується) за одне звернення до зовнішньої пам'яті. Зокрема, фізичний запис може відповідати одному екземпляру логічного запису. Кількість звернень до зовнішньої пам'яті при роботі з базою даних суттєво впливає на час відгуку системи. У зв'язку з цим для зменшення кількості звернень до БД при роботі з нею збільшують довжину фізичного запису (об'єднують в один фізичний запис декілька екземплярів логічних записів). У цьому випадку фізичний запис називають також блоком, Кількість k екземплярів логічних записів, що складають фізичний запис, називають коефіцієнтом блокування.

Введення вихідних даних у БД здійснюється таким чином:

  • в ОП послідовно вводяться k екземплярів логічних записів (кортежів);

  • введені k екземпляри об'єднуються у фізичний запис (блок);

  • фізичний запис заноситься в зовнішню пам'ять.

Введення k екземплярів записів вихідної таблиці, що складають i‑ий фізичний запис.

Обробка даних, що зберігаються в зовнішній пам'яті, здійснюється таким чином:

  • фізичний запис (блок) прочитується в оперативну пам'ять;

  • обробляються екземпляри логічних записів усередині блоку (вибираються потрібні поля, проводиться порівняння ключового поля із заданим значенням, здійснюється коректування полів, виконуються операції видалення і т. п.).

У деяких СУБД (наприклад, MS SQL Server) одиницею обміну між оперативною і зовнішньою пам'яттю є сторінка (вид фізичного запису, розмір якого фіксований і не залежить від довжини логічного запису). Організація обміну між оперативною і зовнішньою пам'яттю у цьому випадку аналогічна вищеописаній. Відмінність тут полягатиме в тому, що екземпляри логічних записів формуються в буфері, розміром у сторінку, якщо розмір сторінки не кратний довжині логічного запису, сторінка може бути заповнена неповністю, фізичний запис на зовнішньому носієві, відповідно, буде заповнений не повністю.

  1. Структура зберігання даних у зовнішній пам’яті комп’ютера. Послідовне розміщення фізичних записів

У цій структурі зберігання записів у пам'яті розміщуються послідовно один за одним. Як вже наголошувалося, вважаємо, що всі записи мають однакову довжину. Фізична адреса запису може бути легко вирахувана за номером запису (для обчислення необхідно знати формат відповідного фізичного запису).

Фізичний запис з номером I містить логічні записи з номерами

(I – 1) k+1

(I – 1) k+2

...

(I – 1) k+k

I = 1, 2, ..., [N/k];

знаком [N/k] позначимо найближче ціле, більше або рівне N/k, ‑ ціле зверху.

Розглянемо, як реалізуються основні елементарні операції моделі даних у цій структурі зберігання, і оцінимо кількість цих операцій. Нагадаємо, що з точки зору користувача в табличній моделі даних ці операції є операціями над рядками (стовпцями) таблиці.

Пошук запису із заданим значенням ключа

При послідовній структурі зберігання пошук може здійснюватися лише перебором. Читається перший фізичний запис, в ОП він розбивається на k логічних записи (розблоковується), задане значення ключа порівнюється із значенням ключа кожного логічного запису. При неспівпаданні читається наступний фізичний запис і процес повторюється. У кращому разі потрібний запис буде знайдений за одне звернення, в гіршому – необхідно прочитати всі фізичні записи. Середня кількість звернень до зовнішньої пам'яті для пошуку потрібного запису ТР визначається наступною формулою

ТР = (1+[N/k])/2

де N – кількість логічних записів, k – коефіцієнт блокування, [N/k] ‑ кількість фізичних записів.

Читання запису із заданим значенням ключа

Спочатку необхідно знайти потрібний запис (дивися операцію "пошук"). Після закінчення операції "пошук" потрібний запис вже зчитаний в ОП. Кількість звернень до ВП дорівнює ТР.

Коректування запису

Спочатку необхідно знайти потрібний запис (дивися операцію "пошук"). Після закінчення операції "пошук" в ОП знайдений логічний запис коректується, формується фізичний запис (блок) і заноситься у зовнішню пам'ять за тією адресою, звідки вона була зчитана. Кількість звернень до ВП дорівнює ТР+1.

Видалення запису

Аналогічна операції коректування. Службове поле відповідного логічного запису позначається як "видалений запис". Кількість звернень до ВП рівною ТР+1.

Додавання запису

Розглянемо два випадки. У першому випадку користувач вводить новий логічний запис у кінець таблиці. Тоді логічний запис, що вводиться, додається в кінець файлу. Він заноситься або в останній фізичний запис (якщо в ній менше k логічних записів – блок неповний), для цього цей запис має бути зчитаний в ОП. Якщо останній блок повний, то формується новий фізичний запис, який заноситься в кінець файлу. Кількість звернень до ВП рівна відповідно або 2, або 1.

У другому випадку користувач вводить новий логічний запис у вказаний їм i-ий рядок таблиці (i=1, 2, ..., n). У цьому випадку читається фізичний запис з номером [(i-1)/k], що містить i-ий, логічний запис. Якщо відповідний фізичний запис містить порожні логічні записи, то запис, що додається, вставляється у цей блок, блок записується на своє місце у ВП. Кількість звернень до ВП дорівнює 2. Якщо вказаний фізичний запис містить k екземплярів логічних записів вихідної таблиці, читається фізичний запис з номером [i/k]. Якщо цей фізичний запис містить порожні логічні записи, запис, що додається, вставляється в цей блок, блок записується на своє місце у ВП. Сумарна кількість звернень в цьому випадку буде на одиницю більшою і рівна 3.

Якщо фізичні записи з номерами [(i-1)/k] та [i/k] містять по k екземплярів вихідних логічних записів, необхідно формувати додатковий фізичний запис. Відповідний блок міститиме логічний запис, що додається, та k-1 порожніх логічних записів. Блоки з номерами [i/k], [(i+1)/k], ... [N/k] переписуються на одну позицію нижче (зсуваються). Сформований фізичний запис заноситься на місце, що звільнилося (місце запису з номером [i/k]).

У кращому разі (i = N) жоден блок не зрушується. У гіршому разі (i = 1) зсуваються всі блоки. Середня кількість звернень до ВП для перезапису блоків (читання + запис) складе 2[N/k]/2. Тоді сумарна кількість звернень до ВП при додаванні запису в цьому випадку буде рівною 3+[N/k].

Відмітимо, що якщо записи впорядковані за значеннями ключа може проводитися дихотомічним методом і кількість звернень до зовнішньої пам'яті буде не пропорційною (1+[N/k]) /2, а log2[N/k], тобто істотно меншою. Проте додавання запису потребує для збереження впорядкованості, як правило, зсув великої кількості записів. Тому розміщення фізичних записів з впорядкуванням їх за значеннями ключа в СУБД не використовується.