ОПТИМІЗАЦІЯ БД ПРИКЛАДИ

Як було описано в розділі 32, всі реляційні операції, такі як скорочення, проекція і зєднання, виконуються на рівні множин Тому реляційні мови часто називають непроцедурного, так як користувач вказує, що робити, а не як робити Фактично користувач повідомляє лише, що йому потрібно, без вказівки процедури отримання результату Процес навігації (Переміщення) по збереженої базі даних з метою задоволення запиту користувача виконується системою автоматично, а не користувачем вручну Тому реляційні системи іноді називають системами автоматичної навігації У нереляційних системах за навігацію по базі даних в основному несе відповідальність сам користувач На рис 35 приведена яскрава ілюстрація переваг автоматичної навігації – оператору мови SQL INSERT протиставлений код навігації, підготовлений вручну. Для отримання того ж результату подібний код, ймовірно, повинен бути підготовлений користувачем будь нереляційних системи (В даному випадку – мережевої системи CODASYL приклад взятий з глави з мережних баз даних в [15]) Слід зазначити, що тут як приклад знову використовується база даних деталей і постачальників За подробицями зверніться до розділу 39

Незважаючи на попередні зауваження, слід зазначити, що непроцедурного – це хоч і загальноприйнятий, але не зовсім точний термін, тому що процедурний і непроцедурного – поняття відносні Звичайно можна з упевненістю визначити лише те, чи є мова А більше (або менше) процедурним, ніж мова Б Тому точніше буде сказати, що реляційні мови, такі як SQL, характеризуються більш високим рівнем абстракції, ніж типові мови програмування, подібні C + + або COBOL (або підмови даних, зазвичай належать нереляційних СУБД див рис 35) В принципі, саме більш високий рівень абстракції сприяє підвищенню продуктивності праці програмістів, властивому для реляційних систем

Відповідальність за організацію виконання автоматичної навігації покладено на дуже важливий компонент СУБД – оптимізатор (Ми вже згадували про нього в розділі 2) Іншими словами, робота оптимізатора полягає в тому, щоб вибрати найефективніший спосіб виконання для кожного запиту користувача Припустимо, наприклад, що користувач зробив наступний запит (знову скористаємося мовою Tutorial D)

(EMP WHERE ОМР # = ОМР # (Е4)) {SALARY}

Пояснення Вираз у перших дужках (EMP WHERE ..) означає, що застосовується операція скорочення поточного значення змінної відносини ОМР, що стосується того рядка, в якій значення стовпця ОМР # одно Е4 Застосовувана тут мовна конструкція, що представляє собою імя стовпця SALARY, укладену в фігурні дужки, означає проекцію результату операції скорочення по стовпці SALARY Результатом цієї операції проекції стає ставлення, що складається з одного стовпця і одного рядка, яке містить дані про заробіток службовця Е4 (Зверніть увагу, що в даному випадку в неявному вигляді використовується реляційне властивість замкнутості: ми написали вкладене вираз, в якому результат операції скорочення застосовується в якості вхідних даних для операції проекції)

Рис 35 Приклади автоматичної навігації і навігації вручну

Навіть у цьому простому прикладі можуть застосовуватися принаймні два способу доступу до необхідних даних

Послідовний фізичний перегляд (збереженої версії) змінної відносини ОМР, поки необхідна запис що не знайдено

1 Якщо є індекс для стовпця ОМР # (в збереженої версії) змінної відносини (який, ймовірно, дійсно існує, оскільки цей стовпець є унікальним, а більшість систем фактично вимагає створення індексу для забезпечення унікальності), то перехід за допомогою цього індексу безпосередній але до даних службовця з номером Е4

Оптимізатор визначить, яку з двох можливих стратегій слід застосувати У загальному випадку для реалізації будь-якого конкретного реляційного запиту оптимізатор буде здійснювати вибір стратегії, виходячи з міркувань, подібних наступним:

■ на які змінні відносини є посилання в запиті

■ наскільки великі ці змінні відносини в даний час

■ які існують індекси

■ наскільки вибагливі ці індекси

■ як фізично групуються дані на диску

■ які реляційні операції використовуються і тд

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

Більш докладні відомості про оптимізаторі наводяться в главі 18

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*