560 likes | 822 Views
Принципы построения и работы баз данных Тема 6: Обработка запросов. Обработка запросов. Запрос Q план запроса Мы будем рассматривать реляционные системы (БД). Как это будет происходить в других БД. Пример 1. Select B,D From R,S Where R.A = “c” S.E = 2 R.C=S.C.
E N D
Принципы построения и работы баз данныхТема 6: Обработка запросов Тема 6
Обработка запросов Запрос Q план запроса Мы будем рассматривать реляционные системы (БД). Как это будет происходить в других БД. Пример 1. Select B,D From R,S Where R.A = “c” S.E = 2 R.C=S.C Тема 6
Ответ B D 2 x 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 Тема 6
Как мы выполняем запрос? - Выполнить декартово произведение - Произвести выборку - Произвести проекцию Один подход Тема 6
Есть! 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
Реляционная алгебра – может быть использована для описания планов... Например: План 1 B,D sR.A=“c”& S.E=2 & R.C=S.C X R S или: B,D [sR.A=“c”& S.E=2 & R.C = S.C (RXS)] Тема 6
Другая идея: План II B,D sR.A = “c” sS.E = 2 R S естественное соед. Тема 6
R S A B C s (R) s(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
План 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
=“c” <c,2,10> <10,x,2> След.кортеж: <c,7,15> 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 C I1 I2 проверка=2? вывод: <2,x> Тема 6
SQL запрос Обзор задач оптимизации запросов Синтакс.пров. Проверенное дерево запроса преобразование ответ Лог.план запроса выполнить Примен.правил статистика Pi “улучшенный” л.п.з. Выбрать лучший Оценка размеров результата {(P1,C1),(P2,C2)...} Л.п.з. +размеры Оценить стоимость Рассмотреть физические планы {P1,P2,…..} Тема 6
Пример: SQL запрос SELECT title FROM StarsIn WHERE starName IN ( SELECT name FROM MovieStar WHERE birthdate LIKE ‘%1960’ ); (Найти фильмы с артистами, рожденными в 1960 г.) Тема 6
Пример:Дерево синтакс.разбора <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
Пример:Генерация выражения реляционной алгебры title StarsIn <condition> <tuple> IN name <attribute> birthdate LIKE ‘%1960’ starName MovieStar Тема 6
Пример:Логический план запроса title starName=name StarsIn name birthdate LIKE ‘%1960’ MovieStar Тема 6
Пример:Улучшенный логический план запроса title Можно ли выполнить проекцию раньше, в StarsIn? starName=name StarsIn name birthdate LIKE ‘%1960’ MovieStar Тема 6
Пример: Оценка размеров результата нужен ожид.размер StarsIn MovieStar P s Тема 6
Пример: Один физический план Параметры: порядок соедин., размер памяти, атрибуты проекции, ... Hash join Параметры: условия выборки... Просмотр индекса Последов. просмотр StarsIn MovieStar Тема 6
Пример:Оценка стоимости L.Q.P P1 P2 …. Pn C1 C2 …. Cn Выбрать лучший! Тема 6
Обзор изложения в книге Глава 15 15.1,15.2 Физические операторы и их реализация - Выборка, сортировка, …. - Простейшая стоимостная модель. - однопроходные алгоритмы - Множества и наборы 15.3-15.6Реализация операторов соединения и оценка их стоимости - Многопроходные алгоритмы Тема 6
Глава 16 16.1 Синтаксический анализ 16.2 Алгебраические правила преобразования 16.3 От дерева синтаксического разбора -> к логическому плану запроса 16.4 Оценка стоимости операторов 16.5-16.7 Оптимизация, основанная на стоимости операторов Факультативное чтение: 15.7, 15.8, 15.9, 16.6, 16.7 Факультативное чтение : Оператор удаления дубликатов, группирования, агрегирования Тема 6
Оптимизация запросов – Порядок рассмотрения на лекциях • Уровень реляционной алгебры • Уровень детального плана • Оценка стоимости • Без индексов • С индексами • Генерация и сравнение планов Тема 6
Оптимизация средствами реляционной алгебры • Правила преобразования/трансформации (эквивалентность результата ) • Какие преобразования являются «полезными»? Тема 6
Пример правила:Естественные соединения, декартовы произведения и объединения – коммутативны и ассоциативны R S = S R (R S) T = R (S T) Замечание: • Порядок атрибутов в отношении не важен • Правило может быть выражено в форме дерева T R R S S T Тема 6
Правила: Естественные соединения, декартовы произведения и объединения R S = S R (R S) T = R (S T) 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 Тема 6
Правила:Выборки sp1 [ sp2 (R)] [ sp1 (R)] US [ sp2 (R)], R-множество sp1 & p2(R) = sp1 | p2(R) = Наборы и множества R = {a,a,b,b,b,c}, S = {b,b,c,c,d}, RUS = ? • Альтернатива 1 SUM RUS = {a,a,b,b,b,b,b,c,c,c,d} • Альтернатива 2 MAX RUS = {a,a,b,b,b,c,c,d} Тема 6
При альтернативе 2(MAX) работает следующее правило:sp1 |p2 (R) = sp1(R) U sp2(R) Пример: R={a,a,b,b,b,c} P1 выполняется для кортежей a,b; P2 - для b,c sp1 | p2 (R) = {a,a,b,b,b,c} sp1(R) = {a,a,b,b,b} sp2(R) = {b,b,b,c} sp1(R) U sp2(R) = {a,a,b,b,b,c} Если же объединяются выборки из разных таблиц, то альтернатива 1 имеет больше смысла Тема 6
Принимаемое решение -> Использовать “SUM” альтернативу, когда объединяются наборы -> Некоторые правила не работают для наборов Например, если A=B=C={x}, (A ÇB(B ÈBC))¹ (A ÇBB) ÈB(A ÇBC) Тема 6
Правила:Комбинированиеs + Пусть p = предикат с атрибутами только из R q = предикат с атрибутами только из S m = предикат с атрибутами только из R,S sp (R S) = [sp (R)] S sq (R S) =R [sq (S)] Некоторые правила могут быть выведены sp&q (R S) = [sp (R)] [sq (S)] sp&q&m (R S) = sm [(sp (R)) (sq (S))] sp|q (R S) = [(sp (R)) S] U [R (sq (S))] Тема 6
--> Пример вывода (остальное – дома): sp&q (R S) = sp[sq (R S) ] = sp[ R sq (S) ] = [sp (R)] [sq (S)] Тема 6
pxz {sp [ px (R) ]} px Правила:Комбинирование p,s Пусть x = подмножество атрибутов R z = атрибуты предиката P (подмножество атрибутов R ) px[sp (R) ] = Тема 6
pxy{[pxz (R) ] [pyz (S) ]} Правила: Комбинированиеp, Пусть x = подмножество атрибутов R y = подмножество атрибутов R z = пересечение атрибутов R,S pxy (R S) = pxy {sp [pxz’(R) pyz’ (S)]} где z’ = z U {атрибуты, используемые в P } pxy {sp (R S)} = Тема 6
Правила: Комбинированиеs, U sp(R U S)= sp(R) U sp(S) sp(R - S)= sp(R) - S = sp(R) - sp(S) Тема 6
Какие преобразования «полезны»? sp1&p2 (R) sp1 [sp2 (R)] sp (R S) [sp (R)] S R S S R px [sp(R)] px {sp [pxz(R)]} Тема 6
Здравый смысл: проекция как можно раньше Пример: R(A,B,C,D,E) x={E} P: (A=3) (B=“cat”) px {sp(R)} в сравнениисpE {sp{pABE(R)}} однако, если имеются индексы поA,B B = “cat” A=3 Пересечение указателей дает быстрый доступ к соответствующим кортежам Тема 6
Резюме: • Не существует всегда полезных преобразований • Как правило, полезны ранние выборки В книге приводятся примеры других преобразований • Удаление общих подвыражений • Удаление дубликатов Тема 6
Оценка стоимости плана запроса (1) Оценка размера результата (2) Оценка количества операций IO Для (1): • Хранить статистику для отношения R • T(R) : количество кортежей в R • S(R) : количество байт в каждом кортеже R • B(R): количество блоков для всех кортежей R • V(R, A) : количество различных значений атрибута А в отношении R Тема 6
A B C D cat 1 10 a Example R A: 20 байт, симв. B: 4 байта, целое C: 8 байт, дата D: 5 байт, симв. 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
T(R) V(R,Z) Оценка размера для W = R1 x R2T(W) =T(R1) T(R2)S(W) =S(R1) + S(R2)Оценка размера для W = sA=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 W = sz=val(R) T(W) = dog 1 30 a dog 1 40 c bat 1 50 d Тема 6
Предположение:Значения атрибута Z из предиката выборки равномерно распределены среди возможных V(R,Z) значенийАльтернативное предположение:Значения атрибута Z из предиката выборки равномерно распределены среди возможных из области допустимыхзначений DOM(R,Z) Тема 6
Пример R Альтерн.предположение V(R,A)=3 DOM(R,A)=10 V(R,B)=1 DOM(R,B)=10 V(R,C)=5 DOM(R,C)=10 V(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 T(R) DOM(R,Z) W = sz=val(R) T(W) = Тема 6
Число элементов(cardinality) выборки SC(R,A) = среднее число записей, удовлетворяющих условию равенства для R.A T(R) V(R,A) SC(R,A) = T(R) DOM(R,A) Тема 6
Как быть в случае W = sz 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) в интервал ) Z Min=1 W= sz 15 (R) Max=20 Тема 6
X Y = Случай 1 Так же как и для R1 x R2 Оценка размерадля W = R1 R2 Пусть x = атрибуты R1 y = атрибуты R2 Тема 6
Предположения: V(R1,A) V(R2,A) Каждое значение A из R1 имеется и в R2 V(R2,A) V(R1,A) Каждое значение A из R2имеется и в R1 “включение множеств значений” Sec. 16.4.4 Случай 2 W = R1 R2 X Y = A R1 A B C R2 A D Тема 6
Вычисление T(W)когда V(R1,A) V(R2,A) R1 A B C R2 A D взять 1 кортеж соответствие 1 кортеж соответствует T(R2) кортежам... V(R2,A) следовательно T(W) = T(R2) T(R1) V(R2, A) Тема 6
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
Случай 2 С альтернативным предположением Значения равномерно распределены по домену 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) Предполаг.одинаковым Тема 6
Во всех случаях:S(W) = S(R1) + S(R2) - S(A)размер атрибута A Тема 6
Используя подобные идеи, можно оценить размер: pAB (R) ….. Раздел. 16.4.2 sA=a&B=b (R) …. Раздел16.4.3 R S с общими атрибутами A,B,C -16.4.5 Объединение, пересечение, разность16.4.7 Тема 6