Upload
rhett
View
71
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
Принципы работы БД
Тема 6 1
Принципы построения и работы баз данных
Тема 6: Обработка запросов
Принципы работы БД
Тема 6 2
Обработка запросов
Запрос Q план запроса
Мы будем рассматривать реляционные системы (БД). Как это будет происходить в других БД.
Пример 1.
Select B,D
From R,S
Where R.A = “c” S.E = 2 R.C=S.C
Принципы работы БД
Тема 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
Принципы работы БД
Тема 6 4
• Как мы выполняем запрос?
- Выполнить декартово произведение- Произвести выборку- Произвести проекцию
Один подход
Принципы работы БД
Тема 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 . .
Есть!
Принципы работы БД
Тема 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)]
Принципы работы БД
Тема 6 7
Другая идея:
B,D
sR.A = “c” sS.E = 2
R S
План II
естественное соед.
Принципы работы БД
Тема 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
Принципы работы БД
Тема 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 и вывести результат.
Принципы работы БД
Тема 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>
Принципы работы БД
Тема 6 11
Обзор задач оптимизации запросовСинтакс.пров.
преобразование
Примен.правил
Оценка размеров результата
Рассмотреть физические планы Оценить стоимость
Выбрать лучший
выполнить
{P1,P2,…..}
{(P1,C1),(P2,C2)...}
Pi
ответ
SQL запрос
Проверенное дерево запроса
Лог.план запроса
“улучшенный” л.п.з.
Л.п.з. +размеры
статистика
Принципы работы БД
Тема 6 12
Пример: SQL запрос
SELECT title
FROM StarsIn
WHERE starName IN (
SELECT name
FROM MovieStar
WHERE birthdate LIKE ‘%1960’
);
(Найти фильмы с артистами, рожденными в 1960 г.)
Принципы работы БД
Тема 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’
Принципы работы БД
Тема 6 14
Пример: Генерация выражения реляционной алгебры
title
StarsIn <condition>
<tuple> IN name
<attribute> birthdate LIKE ‘%1960’
starName MovieStar
Принципы работы БД
Тема 6 15
Пример: Логический план запроса
title
starName=name
StarsIn name
birthdate LIKE ‘%1960’
MovieStar
Принципы работы БД
Тема 6 16
Пример: Улучшенный логический план запроса
title
starName=name
StarsIn name
birthdate LIKE ‘%1960’
MovieStar
Можно ли выполнить проекцию раньше, в
StarsIn?
Принципы работы БД
Тема 6 17
Пример: Оценка размеров результата
нужен ожид.размер
StarsIn
MovieStar
Принципы работы БД
Тема 6 18
Пример: Один физический план
Параметры: порядок соедин.,
размер памяти, атрибуты
проекции, ...
Hash join
Последов.просмотр
Просмотр индекса
Параметры: условия выборки...
StarsIn MovieStar
Принципы работы БД
Тема 6 19
Пример: Оценка стоимости
L.Q.P
P1 P2 …. Pn
C1 C2 …. Cn
Выбрать лучший!
Принципы работы БД
Тема 6 20
Обзор изложения в книге
Глава 15
15.1,15.2 Физические операторы и их реализация
- Выборка, сортировка, ….
- Простейшая стоимостная модель.
- однопроходные алгоритмы
- Множества и наборы
15.3-15.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Факультативное чтение : Оператор удаления
дубликатов, группирования, агрегирования
Принципы работы БД
Тема 6 22
Оптимизация запросов – Порядок рассмотрения на лекциях
• Уровень реляционной алгебры• Уровень детального плана
– Оценка стоимости• Без индексов• С индексами
– Генерация и сравнение планов
Принципы работы БД
Тема 6 23
Оптимизация средствами реляционной алгебры
• Правила преобразования/трансформации
(эквивалентность результата )• Какие преобразования являются «полезными»?
Принципы работы БД
Тема 6 24
Пример правила: Естественные соединения, декартовы произведения и объединения – коммутативны и ассоциативны
R S = S R
(R S) T = R (S T)
Замечание:• Порядок атрибутов в отношении не важен• Правило может быть выражено в форме дерева
R S S T
T R
Принципы работы БД
Тема 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)
Принципы работы БД
Тема 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}
Принципы работы БД
Тема 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 имеет больше смысла
Принципы работы БД
Тема 6 28
Принимаемое решение
-> Использовать “SUM” альтернативу, когда объединяются наборы
-> Некоторые правила не работают для наборов
Например, если A=B=C={x},
(A B(B BC)) (A BB) B(A BC)
Принципы работы БД
Тема 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))]
Правила: Комбинирование +
Принципы работы БД
Тема 6 30
--> Пример вывода (остальное – дома):
p&q (R S) = p [q (R S) ] =
p [ R q (S) ] = [p (R)] [q (S)]
Принципы работы БД
Тема 6 31
Правила: Комбинирование ,
Пусть x = подмножество атрибутов R
z = атрибуты предиката P
(подмножество атрибутов R )
x[p (R) ] = {p [ x (R) ]} x xz
Принципы работы БД
Тема 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 }
Принципы работы БД
Тема 6 33
p(R U S) = p(R) U p(S)
p(R - S) = p(R) - S = p(R) - p(S)
Правила: Комбинирование U
Принципы работы БД
Тема 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)]}
Какие преобразования «полезны»?
Принципы работы БД
Тема 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
Пересечение указателей дает быстрый доступ к соответствующим кортежам
Принципы работы БД
Тема 6 36
Резюме:
• Не существует всегда полезных преобразований• Как правило, полезны ранние выборки
В книге приводятся примеры других преобразований• Удаление общих подвыражений• Удаление дубликатов
Принципы работы БД
Тема 6 37
Оценка стоимости плана запроса(1) Оценка размера результата
(2) Оценка количества операций IO
Для (1):• Хранить статистику для отношения R
– T(R) : количество кортежей в R– S(R) : количество байт в каждом кортеже R – B(R) : количество блоков для всех кортежей R– V(R, A) : количество различных значений
атрибута А в отношении R
Принципы работы БД
Тема 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
Принципы работы БД
Тема 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)
Принципы работы БД
Тема 6 40
Предположение:
Значения атрибута Z из предиката выборки равномерно распределены среди возможных V(R,Z) значений
Альтернативное предположение:
Значения атрибута Z из предиката выборки равномерно распределены среди возможных из области допустимых значений DOM(R,Z)
Принципы работы БД
Тема 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)
Принципы работы БД
Тема 6 42
Число элементов(cardinality) выборки
SC(R,A) = среднее число записей, удовлетворяющих условию равенства для R.A
T(R)
V(R,A)
SC(R,A) =
T(R)
DOM(R,A)
Принципы работы БД
Тема 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
Принципы работы БД
Тема 6 44
Оценка размера для W = R1 R2
Пусть x = атрибуты R1
y = атрибуты R2
X Y =
Так же как и для R1 x R2
Случай 1
Принципы работы БД
Тема 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
Принципы работы БД
Тема 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)
Принципы работы БД
Тема 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) }
Принципы работы БД
Тема 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
Предполаг.одинаковым
Принципы работы БД
Тема 6 49
Во всех случаях:
S(W) = S(R1) + S(R2) - S(A) размер
атрибута A
Принципы работы БД
Тема 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
Принципы работы БД
Тема 6 51
Замечание: Для сложных выражений может потребоваться оценка T,S,V для промежуточных результатов.
Например, W = [A=a (R1) ] R2
рассмотрим как отношение U
T(U) = T(R1)/V(R1,A) S(U) = S(R1)
кроме того, нам будут необходимы значения V (U, *)
Принципы работы БД
Тема 6 52
Для оценки значений V(,)
Например, U = A=a (R1), где R1 имеет атрибуты A,B,C,D
V(U, A) = V(U, B) =
V(U, C) = V(U, D) =
Принципы работы БД
Тема 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) ... где-то в промежутке
Принципы работы БД
Тема 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
Принципы работы БД
Тема 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
Принципы работы БД
Тема 6 56
Итоги
• Оценка размеров результата является “искусством”
• Не забывайте:
Статистика должна обновляться, чтобы давать хорошие оценки (какова стоимость обновления?)
• Оценка стоимости плана запроса– Оценка размера результата - сделано!– Оценка количества IO - следующая тема…
• Генерация и сравнение планов