56
Принципы работы БД Тема 6 1 Принципы построения и работы баз данных Тема 6: Обработка запросов

Принципы построения и работы баз данных Тема 6: Обработка запросов

  • Upload
    rhett

  • View
    65

  • Download
    1

Embed Size (px)

DESCRIPTION

Принципы построения и работы баз данных Тема 6: Обработка запросов. Обработка запросов. Запрос Q  план запроса Мы будем рассматривать реляционные системы (БД). Как это будет происходить в других БД. Пример 1. Select B,D From R,S Where R.A = “c”  S.E = 2  R.C=S.C. - PowerPoint PPT Presentation

Citation preview

Page 1: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 1

Принципы построения и работы баз данных

Тема 6: Обработка запросов

Page 2: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 2

Обработка запросов

Запрос Q план запроса

Мы будем рассматривать реляционные системы (БД). Как это будет происходить в других БД.

Пример 1.

Select B,D

From R,S

Where R.A = “c” S.E = 2 R.C=S.C

Page 3: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 3

R A B C S C D E

a 1 10 10 x 2

b 1 20 20 y 2

c 2 10 30 z 2

d 2 35 40 x 1

e 3 45 50 y 3

Ответ B D2 x

Page 4: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 4

• Как мы выполняем запрос?

- Выполнить декартово произведение- Произвести выборку- Произвести проекцию

Один подход

Page 5: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 5

RXS R.A R.B R.C S.C S.D S.E

a 1 10 10 x 2

a 1 10 20 y 2

. .

C 2 10 10 x 2 . .

Есть!

Page 6: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 6

Реляционная алгебра – может быть использована для описания планов...

Например: План 1

B,D

sR.A=“c”& S.E=2 & R.C=S.C

XR S

или: B,D [ sR.A=“c”& S.E=2 & R.C = S.C (RXS)]

Page 7: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 7

Другая идея:

B,D

sR.A = “c” sS.E = 2

R S

План II

естественное соед.

Page 8: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 8

R S

A B C (R) (S) C D E

a 1 10 A B C C D E 10 x 2

b 1 20 c 2 10 10 x 2 20 y 2

c 2 10 20 y 2 30 z 2

d 2 35 30 z 2 40 x 1

e 3 45 50 y 3

Page 9: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 9

План III Использование индексов по атрибутам R.A и S.C

(1) Использовать индекс R.A для выборки кортежей из R таких, что R.A = “c”

(2) Для каждого найденного значения R.C использовать индекс S.C для нахождения соответствующих кортежей из S

(3) Удалить кортежи, для которых S.E 2

(4) Соединить соответствующие кортежи R,S, произвести проекцию атрибутов B,D и вывести результат.

Page 10: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 10

R S

A B C C D E

a 1 10 10 x 2

b 1 20 20 y 2

c 2 10 30 z 2

d 2 35 40 x 1

e 3 45 50 y 3

A CI1 I2

=“c”

<c,2,10> <10,x,2>

проверка=2?

вывод: <2,x>

След.кортеж:<c,7,15>

Page 11: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 11

Обзор задач оптимизации запросовСинтакс.пров.

преобразование

Примен.правил

Оценка размеров результата

Рассмотреть физические планы Оценить стоимость

Выбрать лучший

выполнить

{P1,P2,…..}

{(P1,C1),(P2,C2)...}

Pi

ответ

SQL запрос

Проверенное дерево запроса

Лог.план запроса

“улучшенный” л.п.з.

Л.п.з. +размеры

статистика

Page 12: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 12

Пример: SQL запрос

SELECT title

FROM StarsIn

WHERE starName IN (

SELECT name

FROM MovieStar

WHERE birthdate LIKE ‘%1960’

);

(Найти фильмы с артистами, рожденными в 1960 г.)

Page 13: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 13

Пример: Дерево синтакс.разбора<Query>

<SFW>

SELECT <SelList> FROM <FromList> WHERE <Condition>

<Attribute> <RelName> <Tuple> IN <Query>

title StarsIn <Attribute> ( <Query> )

starName <SFW>

SELECT <SelList> FROM <FromList> WHERE <Condition>

<Attribute> <RelName> <Attribute> LIKE <Pattern>

name MovieStar birthDate ‘%1960’

Page 14: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 14

Пример: Генерация выражения реляционной алгебры

title

StarsIn <condition>

<tuple> IN name

<attribute> birthdate LIKE ‘%1960’

starName MovieStar

Page 15: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 15

Пример: Логический план запроса

title

starName=name

StarsIn name

birthdate LIKE ‘%1960’

MovieStar

Page 16: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 16

Пример: Улучшенный логический план запроса

title

starName=name

StarsIn name

birthdate LIKE ‘%1960’

MovieStar

Можно ли выполнить проекцию раньше, в

StarsIn?

Page 17: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 17

Пример: Оценка размеров результата

нужен ожид.размер

StarsIn

MovieStar

Page 18: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 18

Пример: Один физический план

Параметры: порядок соедин.,

размер памяти, атрибуты

проекции, ...

Hash join

Последов.просмотр

Просмотр индекса

Параметры: условия выборки...

StarsIn MovieStar

Page 19: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 19

Пример: Оценка стоимости

L.Q.P

P1 P2 …. Pn

C1 C2 …. Cn

Выбрать лучший!

Page 20: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 20

Обзор изложения в книге

Глава 15

15.1,15.2 Физические операторы и их реализация

- Выборка, сортировка, ….

- Простейшая стоимостная модель.

- однопроходные алгоритмы

- Множества и наборы

15.3-15.6 Реализация операторов соединения и оценка их стоимости

- Многопроходные алгоритмы

Page 21: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 21

Глава 1616.1 Синтаксический анализ16.2 Алгебраические правила преобразования16.3 От дерева синтаксического разбора -> к

логическому плану запроса16.4 Оценка стоимости операторов16.5-16.7 Оптимизация, основанная на стоимости

операторов

Факультативное чтение: 15.7, 15.8, 15.9, 16.6, 16.7Факультативное чтение : Оператор удаления

дубликатов, группирования, агрегирования

Page 22: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 22

Оптимизация запросов – Порядок рассмотрения на лекциях

• Уровень реляционной алгебры• Уровень детального плана

– Оценка стоимости• Без индексов• С индексами

– Генерация и сравнение планов

Page 23: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 23

Оптимизация средствами реляционной алгебры

• Правила преобразования/трансформации

(эквивалентность результата )• Какие преобразования являются «полезными»?

Page 24: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 24

Пример правила: Естественные соединения, декартовы произведения и объединения – коммутативны и ассоциативны

R S = S R

(R S) T = R (S T)

Замечание:• Порядок атрибутов в отношении не важен• Правило может быть выражено в форме дерева

R S S T

T R

Page 25: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 25

R x S = S x R

(R x S) x T = R x (S x T)

R U S = S U R

R U (S U T) = (R U S) U T

Правила: Естественные соединения, декартовы произведения и объединения

R S = S R

(R S) T = R (S T)

Page 26: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 26

Правила: Выборкиp1 & p2(R) =

p1 | p2(R) =

p1 [ p2 (R)]

[ p1 (R)] US [ p2 (R)], R-множество

Наборы и множества

R = {a,a,b,b,b,c}, S = {b,b,c,c,d}, R U S = ?

• Альтернатива 1 SUMR U S = {a,a,b,b,b,b,b,c,c,c,d}

• Альтернатива 2 MAXRUS = {a,a,b,b,b,c,c,d}

Page 27: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 27

При альтернативе 2(MAX) работает следующее правило:p1 | p2 (R) = p1(R) U p2(R)

Пример: R={a,a,b,b,b,c}P1 выполняется для кортежей a,b; P2 - для b,c

p1 | p2 (R) = {a,a,b,b,b,c}

p1(R) = {a,a,b,b,b}

p2(R) = {b,b,b,c}

p1(R) U p2(R) = {a,a,b,b,b,c}

Если же объединяются выборки из разных таблиц, то альтернатива 1 имеет больше смысла

Page 28: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 28

Принимаемое решение

-> Использовать “SUM” альтернативу, когда объединяются наборы

-> Некоторые правила не работают для наборов

Например, если A=B=C={x},

(A B(B BC)) (A BB) B(A BC)

Page 29: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 29

Пусть p = предикат с атрибутами только из R

q = предикат с атрибутами только из S

m = предикат с атрибутами только из R,S

p (R S) = [p (R)] S

q (R S) = R [q (S)] Некоторые правила могут быть выведены

p&q (R S) = [p (R)] [q (S)]

p&q&m (R S) = m [(p (R)) (q (S))]

p|q (R S) = [(p (R)) S] U [R (q (S))]

Правила: Комбинирование +

Page 30: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 30

--> Пример вывода (остальное – дома):

p&q (R S) = p [q (R S) ] =

p [ R q (S) ] = [p (R)] [q (S)]

Page 31: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 31

Правила: Комбинирование ,

Пусть x = подмножество атрибутов R

z = атрибуты предиката P

(подмножество атрибутов R )

x[p (R) ] = {p [ x (R) ]} x xz

Page 32: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 32

Правила: Комбинирование Пусть x = подмножество атрибутов R

y = подмножество атрибутов R

z = пересечение атрибутов R,S

xy (R S) = xy{[xz (R) ] [yz (S) ]}

xy {p (R S)} =xy {p [xz’(R)

yz’ (S)]}

где z’ = z U {атрибуты, используемые в P }

Page 33: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 33

p(R U S) = p(R) U p(S)

p(R - S) = p(R) - S = p(R) - p(S)

Правила: Комбинирование U

Page 34: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 34

p1&p2 (R) p1 [p2 (R)]

p (R S) [p (R)] S

R S S R

x [p (R)] x {p [xz (R)]}

Какие преобразования «полезны»?

Page 35: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 35

Здравый смысл: проекция как можно раньше

Пример: R(A,B,C,D,E) x={E} P: (A=3) (B=“cat”)

x {p (R)} в сравнении с E

{p{ABE(R)}}однако, если имеются индексы по A,BB = “cat” A=3

Пересечение указателей дает быстрый доступ к соответствующим кортежам

Page 36: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 36

Резюме:

• Не существует всегда полезных преобразований• Как правило, полезны ранние выборки

В книге приводятся примеры других преобразований• Удаление общих подвыражений• Удаление дубликатов

Page 37: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 37

Оценка стоимости плана запроса(1) Оценка размера результата

(2) Оценка количества операций IO

Для (1):• Хранить статистику для отношения R

– T(R) : количество кортежей в R– S(R) : количество байт в каждом кортеже R – B(R) : количество блоков для всех кортежей R– V(R, A) : количество различных значений

атрибута А в отношении R

Page 38: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 38

Example

R A: 20 байт, симв.

B: 4 байта, целое

C: 8 байт, дата

D: 5 байт, симв.

A B C D

cat 1 10 a

cat 1 20 b

dog 1 30 a

dog 1 40 c

bat 1 50 d

T(R) = 5 S(R) = 37

V(R,A) = 3 V(R,C) = 5

V(R,B) = 1 V(R,D) = 4

Page 39: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 39

Оценка размера для W = R1 x R2

T(W) = T(R1) T(R2)S(W) = S(R1) + S(R2)

Оценка размера для W = A=a (R)

S(W) = S(R)T(W) = ?

Пример. Пусть отношение R:V(R,A) = 3

V(R,B) = 1 V(R,C) = 5V(R,D) = 4

A B C D

cat 1 10 a

cat 1 20 b

dog 1 30 a

dog 1 40 c

bat 1 50 d

W = z=val(R)

T(W) = T(R)V(R,Z)

Page 40: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 40

Предположение:

Значения атрибута Z из предиката выборки равномерно распределены среди возможных V(R,Z) значений

Альтернативное предположение:

Значения атрибута Z из предиката выборки равномерно распределены среди возможных из области допустимых значений DOM(R,Z)

Page 41: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 41

Пример R Альтерн.предположение

V(R,A)=3 DOM(R,A)=10V(R,B)=1 DOM(R,B)=10V(R,C)=5 DOM(R,C)=10V(R,D)=4 DOM(R,D)=10

A B C D

cat 1 10 a

cat 1 20 b

dog 1 30 a

dog 1 40 c

bat 1 50 d

W = z=val(R) T(W) = T(R)

DOM(R,Z)

Page 42: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 42

Число элементов(cardinality) выборки

SC(R,A) = среднее число записей, удовлетворяющих условию равенства для R.A

T(R)

V(R,A)

SC(R,A) =

T(R)

DOM(R,A)

Page 43: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 43

Как быть в случае W = z val (R)? T(W) = ?

• Решение 1: T(W) = T(R)/2• Решение 2: T(W) = T(R)/3• Решение 3: Оценка значений в интервале

f = ( 20-15+1)/(20-1+1) = 6/20 (частота попадания

T(W) = f T(R) в интервал )

ZMin=1

W= z 15 (R)

Max=20

Page 44: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 44

Оценка размера для W = R1 R2

Пусть x = атрибуты R1

y = атрибуты R2

X Y =

Так же как и для R1 x R2

Случай 1

Page 45: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 45

W = R1 R2 X Y = A

R1 A B C R2 A D

Случай 2

Предположения:

V(R1,A) V(R2,A) Каждое значение A из R1 имеется и в R2

V(R2,A) V(R1,A) Каждое значение A из R2 имеется и в R1

“включение множеств значений” Sec. 16.4.4

Page 46: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 46

R1 A B C R2 A D

Вычисление T(W) когда V(R1,A) V(R2,A)

взять 1 кортеж

соответствие

1 кортеж соответствует T(R2) кортежам... V(R2,A)

следовательно T(W) = T(R2) T(R1)

V(R2, A)

Page 47: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 47

V(R1,A) V(R2,A) T(W) = T(R2) T(R1)

V(R2,A)

V(R2,A) V(R1,A) T(W) = T(R2) T(R1)

V(R1,A)

[Где A атрибут соединения]

В общем случае для W = R1 R2

T(W) = T(R2) T(R1)

max{ V(R1,A), V(R2,A) }

Page 48: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 48

С альтернативным предположением

Значения равномерно распределены по домену

R1 A B C R2 A D

Этот кортеж соответствует T(R2)/DOM(R2,A)

Поэтому T(W) = T(R2) T(R1) = T(R2) T(R1) DOM(R2, A) DOM(R1, A)

Случай 2

Предполаг.одинаковым

Page 49: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 49

Во всех случаях:

S(W) = S(R1) + S(R2) - S(A) размер

атрибута A

Page 50: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 50

Используя подобные идеи, можно оценить размер:

AB (R) ….. Раздел. 16.4.2

A=a&B=b (R) …. Раздел 16.4.3

R S с общими атрибутами A,B,C - 16.4.5

Объединение, пересечение, разность 16.4.7

Page 51: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 51

Замечание: Для сложных выражений может потребоваться оценка T,S,V для промежуточных результатов.

Например, W = [A=a (R1) ] R2

рассмотрим как отношение U

T(U) = T(R1)/V(R1,A) S(U) = S(R1)

кроме того, нам будут необходимы значения V (U, *)

Page 52: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 52

Для оценки значений V(,)

Например, U = A=a (R1), где R1 имеет атрибуты A,B,C,D

V(U, A) = V(U, B) =

V(U, C) = V(U, D) =

Page 53: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 53

Пример R 1 V(R1,A)=3

V(R1,B)=1

V(R1,C)=5

V(R1,D)=3

U = A=a (R1)

A B C D

cat 1 10 10

cat 1 20 20

dog 1 30 10

dog 1 40 30

bat 1 50 10

V(U,A) =1 V(U,B) =1 V(U,C) = T(R1)

V(R1,A)

V(D,U) ... где-то в промежутке

Page 54: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 54

Для соединений U = R1(A,B) R2(A,C) V(U,A) = min { V(R1, A), V(R2, A) }V(U,B) = V(R1, B)V(U,C) = V(R2, C)[это предположение называется “сохранением

множества значений” в разделе 16.4.4]

Z = R1(A,B) R2(B,C) R3(C,D)

R1: T(R1) = 1000 V(R1,A)=50 V(R1,B)=100R2: T(R2) = 2000 V(R2,B)=200 V(R2,C)=300R3: T(R3) = 3000 V(R3,C)=90 V(R3,D)=500

Page 55: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 55

T(U) = 10002000 V(U,A) = 50

200 V(U,B) = 100

V(U,C) = 300

Z = U R3

T(Z) = 100020003000 V(Z,A) = 50

200300 V(Z,B) = 100

V(Z,C) = 90

V(Z,D) = 500

Промежуточный результат: U = R1 R2

Page 56: Принципы построения и работы баз данных Тема  6:  Обработка запросов

Принципы работы БД

Тема 6 56

Итоги

• Оценка размеров результата является “искусством”

• Не забывайте:

Статистика должна обновляться, чтобы давать хорошие оценки (какова стоимость обновления?)

• Оценка стоимости плана запроса– Оценка размера результата - сделано!– Оценка количества IO - следующая тема…

• Генерация и сравнение планов