Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Тоу Д. -> "Настройка SQL. Для профессионалов" -> 146

Настройка SQL. Для профессионалов - Тоу Д.

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 140 141 142 143 144 145 < 146 > 147 148 149 150 151 152 .. 161 >> Следующая


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

10. Решения сложных проблем

ПРИМЕЧАНИЕ -------------------------------------------------------------------------

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

Если денормализация выполнена идеально, с тщательно проработанными триггерами базы данных, которые автоматически поддерживают точную синхронизацию денормализованных данных, то функционально она может быть безопасна. Однако ее нельзя назвать бесплатной — она требует дискового пространства и замедляет добавление, обновление и удаление данных, которые должны задействовать триггеры, отвечающие за синхронизацию данных. Столкнувшись с неизбежными затратами на денормализацию, я рекомендую применять ее только если вы встречаетесь со специфичным высокоприоритетным оператором SQL, который невозможно сделать достаточно быстрым другими способами. Ho это действительно очень редкий случай.
Приложение А. Решения задач

В этом приложении содержатся решения для задач из глав с 5 по 7.

Решения для задач из главы 5

Далее приведены решения для упражнений из главы 5.

Упражнение 1

На рис. А.1 показано решение для упражнения 1.

С04

20

Ў 1

Z

D 0.1 R 0.2*

Рис. А.1. Решение для упражнения 1

У решения этой задачи есть определенная тонкость. Тонкость этого упражнения заключается в том, что для поиска коэффициентов фильтрации узлов RhD запросы вообще не нужны (кроме общего количества строк для таблиц). Коэффициенты можно вычислить исходя из точного соответствия уникальных индексированных имен для каждого из этих узлов, однозначного соответствия для R и списка IN для D. Чтобы найти коэффициенты фильтрации, нужно только подсчитать 1/R и 2/D, где DhR это количество строк в соответствующих таблицах. Вы не забыли добавить звездочку (*) к коэффициенту фильтрации для R, чтобы указать, что это уникальное условие? Оказывается, это важно для оптимизации некоторых запросов. Можно было бы добавить звездочку для условия, налагаемого на таблицу D, если бы ему сопоставлялось одно имя вместо списка имен.

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

Приложение А. Решения задач

ность идеальна, то количество строк, возвращаемых соединениями, будет в точности равно количеству строк в таблицах с детализированными данными. Таким образом, детальные коэффициенты соединения равны просто d/m, где d — количество строк в верхней детальной таблице, am — количество строк в нижней главной таблице. Главные коэффициенты соединения с теми же предположениями равны в точности 1,0, и их указывать не требуется.

Упражнение 2

На рис. А.2 показано решение для упражнения 2.

CM

І

і

1

M 04 200

IT

Cat

і;

В 0.08*

Рис. А.2. Решение для упражнения 2

В этой задаче вам нужны те же сокращения при поиске коэффициентов соединения и коэффициента фильтрации для В, что и для упражнения 1. Вы не забыли добавить * для уникального фильтра для В? He забыли указать направление внешних соединений с Z и R при помощи указателей стрелки посередине соответствующих связей?

Упражнение 3

На рис. А.З показано решение для упражнения 3.

В этой задаче для поиска коэффициентов соединения и коэффициента фильтрации для В вам понадобятся те же предположения, что и для упражнения 1. He забудьте добавить * для уникального фильтра, накладываемого на таблицу В. Также не забудьте указать направление внешних соединений с С и PL при помощи указателей стрелки посередине соответствующих связей.

Соединения с ITxR и IV от ITx и P соответственно являются соединениями типа «один к одному», которые обозначаются при помощи стрелок на обоих концах связи. Коэффициенты фильтрации на обоих концах этих соединений вида «один к одному» равны в точности 1,0. Это особый класс таблиц с детализированными данными, часто встречающийся в реальных приложениях. Детализированные данные, зависят от времени, и в этих таблицах существует по одной строке для каждой подходящей главной строки, соответствующей любой эффективной дате. Например, несмотря на то, что у вас может быть несколько налоговых ставок для некоей налоговой сущности, на данный момент действующей будет только одна из них,
Предыдущая << 1 .. 140 141 142 143 144 145 < 146 > 147 148 149 150 151 152 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100