Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Гадасин_Д_В_Методические_указания_по_выполнению_практических_занятия

.pdf
Скачиваний:
51
Добавлен:
31.07.2024
Размер:
1 Мб
Скачать
☆

пользоваться правилом, которое подразумевает, что типичный запрос с условием выбора,

заданным в виде неравенства, возвращает около трети всех кортежей исходного отношения.

Таким образом прогнозируемое значение T(S) выглядит как:

Т(S)=T(R)/3

Задача к решению 9.

Пусть есть отношение R(a,b,c) и оператор S=σa=10 AND b<20(R). Для данного случая

T(R)=10000 и V(R,a)=50. Необходимо оценить T(S).

Исходные данные для задачи – 25 вариантов

Вариант

Оператор S

T(R)

V(R,a)

 

 

 

 

0

a=10 AND b<20

10000

50

 

 

 

 

1

a=23 AND b<30

14000

38

 

 

 

 

2

a=15 AND b<21

12000

61

 

 

 

 

3

a=17 AND b<22

15000

79

 

 

 

 

4

a=9 AND b<53

21000

159

 

 

 

 

5

a=20 AND b<24

13000

180

 

 

 

 

6

a=35 AND b>33

9000

45

 

 

 

 

7

a=17 AND b<29

16000

93

 

 

 

 

8

a=15 AND b<27

18000

178

 

 

 

 

9

a=16 AND a<11

19000

240

 

 

 

 

10

a=28 AND b<39

11000

13

 

 

 

 

11

a=61 AND b>26

23000

79

 

 

 

 

12

a=17 AND b<60

36000

121

 

 

 

 

13

a=18 AND b<41

39000

150

 

 

 

 

14

a=27 AND b<32

18000

88

 

 

 

 

15

a=80 AND b<64

25000

93

 

 

 

 

16

a=16 AND b<53

31000

46

 

 

 

 

17

a=47 AND b<65

26000

10

 

 

 

 

18

a=22 AND b<37

19000

28

 

 

 

 

19

a=9 AND b<18

37000

159

 

 

 

 

20

a=37 AND b<47

28000

211

 

 

 

 

21

a=160 AND b>92

17000

53

 

 

 

 

22

a=45 AND b<14

6000

89

 

 

 

 

23

a=22 AND b<69

14000

100

 

 

 

 

24

a=84 AND a<60

23000

147

 

 

 

 

25

a=110 AND b>54

19000

79

 

 

 

 

Разбор 0 варианта

1.Количество значений в пределах столбца-атрибута a равных 10 по условию

равняется 50. С этим условием T(S) оценивается как T(R) / 50.

31

2.Так как у оператора есть второе условие, по которому выбираются значения столбца-атрибута b меньшие 20, T(S) оценивается как T(R) / 3

3.Учитывая то, что должны выполняться оба условия одновременно, в качестве оценки T(S) можно принять величину T(R) / (50*3) = 67, полагая, что примерно 1/50 –я часть кортежей R удовлетворяет условию a=10, а 1/3-я – условию b<20.

4.Важный момент!

При решении задания необходимо обращать внимание на внутреннею противоречивость. Пусть есть оператор S=σa=10 AND a>20(R). В соответствии с указанным правилом T(S)=T(R)/(3 V(R,a)), т.е. отношение S должно было бы содержать примерно 67

кортежей. Однако совершенно очевидно, что кортежей, удовлетворяющих условиям a=10

и a>20 одновременно, не существует, так что в действительности T(S)=0. Выполняя перезапись логического плана, оптимизатор запросов руководствуется, помимо всего прочего, множеством правил, отвечающих различным частным случаям. При обработке рассматриваемого примера оптимизатор должен применить правило сведения условия к значению FALSE и принять в качестве результата операции пустое множество.

Задача 10

Анализ стоимости операций.

Оценка размера результат оператора выбора (дизъюнкция)

Если критерий выбора образован на основе дизъюнкции (OR) отдельных условий

S=σa=10 OR b<20(R), тогда ожидаемый размер итогового отношения не столь очевиден. Одно из подходящих соображений состоит в том, что ни один кортеж, якобы не удовлетворяет одновременно обоим условиям, так что размер итогового отношения можно представить как сумму количеств кортежей, отвечающих каждому из условий. Подобная оценка, как правило, оказывается завышенной и подчас способна привести к совершенно абсурдному заключению о том, будто в итоговом отношении S больше кортеже, нежели в исходном R.

Другой несколько более корректный подход предполагает использование в качестве оценки размера результата S минимального из двух значений – размера отношения-операнда R и

суммы количеств кортежей, удовлетворяющих отдельным условиям a и b.

Более точная оценка величины S получается в том случае, если условия a и b

рассматриваются как независимые. Если R содержит n кортежей, m1 из которых удовлетворяют условию a, а m2 – условию b, то количество кортежей в S можно представить как:

T(S)=n(1-(1-m1/n) (1-m2/n)),

32

где

1-m1/n – доля кортежей, не удовлетворяющих условию а; 1-m2/n – часть кортежей, которые не отвечают условию b.

Произведение этих величин представляет часть кортежей R, которые не включаются в S, а разность единицы и произведения – ту долю кортежей R, которые, напротив,

попадают в S.

Задача к решению 10.

Пусть есть отношение R(a,b) с T(R)=10 000 кортежей и оператор S=σa=10 OR b<20(R).

Пусть V(R,a) = 50.

1.Оценить размер итогового отношения как сумму количеств кортежей,

отвечающих каждому из условий.

2.Сделать более точную оценку итогового отношения, при условии, что a и b

рассматриваются как независимые.

Исходные данные для задачи – 25 вариантов

Вариант

Оператор S

T(R)

V(R,a)

 

 

 

 

0

a=10 OR b<20

10000

50

 

 

 

 

1

a=23 OR b<30

14000

38

 

 

 

 

2

a=15 OR b<21

12000

61

 

 

 

 

3

a=17 OR b<22

15000

79

 

 

 

 

4

a=9 OR b<53

21000

159

 

 

 

 

5

a=20 OR b<24

13000

180

 

 

 

 

6

a=35 OR b>33

9000

45

 

 

 

 

7

a=17 OR b<29

16000

93

 

 

 

 

8

a=15 OR b<27

18000

178

 

 

 

 

9

a=16 OR a<11

19000

240

 

 

 

 

10

a=28 OR b<39

11000

13

 

 

 

 

11

a=61 OR b>26

23000

79

 

 

 

 

12

a=17 OR b<60

36000

121

 

 

 

 

13

a=18 OR b<41

39000

150

 

 

 

 

14

a=27 OR b<32

18000

88

 

 

 

 

15

a=80 OR b<64

25000

93

 

 

 

 

16

a=16 OR b<53

31000

46

 

 

 

 

17

a=47 OR b<65

26000

10

 

 

 

 

18

a=22 OR b<37

19000

28

 

 

 

 

19

a=9 OR b<18

37000

159

 

 

 

 

20

a=37 OR b<47

28000

211

 

 

 

 

21

a=160 OR b>92

17000

53

 

 

 

 

22

a=45 OR b<14

6000

89

 

 

 

 

33

23

a=22 OR b<69

14000

100

 

 

 

 

24

a=84 OR a<60

23000

147

 

 

 

 

25

a=110 OR b>54

19000

79

 

 

 

 

Разбор 0 варианта

1. Количество кортежей, удовлетворяющих условию a=10, можно представить

как T(R) / V(R,a) = 200, а число кортежей, соответствующих условию b<20 – как T(R) / 3 ≈

3334.

2.Простейшая оценка размера S выглядит как сумма двух значений, т.е. 3 534.

3.Если допустить, что условия a=10 и b<20 являются независимыми, то

( ) = 10 000 (1 − (1 −

200

) (1 −

3 333

) = 3 466

 

 

10 000

10 000

4. В данном примере оценки различаются порядка 3%, что не является критическим значением при выборе наилучшего физического плана.

Задача 11

Анализ стоимости операций.

Оценка размера результата оператора соединения

Оценка размера результата соединения ( ) трактуется в соответствии со следующими правилами:

1.Количество кортежей в итоговом отношении, возвращаемого оператором соединения посредством равенства, после предполагаемого изменения имен атрибутов вычисляется так же, как и в случае естественного соединения.

2.Результаты выполнения тета-соединений других разновидностей оцениваются так, как если бы речь шла об операции декартова произведения,

сопровождаемой операцией выбора:

а) количество кортежей в отношении, служащем итогом работы оператора декартова произведения, равно произведению размеров отношений-операндов;

б) объем набора кортежей, удовлетворяющих условию равенства, можно оценить,

используя приемы, разработанные для прогнозирования результатов естественного соединения;

в) условия, включающие неравенства с участием двух атрибутов, например R.a<S.b,

следует трактовать как неравенства вида R.a<c, т.е. есть основания считать, что такие условия обладают коэффициентом «избирательности», равным 1/3, если, как можно полагать, условия относительно редки и 1/2 – в противном случае.

34

Пусть естественно соединение R(X,Y) S(Y,Z) двух отношений R и S выполняется на основе равенства двух атрибутов, т.е. Y представляет единственный атрибут каждого из отношений, хотя X и Z могут быть произвольными подмножествами атрибутов.

Основная проблема заключается в том, что заранее не известно, каким образом связаны значения атрибутов Y отношений R и S, поскольку:

1.Множества значений этих атрибутов могут не пересекаться, т.к. соединения окажется пустым и T(R S)=0.

2.Атрибут Y способен выполнять функцию первичного ключа S и внешнего ключа R, так что каждый кортеж R соединяется с единственным кортежем S и

T(R S)=T(R).

3.Большинство кортежей R и S может иметь одинаковые значения компонентов

Y и в этом случае T(R S)≈T(R)T(S)

При решении задачи соединения основные усилия необходимо направить на анализ общих ситуаций, при этом принимаются два упрощающих положения.

1. Принадлежность одного множества значений совпадающего атрибута другому. Если Y является общим атрибутом отношений R и S, тогда значения Y в каждом отношении выбираются в порядке их следования в списке (y1, y2, y3, …). Как следствие,

если V(R,Y)≤V(S,Y), тогда каждое значение атрибута Y в R будет присутствовать и в компонентах атрибута Y в S.

2. Сохранность множеств значений несовпадающих атрибутов. При соединении отношения R с другим отношением множество значений атрибута A, не являющегося общем, не сокращается, т.е. если атрибут А содержится в схеме R, но отсутствует в схеме

S, имеет место соотношение V(R S,A)=V(R,A). Порядок соединения R и S в данном случае не важен, поэтому ограничение можно представить как V(S R,A)=V(R,A).

Первое допущение, касающееся принадлежности одного множества значений атрибута соединения другому, на практике с легкостью нарушается, но удовлетворяется в том случае, если, скажем Y служит первичным ключом S и внешним ключом R. Это условие может выполняться и в других ситуациях, например, если S содержит много значений Y,

тогда заданное значение Y в R с большей долей вероятности будет присутствовать и в S.

Второе допущение, сохранность множеств значений атрибутов, не являющихся общими для нескольких отношений, удовлетворяется в тех случаях, когда атрибут соединения R S является первичным ключом S и внешним ключом R. В действительности единственная возможность нарушения обусловлена появлением «висящих» кортежей R, не способных к соединению ни с одним кортежем S, наличие висящих кортежей R не означает,

35

что условие утрачивает силу. Принимая во внимание указанные допущения, возможно оценить размер отношения R(X,Y) S(Y,Z) следующим образом. Пусть V(R,Y)≤V(S,Y).

Тогда каждый кортеж t отношения R может быт соединен с определенным кортежем S с

вероятностью 1/V(S,Y). Поскольку количество кортежей в S равно T(S), прогнозируемое число кортежей, способных к соединению с t, оценивается величиной T(S)/V(S,Y), но R

содержит T(R) кортежей, поэтому примерный размер R S равен T(R)T(S)/V(S,Y). Если,

напротив, V(R,Y)>V(S,Y), то исходя из симметричных рассуждений

T(R S)=T(R)T(S)/V(R,Y). Если трактовать оба случая в совокупности, в качестве знаменателя дроби следует выбрать наибольшее из значений V(R,Y) и V(S,Y):

T(R S)=T(R)T(S)/max(V(R,Y),V(S,Y)).

Задача к решению 11.

Пусть есть три отношения.

R(a,b)

S(b,c)

U(c,d)

 

 

 

T(R) = A

T(S) = C

T(U) = F

 

 

 

V(R,b) = B

V(S,b) = D

 

 

 

 

 

V(S,c) = E

V(U,c) = G

 

 

 

Необходимо вычислить естественное соединение вида R S U двумя способами:

1.Выполнение оператора сгруппировать в виде (R S) U.

2.Выполнение оператора сгруппировать в виде R (S U).

Исходные данные для задачи – 25 вариантов

Вариант

A

B

C

D

E

F

G

 

 

 

 

 

 

 

 

0

1000

20

2000

50

100

5000

500

 

 

 

 

 

 

 

 

1

1500

40

1700

60

280

4000

390

 

 

 

 

 

 

 

 

2

2100

70

2300

71

190

4200

500

 

 

 

 

 

 

 

 

3

5000

100

1000

100

410

3500

1100

 

 

 

 

 

 

 

 

4

6400

50

2300

120

200

6000

700

 

 

 

 

 

 

 

 

5

7200

60

3000

200

300

5000

500

 

 

 

 

 

 

 

 

6

6000

70

4000

220

440

4000

100

 

 

 

 

 

 

 

 

7

5000

80

5000

300

100

4000

200

 

 

 

 

 

 

 

 

8

4000

70

6000

400

150

3000

180

 

 

 

 

 

 

 

 

9

6000

100

5000

310

180

4000

200

 

 

 

 

 

 

 

 

10

5000

200

2000

100

150

3000

500

 

 

 

 

 

 

 

 

11

1000

50

4000

130

120

4000

200

 

 

 

 

 

 

 

 

36

( S) ( )

12

3000

100

5000

60

80

5000

130

 

 

 

 

 

 

 

 

13

4000

500

6000

100

140

2000

100

 

 

 

 

 

 

 

 

14

8000

400

2100

400

300

1000

200

 

 

 

 

 

 

 

 

15

8000

200

3000

200

120

4000

300

 

 

 

 

 

 

 

 

16

7300

50

4000

130

400

1300

100

 

 

 

 

 

 

 

 

17

4000

40

5000

500

150

3000

90

 

 

 

 

 

 

 

 

18

6000

210

3500

300

180

2000

60

 

 

 

 

 

 

 

 

19

6000

340

6400

220

100

1400

60

 

 

 

 

 

 

 

 

20

8000

200

7000

200

130

1500

50

 

 

 

 

 

 

 

 

21

3000

80

4000

400

150

3000

100

 

 

 

 

 

 

 

 

22

1000

50

5000

310

170

4000

100

 

 

 

 

 

 

 

 

23

1400

30

2000

200

60

3400

400

 

 

 

 

 

 

 

 

24

5600

140

1000

90

100

1000

130

 

 

 

 

 

 

 

 

25

4000

50

4000

80

140

4000

500

 

 

 

 

 

 

 

 

Решение 0 варианта

1.

На основании указанного правила

( S) =

( ) ( )

получаем

 

 

max( ( , ), ( , ))

( S) =

1 000 2 000

= 40 000.

 

 

 

 

50

 

 

 

 

 

 

 

 

 

 

 

 

2.Далее результат R S подлежит соединению с U. Выражение оценки размера

итогового отношения можно записать как max( (R S, ), ( , )). В соответствии с предположением о сохранности множеств значений несовпадающих атрибутов (R S, c) = ( , ) = 100, т.е. при выполнении соединения ни одно из значений атрибута с не

пропадает.

3.В этом случае прогнозируемым значением количества кортежей в

R S U =

40 000 5 000

= 400 000.

max(100,

500)

 

 

4.Выполнение операции R S U можно начать с соединения S c U. В этом

случае оценкой размера ( ) =

(S) ( )

 

=

2 000 5 000

= 20 000.

 

 

 

 

 

max( (S, ), ( , ))

500

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(R) (S )

5.

Ожидаемый размер итогового отношения равен

 

 

. Если

 

max( (R, ), (S U, ))

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

(S U, b) = ( , ) = 50, то R S U = 1 000 20 000 = 400 000.

50

Задача 12

Выбор плана с учетом стоимости.

При выборе логического плана или конструируй на основе него физический план,

оптимизатор запросов нуждается в получении оценок стоимости вычисления определенных

37

выражений. Наиболее важная и сложная проблема анализа плана запросов связана с выбором порядка соединения нескольких отношений. Пусть, определяющим компонентом стоимости вычисления выражения является количество требуемых операций ввода-вывода.

На значении этого параметра оказывают влияние следующие факторы:

1.Типы и разновидности логических операторов, предназначенных для практического воплощения запроса, которым отдано предпочтение в процесс выбора логического плана.

2.Размеры промежуточных наборов данных.

3.Типы физических операторов, призванных реализовать операторы логического плана, например, за счет использования однопроходного или двухпроходного алгоритма соединения либо принятия решения о необходимости сортировки определенного отношения.

4.Порядок выполнения одноименных операций (особенно операций

соединения)

5.Методы передач данных от одного физического оператора к другому.

Осуществление эффективного выбора плана требует разрешения множества проблем:

- каким образом информация БД помогает получать значения «размерных» статистических характеристик, необходимых для прогнозирования объемов отношений,

возвращаемых теми или иными операторами;

-применение алгебраических законов, способствующих отысканию предпочтительного логического плана запроса;

-анализ стоимости операций, подтверждающих жизнеспособность и состоятельность эвристических правил, применяемых для преобразования логических планов;

-сопоставление анализа всех физических планов, которые возможно сконструировать на основе выбранного логического плана;

-определение методов сокращения количества планов, сохраняющие потенциально наиболее эффективный план среди тех, которые подлежат дальнейшему анализу.

Помимо того, что СУБД зачастую поддерживают функции вычисления гистограмм распределения значений атрибутов, если значение V(R,a) для конкретного атрибута а отношения R не слишком велико, гистограмма может представлять количества (доли количества) кортежей, содержащих каждое из значений а. Если же различных значений атрибута а чрезмерно много, в гистограмме отдельно фиксируются сведения только о часто встречающихся значениях, а количества всех других значений подсчитываются группами.

К числу наиболее употребительных относятся гистограммы перечисленных ниже типов:

38

1.С равной шириной. Выбираются значения ширины w диапазона и константа

v0 и сохраняются уровни количеств кортежей, содержащих значения v, которые принадлежат диапазонам v0≤v<v0+w, v0+w≤v<v0+2w и т.д. В качестве v0 могут быть принят минимально возможное значение либо текущая нижняя граница значений атрибута. В

последнем случае при появлении нового значения нижней границы величина v0

уменьшается на w и в гистограмму добавляется новый начальный диапазон.

2.С равной высотой. Подобные гистограммы реализуют модель перцентилей,

делящих область изменения значений на интервалы с равной вероятностью попадания значений.

3. С наиболее часто встречающимися значениями. Фиксируются количества наиболее популярных значений. Подобная информация нередко сопровождается обобщенными сведениями о группах значений либо используется в совокупности с гистограммами с равной шириной и высотой.

Одно из преимуществ, предоставляемых механизмом ведения гистограмм, состоит в обеспечении большей точности прогнозирования размеров итоговых отношений,

возвращаемых операторами соединения, в сравнении с простыми методами предсказания.

В частности, если некоторое значение общего атрибута явно упоминается в гистограммах для обоих отношений, подлежащих соединению, это дает возможность определить количество кортежей, соединенных на основе такого значения совершенно точно. При наличии гистограмм с равной шириной, содержащих одинаковые наборы диапазонов изменения значений общих атрибутов обоих отношений, вполне достаточно получить оценки результатов соединения подмножеств кортежей, относящихся к соответствующим диапазонам и суммировать эти оценки. Результат можно считать вполне приемлемым,

поскольку в подобном случае к соединению будут способны только кортежи, обладающие равными значениями из совпадающих диапазонов.

Задача к решению 12.

Для отношений R(a,b) и S(b,c) получены гистограммы, содержащие сведения о трех наиболее часто упоминаемых значениях общего атрибута b и о группах остальных значений в совокупности. Гистограмма, представляющая статистику распределения значений R.b,

имеет следующий вид:

1:A; 0:B; 5:C; другие значения:D.

Иными словами, из 1000 кортежей R A в компонентах b содержат значения 1, B

значение 0 и C – значение 5. Помимо того, D кортежей обладают значениями атрибута b,

39

заведомо отличными от 1, 0 и 5, причем ни одно из таких значений не присутствует в кортежах R 100 или более раз.

Допустим, что гистограмма, описывающая характеристики значений S.b, такова:

0:E; 1:F; 2:G; другие значения:H

Также известны значения V(R,b) и V(S,b).

Необходимо оценить размер результата вычисления оператора ( , ) ( , ).

Ответ округлите до целого числа.

Исходные данные для задачи – 25 вариантов

Вариант

A

B

C

D

E

F

G

H

V(R,b)

V(S,b)

 

 

 

 

 

 

 

 

 

 

 

0

200

150

100

550

100

80

70

250

14

13

 

 

 

 

 

 

 

 

 

 

 

1

302

111

110

580

124

90

69

261

16

14

 

 

 

 

 

 

 

 

 

 

 

2

249

131

103

600

101

71

75

280

18

17

 

 

 

 

 

 

 

 

 

 

 

3

274

148

105

570

123

78

83

257

21

20

 

 

 

 

 

 

 

 

 

 

 

4

248

122

125

704

114

83

87

291

15

34

 

 

 

 

 

 

 

 

 

 

 

5

259

143

130

688

135

93

74

267

13

19

 

 

 

 

 

 

 

 

 

 

 

6

237

105

126

635

122

74

89

285

21

17

 

 

 

 

 

 

 

 

 

 

 

7

251

216

108

701

141

84

68

291

24

16

 

 

 

 

 

 

 

 

 

 

 

8

222

204

101

589

138

91

73

257

17

23

 

 

 

 

 

 

 

 

 

 

 

9

249

199

100

610

125

102

76

268

16

17

 

 

 

 

 

 

 

 

 

 

 

10

257

180

109

733

128

87

81

251

14

19

 

 

 

 

 

 

 

 

 

 

 

11

289

140

115

666

131

69

84

303

15

14

 

 

 

 

 

 

 

 

 

 

 

12

294

143

119

800

112

73

76

280

23

16

 

 

 

 

 

 

 

 

 

 

 

13

301

159

105

763

108

75

91

271

19

8

 

 

 

 

 

 

 

 

 

 

 

14

260

182

103

575

119

81

86

251

12

18

 

 

 

 

 

 

 

 

 

 

 

15

257

170

111

610

103

89

74

313

11

15

 

 

 

 

 

 

 

 

 

 

 

16

260

148

114

680

122

92

81

324

16

16

 

 

 

 

 

 

 

 

 

 

 

17

270

150

118

711

134

74

73

289

18

17

 

 

 

 

 

 

 

 

 

 

 

18

266

180

123

692

147

99

79

278

9

13

 

 

 

 

 

 

 

 

 

 

 

19

259

138

126

724

124

82

90

263

15

15

 

 

 

 

 

 

 

 

 

 

 

20

241

149

129

788

116

75

74

305

17

21

 

 

 

 

 

 

 

 

 

 

 

21

296

150

103

767

109

72

76

299

24

13

 

 

 

 

 

 

 

 

 

 

 

22

250

160

131

743

105

88

81

285

8

15

 

 

 

 

 

 

 

 

 

 

 

23

210

301

115

769

116

68

76

314

17

21

 

 

 

 

 

 

 

 

 

 

 

24

201

221

122

599

123

91

85

298

19

18

 

 

 

 

 

 

 

 

 

 

 

25

238

180

106

637

118

88

67

276

21

16

 

 

 

 

 

 

 

 

 

 

 

Решение 0 варианта

1.Так как ( , ) = 14 и ( , ) = 13, 550 кортежей R с неизвестными

значениями атрибута b распределены по 14 – 3 = 11 группам по (в среднем) 550 / 11 = 50

40