Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Особливості реляційних баз даних



Кожен елемент таблиці – один елемент даних.

Дані у стовпці є однорідними, тобто мають один тип.

Кожний стовпець (поле) має унікальне ім’я.

Однакові рядки в таблиці відсутні.

Порядок рядків може бути довільним.

 

Кешування - це тимчасове зберігання часто використовуваних даних на носіях інформації (найчастіше, це оперативна пам'ять), що мають менший час доступу, в порівнянні з ЖМД.

У сучасних базах даних для мінімізації операцій фізичного введення-виведення, використовується технологія кешування даних. При цьому відбувається виділення порівняно великого сегменту пам'яті фіксованого розміру, одночасно доступного всім сеансам бази даних. Цей сегмент пам'яті називається буфером блоків кешу [8, С. 30]. Буфер блоків кешу являє собою зв'язаний список, елементами якого є блоки даних одного розміру, лічені з диска. Будь-яка операція доступу до даних називається логічним введенням-висновком. Обмін даними, перебувають в оперативній пам'яті, є строго логічним введенням-висновком, в той час як операції дискового введення-виведення - як логічного, так і фізичного. p align="justify"> Примітка - загальна схема кешування наведена в додатку А.

Для наочної ілюстрації цієї схеми, звернемося до книги Дена Тоу, Налаштування SQL для професіоналів: "З невеликими змінами кеш заповнюється і підтримується досить простим способом. Кожен раз, коли базі даних необхідно звернеться до блоку да...них, ще не скопійованого в кеш, вона запитує операцію читання з диска (фізичний ввід-вивід) і поміщає щойно отриманий блок в голову буферного списку. Так як довга списку під час роботи бази даних залишається фіксованою, додавання блоку з боку голови списку призводить до того, що блок у хвості списку віддаляється (тобто більш не є кешуватися). p align="justify"> Примітка - насправді операції в кеші виконуються за допомогою покажчиків в зв'язковому списку певного виду. Новий головний блок - це насправді та ж область пам'яті, що старий хвостовій блок, в яку записані нові дані, а покажчики переміщені для зміни місця блоку в списку. p align="justify"> Коли база даних виявляє, що потрібний блок даних вже знаходиться в списку (що вимагає строго логічного вводу-виводу), вона переміщує цей блок з поточного положення в голову списку. Оскільки блок, який бере участь в логічному введенні-виведенні, всього лише переміщається, а не додаються до списку, ніякі блоки з хвоста списку не виштовхуються. І знову база даних обробляє переміщення логічного блоку за допомогою покажчиків; на фізичному рівні дані в пам'яті не копіюються. p align="justify"> Так як при виконанні логічного введення-виведення блоки переміщаються назад до голови списку, в підсумку кеш стає відсортованим: останні за часом використання (most recently used, MRU) блоки знаходяться ближче до голови, а блоки з найбільш давнім використанням (least recently used, LRU) - до кінця списку "[8, С. 30].

Семантична оптимізація запитів Семантичне ядро – це повний набір слів і словосполучень, що описують певний предмет, його характеристики. Це слова, які відносяться до діяльності сайту чи діяльності компанії, що володіє сайтом. Правильне складання семантичного ядра має дуже важливе значення для пошукової оптимізації, тому, що саме на його основі будується пошуковий механізм, без чого не можливе просування сайту.

Існують також перетворення, які використовують семантику конкретної бази даних, а не мови запитів. Будь-яке перетворення виконується незалежно від конкретної бази даних. При цьому база даних зберігає не просто сукупність взаємопов'язаних таблиць, а деяку семантичну інформацію, визначальну цілісність бази даних. Оскільки СУБД гарантує цілісність бази даних, то обмеження цілісності можна розглядати як аксіоми, в оточенні яких формуються запити до бази даних [1, 4]. p align="justify"> Семантична оптимізація запитів - процес перевірки коректності та перетворення синтаксичного дерева запиту у форму, придатну для подальших кроків оптимізації.

"Перетворення, яке є допустимим тільки в силу того, що мається конкретне встановлене обмеження цілісності, називають семантичним перетворенням, а оптимізацію, що досягається в результаті подібних перетворень, - семантичної оптимізацією. Семантичну оптимізацію можна визначити як процес перетворення одного запиту в іншій, якісно відмінний запит, який, тим не менш, гарантує результат, ідентичний результату початкового запиту, завдяки тому, що оброблювані дані задовольняють певного обмеження цілісності ". p align="justify"> Розглянемо абстрактне вираження, яке є з'єднанням, що належать до сполук типу У цьому з'єднанні зовнішньому ключу (поле таблиці, призначене для зберігання значення первинного ключа іншої таблиці з метою організації зв'язку між цими таблицями) щодо T1 ставиться у відповідність потенційний ключ (тобто, атрибут, який унікально ідентифікує окремі екземпляри сутності) відносини T2 . Отже, кортеж у відношенні T1 пов'язаний з певним кортежем щодо T2. Таким чином, з кожного кортежу щодо T1 в загальний результат надходить значення деякого атрибута A. Іншими словами, виконання даного з'єднання є, в даному випадку, зайвим. Даний вираз можна замінити звичайною вибіркою даних за умовою відповідності ключів обох відносин. Важливо розуміти, що в принципі будь-яка умова цілісності може бути використано для семантичної оптимізації (якщо ця умова не відстрочено і в даний момент діє на базу даних). При семантичної оптимізації можливі і більш інтелектуальні перетворення, що спирається на семантику (сенс) запиту, і, на що зберігається в базі даних, семантичну інформацію. Наприклад, припустимо, що в базі даних комп'ютерних комплектуючих і постачальників встановлено обмеження, за яким всі принтери повинні знаходитися на оптових складах у Москві. Припустимо, що необхідно визначити постачальників, які поставляють тільки принтери... і знаходяться в тому ж місті, де зберігається хоча б одна поставляється ними деталь. Не важко визначити, що це завдання володіє надмірністю інформації. Сучасні оптимізатори в змозі оптимізувати запит, перевіряючий всі умови задачі, за допомогою семантичної інформації про те, що принтери можуть перебувати тільки на Московських складах, до вигляду: "Визначити постачальників з Москви, що постачають виключно принтери". p align="justify"> 2.3 Генерація і вибір плану виконання

Розглянуті вище методи оптимізації мають на меті мінімізації кількості дій у виразах, і, якщо це необхідно, заміни деяких висловів на еквівалентні, але мають менший час виконання. Після цих перетворень необхідно згенерувати послідовність елементарних операцій, яка, в кінцевому підсумку, дасть коректний результат. Процедурним поданням або планом виконання запиту називається послідовність операцій, необхідних для отримання результату SQL-запиту в реляційної СУБД. Як правило, будь-який запит може мати кілька альтернативних планів виконання. Критерієм вибору плану виконання запиту є мінімізація вартості виконання, яка визначається часом виконання запиту. p align="justify"> У загальному випадку, стадія оптимізації, розглянута в цій главі, ділиться на два наступних етапи:

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

2. вибрати з можливих планів виконання, відібраних на стадії з попереднього пункту, план, що має найменшу вартість виконання.

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

(А) Атомарність (Atomicity). Транзакція виконується як атомарна операція - або виконується цілковито, або взагалі не виконується.

(С) Узгодженість (Consistency). Транзакція переводить базу даних з одного узгодженого (цілісного) стану в інший узгоджения (цілісний) стан. Всередині транзакції узгодженість бази даних може порушуватися.

(I) Ізоляція (Isolation). Транзакції різних користувачів не повинні заважати одна одній (наприклад, якби вони виконувалися почергово).

(D) Довговічність (Durability). Якщо транзакція виконана, то результати її роботи повинні зберігатися в базі даних, навіть якщо в наступний момент часу станеться збій системи.

Транзакція зазвичай починається автоматично з моменту під'єднання користувача до СКБД та триває до тих пір, поки не станеться одна з наступних подій:

Подана команда COMMIT WORK (зафіксувати транзакцію);

Подана команда ROLLBACK WORK (відкотити транзакцію);

Користувач від'єднався від СКБД;

Стався збій системи.

Команда COMMIT WORK закінчує поточну транзакцію та автоматично починає нову транзакцію. При цьому гарантується, що результати роботи завершеної транзакції фіксуються, оскільки вони зберігаються в базі даних.

Команда ROLLBACK WORK призводить до того, що всі зміни, виконані під час поточної транзакції, відкочуються, тобто скасовуються так, наче вони взагалі не траплялися.При цьому автоматично починається нова транзакція.

Відновлення бази даних. Транзакції також є одиницями відновлення даних після перебоїв. Коли система відновлюється, вона ліквідує наслідки транзакцій, що не встигли успішно завершитися в результаті програмного або апаратного перебою.

 




Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.