- Дипломы
- Курсовые
- Рефераты
- Отчеты по практике
- Диссертации
Оптимизация запросов в sql.
Внимание: Акция! Курсовая работа, Реферат или Отчет по практике за 10 рублей!
Только в текущем месяце у Вас есть шанс получить курсовую работу, реферат или отчет по практике за 10 рублей по вашим требованиям и методичке!
Все, что необходимо - это закрепить заявку (внести аванс) за консультацию по написанию предстоящей дипломной работе, ВКР или магистерской диссертации.
Нет ничего страшного, если дипломная работа, магистерская диссертация или диплом ВКР будет защищаться не в этом году.
Вы можете оформить заявку в рамках акции уже сегодня и как только получите задание на дипломную работу, сообщить нам об этом. Оплаченная сумма будет заморожена на необходимый вам период.
В бланке заказа в поле "Дополнительная информация" следует указать "Курсовая, реферат или отчет за 10 рублей"
Не упустите шанс сэкономить несколько тысяч рублей!
Подробности у специалистов нашей компании.
Только в текущем месяце у Вас есть шанс получить курсовую работу, реферат или отчет по практике за 10 рублей по вашим требованиям и методичке!
Все, что необходимо - это закрепить заявку (внести аванс) за консультацию по написанию предстоящей дипломной работе, ВКР или магистерской диссертации.
Нет ничего страшного, если дипломная работа, магистерская диссертация или диплом ВКР будет защищаться не в этом году.
Вы можете оформить заявку в рамках акции уже сегодня и как только получите задание на дипломную работу, сообщить нам об этом. Оплаченная сумма будет заморожена на необходимый вам период.
В бланке заказа в поле "Дополнительная информация" следует указать "Курсовая, реферат или отчет за 10 рублей"
Не упустите шанс сэкономить несколько тысяч рублей!
Подробности у специалистов нашей компании.
Код работы: | K000870 |
Тема: | Оптимизация запросов в sql. |
Содержание
Негосударственное образовательное учреждение высшего образования Московский технологический институт Факультет Техники и современных технологий Кафедра Информатики и автоматизации КУРСОВАЯ РАБОТА по дисциплине«Базы данных» на тему: «Оптимизация запросов в sql» Уровень образования: Бакалавриат Направление: 230100 «Информатика и вычислительная техника» Профиль: «Автоматизированные системы обработки информации и управления» Выполнил: Студент 4-го курса Форма обучения: заочная Крюков Андрей Сергеевич Москва 2016 ОГЛАВЛЕНИЕ ВВЕДЕНИЕ 3 1.ОСНОВНЫЕ ПОНЯТИЯ И КЛАССИФИКАЦИЯ БАЗ ДАННЫХ И СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ 5 2. ЯЗЫК СТРУКТУРИРОВАННЫХ ЗАПРОСОВ SQL 16 2.1 Общие сведения об SQL 16 2.2 Структура и назначение операторов SQL 18 2.3. Достоинства и недостатки языка SQL 20 3. ОПТИМИЗАЦИЯ ЗАПРОСОВ 24 3.1 Поэтапная оптимизация запросов в РСУБД 25 3.2 Практика написания эффективных SQL-запросов 28 ЗАКЛЮЧЕНИЕ 31 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 33 ВВЕДЕНИЕ В начале XXI века наше общество находится в переходе от индустриального состояния к постиндустриальному. Происходит полная информатизация, то есть, развитие информационных технологий, обеспечивающие достижение, а также поддержание уровня информированности всех членов общества, который необходимо для улучшения условий жизни в обществе. Главнейшей составной частью всех информационных систем выступают базы данных (далее -БД). Они используются для хранения, а также обработки информации. На первом этапе появления БД существовали только в письменном виде. Однако развитие средств вычислительной техники обеспечило возможность создания и широкого использования автоматизированных информационных систем (далее –АИС)[25]. В результате, при использовании БД как безбумажной технологии, пользователи получают следующие преимущества: * компактность. Вся информация хранится в БД и нет нужды хранить большие бумажные картотеки; * скорость, которая намного выше обычной ручной обработки; * применимость. В любой момент доступна актуальная информация; * низкие трудозатраты. Не нужна утомительная ручная работа над данными. Для управления такими данными и обеспечения максимальной эффективности доступа к ним и были созданы системы для управления данными. Язык SQLявляется главным инструментом работы с БД, играет далеко не последнюю роль в вопросе разработки систем управления БД, а также администрирования БД. Выбранная тема данной курсовой работы является актуальной, поскольку БД во многих сферах очень объемны и естественно,с позиции быстродействия, в таких случаях стоит задуматься об эффективной работе с такими данными. Однако, не редко разработчики не думают об оптимизации SQL-запросов, полагаясь на то, что существующее на сегодняшний день аппаратное обеспечение сможет восполнить излишние затраты, которые возникают при выполнении неэффективных SQL-запросов. Конечно, существующие системы управления БД (далее - СУБД)включают в себя встроенные средства оптимизации запросов. Но, несмотря на это, необходимо понимать принципы работы этих средств для написания эффективных запросов[15]. Объект исследования - базы данных. Предмет исследования данной работы – оптимизация запросов в SQL. Целью данного курсового проекта является изучение технологии оптимизации запросов в SQL. Задачи, которые необходимо выполнить в курсовой работе: 1. Раскрыть сущность понятий баз данных, СУБД путем изучения классификации БД и СУБД; 2. Рассмотреть общеизвестные сведения SQL, а также структуру и назначение операторов SQL; 3. Рассмотреть оптимизацию запросов в РСУБД; 4. Изучить, как на практике написать эффективные SQL-запросы. В качестве основных авторов, при написании данной работы были использованы работы следующих авторов:Астахова И.Ф., Толстобров А.П., Мельников В.М.,БоуманДж.С., Эмерсон С.Л., Дарновски М., Гарсиа-Молина Г., Ульман Дж., Уидом Дж.,Дейт К.,Дарвен Х., Дунаев В.В.,Карпов Т.С., Кренке Д., Мирошниченко Г.,Соболь Б.В., Шкарина Л. 1ОСНОВНЫЕ ПОНЯТИЯ И КЛАССИФИКАЦИЯ БАЗ ДАННЫХ И СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ Есть множество определений термина «база данных», которые отражают в первую очередь субъективное мнение тех или же иных авторов, но единая общепризнанная формулировка отсутствует. Вот ряд определений: Под понятием БД понимают информационную модель, позволяющую в упорядоченном виде хранить информацию о группе объектов, которые обладают одинаковым наборомданных [27]. База данных — это совокупность данных, хранимых в соответствии с некоторой схемой данных, и манипулирование которыми выполняется в соответствии с установленными правилами исредствами для моделирования данных[6]. База данных — это организованная в соответствии с правилами и поддерживаемая в памяти ПК совокупность данных, которая характеризует актуальное состояние определенной предметной области и применяемая для удовлетворения потребностей пользователей в информации [13]. Однако, несмотря на то, что таких определений огромное множество, почти в каждом, явно или же неявно, присутствуют такие отличительные признаки[23]: 1. База данных хранится и обрабатывается в некоторой вычислительной системе. Так, любые вне компьютерные хранилища информации (библиотеки, архивы и картотеки) к базам данных не относятся. 2. Данные в БД структурированы логически (систематизированы) для обеспечения возможностей их эффективного поиска, а также обработки в вычислительной системе. Подобная структурированность подразумевает полное выделение составных частей (элементов), всех связей между ними, а также типизацию связей и элементов, при которой с типом элемента (связей) соотносится некоторая семантика, допустимые операции. 3. БД обязательно включает схему или же метаданные, описывающие логическую структуру базы в формальном виде (согласно некоторой метамодели). Базы данных являются важнейшей составной частью всех информационных систем, предназначенных для хранения и дальнейшей обработки больших объемов данных. Сначала подобные системы велись в письменном виде. Для этого использовались разнообразные картотеки, журналы, папки, библиотечные каталоги и пр. Любая информационная система должна выполнять 3 основные функции: * Ввод данных. Системы обязаны предоставлять возможность накопления и упорядочивания информации. Необходимо обеспечить просмотр данных, внесение в них требуемых изменений и дополнений для поддержания актуальности; * Запросы по данным. В системах должна существовать возможность поиска и просмотра отдельныхчастей накопленных данных; * Составление отчетов. Периодически появляется необходимость в обобщении и анализе большой группы данных (или даже всех данных) информационной системы, оформляя ее в виде отдельного документа. Обслуживание информационных систем, реализованных в письменном (бумажном) виде, сопровождается большим числом трудностей. Например: * чем больше такая информационная система, тем больше требуется для хранения бумаги (карточек), а также места; * очень много времени занимает выполнение поиска необходимой информации; * появляются определенные сложности при анализе, обновлении и обработке имеющейся информации. Существует большое количество типов БД, которые отличаются по различным критериям: 1. По месту постоянного хранения БД: * вторичная память (традиционная). Так, средой для постоянного хранения в данном случае является периферийная энергонезависимая память (или вторичная память) — это, как правило, обычный жёсткий диск. В оперативную память все СУБД помещает только кеш, а также данные для текущей работы; * оперативная память; * третичная память: среда постоянного хранения - отсоединяемое от сервера устройство для массового хранения (некоторая третичная память), которая выполняется на основе магнитных лент или же оптических дисков. Так, во вторичной памяти сервера хранятся лишь каталоги данных для третичной памяти, файловый кеш, а также данные для текущей работы, загрузка самих данных уже требует специальной процедуры. 2. По содержанию: * научная; * историческая; * географическая; * мультимедийная; * клиентская. 3. По уровню распределённости: * сосредоточенная или централизованная. Это БД, которая полностью поддерживается одним компьютером; * распределённая. Такая БД, составные части у которой размещают в различных узлах компьютерной сети согласно некоторым критериям; * неоднородная. Все фрагменты распределенной БД в различных узлах сети поддерживаются средствами более, чем одной СУБД; * однородная. Все фрагменты распределенной БД в различных узлах сети поддерживаются средствами единой СУБД; * фрагментированная (секционированная): методом для распределения данных является некоторое фрагментирование, которое может быть вертикальным или горизонтальным; * тиражированная: способом распределения информации является тиражирование (или репликация). Под термином информационной структуры, или структуры данных в информатике понимают совокупность всех взаимосвязанных данных[11]. Так, модель данных – это множество структур информации, ограничений целостности, а также операций по манипулированию данными. При помощи модели данных можно представлять объекты предметной области, а также взаимосвязи между ними. Любая модель данных – это способ для моделирования, то есть, инструмент [4]. Модель БД – это результат использования такого способа для проектирования БД. Существует ряд различных структур информационных моделей, в том числе различных видов баз данных: иерархическая, табличная и сетевая: 1. Иерархические БД. Иерархические базы данных представляются самой ранней моделью для представления сложной структуры.Эти базы данных графически можно представить в виде перевернутого дерева, которое складывается из объектов разных уровней. Верхний уровень (корень дерева), занимает только один объект, 2й уровень занимают уже объекты второго уровня, а третий – объекты третьего уровня. Между объектами есть связи и каждый объект может включать в себя несколько объектов низшего уровня. Такие объекты находятся в отношениях предка (объекты, более близкие к корню) к потомку (объекты более низких уровней). При этом, объекты-предки могут не иметь потомков или же иметь их несколько, в то время как объекты-потомки обязательно имеют только одного предка. Объекты, которые имеют общего предка, называют близнецами. Рисунок 1 - Пример иерархической организации информации 2. Сетевые БД. Сетевые БД являются обобщением иерархических, за счет допущения ряда объектов, имеющих более чем одного предка. На связи между объектами в таких сетевых моделях не накладывают никаких ограничений, так что всетевых БД, как и в вертикальных, реализованы в том числе горизонтальные связи. Пример стандартной сетевой базы показан на рисунке 2. Но сетевая база унаследовала также многие недостатки иерархической БД, самый главный из них - необходимость четкого определения на физическом уровне связи всех данных и, столь же четкого следования этой структуре связей, при выполнении запросов к базе. Рисунок 2 - Пример сетевой организации данных 3. Реляционные БД. Табличные (реляционные)БД представляют собой перечни объектов одного типа, то есть всех объектов, которые имеют одинаковый набор свойств. Такую базу данных удобно представить в виде простой двумерной таблицы: * в строках последовательно размещают значения свойств одного объекта; * каждое значение свойства располагается в своем столбце, который озаглавлен именем конкретного свойства. К примеру, база данных: Телефонный справочник. Таблица 1 - Телефонный справочник № ФИО Адрес Тел. 1 Иванов В.В. Серова, 5-12 4325345 2 Петров И.И. Седова, 3-21 3454365 3 Сидоров С.С. Мира, 33-17 3454354 Столбцы в подобной таблице называют полями и каждое поле характеризуется индивидуальным именем (именем конкретного свойства) и видом данных, представляющих значения для этого свойства. Поле БД - это столбец таблицы, содержащий значение определенного свойства. Все строки таблицы являются записями об объекте.Записи разбиты столбцами таблицы на поля, таким образом, любая запись – это набор значений, содержащихся в полях. Одна запись базы данных представляет собой строку таблицы, содержащую набор значений свойств, который размещен в полях базы данных. Так, любая таблица должна иметь минимум одно ключевое поле, содержимое которого является уникальным для каждой записи в таблице. С помощью ключевого поля можно четко идентифицировать любую запись таблицы. Ключевое поле - поле, значение которого четко определяет запись в таблице. В качестве ключевых полей чаще всего используется тополе, которое содержит вид данных- счетчик. Однако, в некоторых случаях, намного удобнее использовать в качестве ключевого поля таблицы и другие поля, например, коды товаров, инвентарные номера и пр. [20]. Рисунок 3 - Телефонный справочник Тип поля полностью определяется типом содержащихся данных. Поля могут содержать информацию следующих наиболее популярных типов: * счетчик - это целые числа, которые задаются автоматически при осуществлении ввода записей. Такие числа не могут быть изменены пользователями; * числовой -это числа; * гиперссылки -ссылки на информационный ресурс в сети; * текстовый - тексты, которые содержат до 255 символов; * дата/время - дата и (или) время; * логический - могут быть Истиной (Да) или Ложью (Нет); * денежный - денежный формат; * поле объекта OLE(ObjectLinkingandEmbedding – протокол обмена данных)- рисунок или изображение, т.е. графические файлы. Поле каждого из перечисленных типов имеет свой собственный набор свойств. Самыми важными свойствами для полей являются: * размеры поля - определяют максимальную длину числового или текстового поля; * формат поля - оговаривает форматы данных; * обязательное поле - оно указывает на то, что это поле обязательно требуется заполнять. Как следует из определений, понятие БД тесно связано, а порою не различается с понятием СУБД, которая представляет собой программный комплекс для организации, ведения и использования БД. Основное назначение СУБД - предоставление пользователям БД средств доступа к данным в абстрактных терминах, не связанных со способом их хранения в ЭВМ[18]. Система управления базами данных (СУБД) - это комплекс языковых и программных средств, предназначенный для создания, ведения и совместного использования баз данных многими пользователями [22]. СУБД обычно состоит из таких компонентов: 1. Ядро. Оно отвечает за четкое управление данными во внешней, а также оперативной памятях. 2. Процессора языка БД. Обеспечивает оптимизацию всех запросов на извлечение, а также изменение данных, создание машинно-независимого внутреннего исполняемого кода. 3. Подсистемы -для поддержки времени исполнения. Работа подсистемы заключается в интерпретации программ манипуляции данными, которые создают уже пользовательский интерфейс с СУБД. 4. Сервисные программы (внешние утилиты). Обеспечивают ряд некоторых дополнительных возможностей для обслуживания информационной системы. Все СУБД отвечают за: * поиск информации; * физическое размещение всех данных, а также их описаний; * поддержание БД в актуальном состоянии; * защиту от некорректных обновлений, несанкционированного доступа; * обслуживание одновременных запросов к БД сразу от нескольких пользователей (или прикладных программ)[21]. Функции СУБД: 1. Определение данных. СУБД обязана допускать определения всех данных, то есть, внешние схемы, концептуальные схемы, внутренние схемы, а также все связанные отображения в некоторой исходной форме, преобразовывая эти определения в форму для соответствующих объектов. То есть, СУБД обязана содержать в себе компоненты языкового процессора для разных языков определений данных, а также СУБД обязана четко «понимать» синтаксис языка для определений данных[9]. 2. Обработка данных. СУБД должна уметь обрабатывать запросы пользователей на выборку, изменение или же удаление существующих данных в БД или на добавление новых данных в эту БД. Так, СУБД обязана содержать в себе компоненты процессора языка по обработке данных. Запросы языка по обработке данныхразделяют на «планируемые», а также «непланируемые»: * планируемый запрос представляет собой запрос, необходимость в котором была предусмотрена заранее; * непланируемый запрос – это специальный запрос, необходимость в котором заранее не была предусмотрена. 3. Целостность и безопасность информации. СУБД обязана контролировать все пользовательские запросы, а также пресекать попытки нарушения правил целостности и безопасности, которые оговорены АБД. 4. Восстановление данных, дублирование. СУБД или любая другая связанная с ней программа, которая обычно называется администратором транзакций, должна осуществлять контроль над восстановлением данных, а также их дублированием. 5. Словарь данных. СУБД обязана обеспечить словарь данных. Сам такой словарь данных, в определенной мере является БД (но не пользовательской, а уже системой). Этот словарь «содержит данные о данных» (часто называемые метаданными), то есть, содержит определения всех других объектов системы, а не просто чистые данные. В частности, объектная и исходная формы разнообразных схем (концептуальных, внешних и т.д.) и отображений будут сохранены в данном словаре. Расширенный словарь будет в себе содержать также и перекрестные ссылки, которые показывают, к примеру, какую часть баз данных какие из программ применяют, какие отчеты необходимы различным пользователям, какие терминалы в данный момент подключены к системе и т.п. Словарь может быть и, даже обязан, интегрирован в определяемую им БД, а значит, должен содержать описание для самого себя. 6. Производительность. СУБД обязана выполнять все перечисленные функции с максимальной эффективностью. В мире существует множество систем управления базами данных. Несмотря на то, что они могут по-разному работать с разными объектами и предоставляют пользователю различные функции и средства, большинство СУБД опираются на единый устоявшийся комплекс основных понятий [16]. 2 ЯЗЫК СТРУКТУРИРОВАННЫХ ЗАПРОСОВ SQL 2.1 Общие сведения об SQL Первый прототип языка SQL был создан в конце 70-х годов компанией IBMResearch. Этот язык назывался SEQUEL и был разработан для экспериментальной реляционной системы управления БД System R. Спустя время, данный язык начал применяться и для систем управления БД. Позднее, когда речь зашла о выходе на мировой рынок, он был переименован на SQL и прошел процедуру стандартизации (1987). На сегодняшний день SQL является наиболее распространенным, универсальным компьютерным языком управления, создания, модификации данных в БД типа клиент-сервер. SQL - это информационно-логический язык, который предназначен для описания, модификации и извлечения данных, хранящихся в БД [28]. Язык SQL является стандартным языком доступа и управления БД, а также позволяет выполнять ряд операций, указанных на рисунке 4 [2]. Рисунок 4 - Возможности SQL При всех своих изменениях, SQL является единственным связующим механизмом между прикладным ПО и БД. Однако, на сегодняшний день, существующие СУБД, а также информационные системы, применяющие СУБД, обеспечивают пользователя различными средствами визуального построения запросов. Запросом, который реализуется при помощи языка SQL, называется команда, которая предназначается для выполнения (и выполняемая) СУБД определяемого этой командой действия с БД. Запрос реализуется при помощи операторов языка SQL. Операторы состоят из отдельных логических частей, называемых предложениями. Таким образом, любое предложение SQL является запросом либо обращением к БД, приводящее к изменению в БД. Согласно тому, какие изменения происходят в БД, выделяют несколько типов запросов (рисунок 5) [24]. Рисунок 5 - Типы запросов для организации работы систем управления БД Главным объектом хранения реляционной БД является таблица, вследствие этого, все SQL-запросы являются операциями над таблицами. Согласно этому, все запросы подразделяются на следующие группы [25]: 1. Оперируют таблицами. Они подразделяются на: * те, которые предназначены для создания в БД новых таблиц; * те, которые предназначены для модификации уже имеющихся таблиц. 2. Оперируют отдельными записями (или строками таблиц) либо наборами записей. Запросы этой группы делятся на[7]: * добавление новой строки; * модификация значений полей строки или набора строк; * удаление строки или набора строк. Наиболее важный вид запроса — это запрос, который возвращает (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций [27]: * просмотр полученного набора; * модификация всех записей набора; * удаление всех записей набора. Следовательно, применение SQL сводится к формированию разнообразных выборок строк и совершению операций над всеми записями, которые входят в набор [28]. 2.2 Структура и назначение операторов SQL Основу языка SQL составляют операторы, условно разбитые на три составные группы: 1) языкопределенияданных–DDL (Data Definition Language); 2) языкуправленияданными–DСL (DataControlLanguage); 3) языкобработкиданных–DML (Data Manipulation Language). DDL включает в себя операторы, предназначенные для создания и модифицирования структуры БД, а также выполнения операций с доменами БД и представлениями. Перечень основных операторов языка DDL и их назначение показаны в таблице 2 [28]. Таблица 2 – Операторы DDL Язык DML включает в себя операторы манипулирования данными, которые дают возможность осуществить различные манипуляции с данными таблиц[28]. Перечень основных операторов языка DML и их назначение показаны в таблице 3. Таблица 3 – Операторы DML Язык DCL включает в себя операторы, которые позволяют осуществить создание и удаление ограничений, предоставление и отмену привилегии пользователю или приложению на оперирование объектами. Перечень основных операторов языка DCL и их назначение показаны в таблице 4. Таблица 4 - Операторы DCL 2.3. Достоинства и недостатки языка SQL Уже больше 30 лет SQL существует, продолжает развиваться, укрепляет свои позиции, благодаря основным своим достоинствам: 1. Независим от конкретной системы управления БД. Чаще всего тексты SQL-запросов, которые содержат DDL и DML, можно с легкостью перенести из одной системы управления БД в другую. Однако, при использовании каких-либо своеобразных, для реализации возможностей такой переносимости, добиться уже очень трудно. 2. Существование общепринятых стандартов. Выявление совместимости и соответствия конкретной реализации SQL общепринятому стандарту способствует «стабилизации» языка. Когда заходит речь о стандартах в области, которая связана с разработкой ПО, в большинстве случаев имеют в виду две организации: * ANSI (American National Standards Institute); * ISO (International Organization for Standardization). Первым Международный Стандарт SQL стал стандарт SQL/89. Он был принят в 1989 г. и, в большинстве своем, имеет весьма обобщенный характер и допускал очень широкое толкование. В нем не было таких разделов как манипулирование схемой БД и динамический SQL. Многие существенные аспекты языка, согласно стандарту, определялись в реализации. Вследствие этого, в марте 1992г. был принят новый стандарт - SQL/92. Он охватывал практически все необходимые для реализации аспекты: манипулирование схемой БД, управление транзакциями и сессиями, подключение к БД, динамический SQL. Cтандартизованы также отношения-каталоги БД, которые хотя и не связаны с языком непосредственно, но сильно влияют на реализацию. В 1999 году был разработан новый стандарт -SQL3. Его отличия от более ранних стандартов характеризуются качественными серьезными преобразованиями. В стандарте SQL3 были введены новые типы данных, в большей мере соответствующие объектной ориентации, был добавлен раздел, который вводит стандарты на события и триггеры, которые ранее не затрагивались в стандартах, хотя давно уже широко использовались в коммерческих СУБД. В стандарте определены возможности четкой спецификации триггеров как совокупности события и действия. В качестве действия могут выступать не толькопоследовательность операторовSQL, но иоператорыуправления ходом выполнения программы. В рамках управления транзакциями произошел возврат к старой модели транзакций, допускающейточки сохранения (savepoints), и возможность указания в операторе отката.ROLLBACKточек возврата позволит откатывать транзакцию не в начало, а в промежуточную, ранее сохраненную точку. Такое решение повышает гибкость реализации сложных алгоритмов обработки информации. 3. Декларативность. Применение SQL дает возможность специалисту описывать только то, какие данные необходимо извлечь или изменить. То, каким образом это сделать, решает система управления базами данных при обработке SQL-запроса. 4. Возможность выполнения специальныхинтерактивных запросов. 5. Интеграция с языком Java. Исходя из его преимуществ, складывается мнение: «Так как большая часть запросов пишется на SQL, тогда безразлично, что это за СУБД - был бы SQL»[14]. Нельзя забывать и о недостатках, среди которых можно выделить: 1. Не соответствует реляционной модели данных. Несоответствия SQL [26]: * дозволяет в таблицах строки-дубликаты; * позволяет колонки без имени и повторяющиеся имена колонок; * высокая избыточность. 2.Сложность. Изначально SQL предполагался как средство работы конечного пользователя, однако на сегодняшний день он стал настолько сложным, что превратился в инструмент специалиста. 4. Отступление от стандартов. Вопреки существующим международным стандартам, многие разработчики системы управления БД вносят модификации в язык SQL, который применяется в разрабатываемой системе управления БД, тем самым отступая от стандарта. Другими словами, появляются диалекты SQL с отсутствием полного описания языка. На сегодняшний день, в наиболее распространенных системах управления БД, используются следующие диалекты языка SQL: * PL/SQL – в системе управления БД Oracle; * Transact-SQL – в системе управления БД MicrosoftSQL; * Informix-SQL – в системе управления БД Informix; * JetSQL – в системе управления БД MicrosoftAccess. Язык JetSQL почти соответствует стандарту ANSISQL. Основные их различия состоят в следующем[23]: * имеют отличные друг от друга наборы зарезервированных слов и типов данных; * отличные правила применимы к оператору BETWEEN, используемому для определения условий выборки записи; * отличные постановочные знаки в операторе LIKE. 3 ОПТИМИЗАЦИЯЗАПРОСОВ Системой управления БД можно добиться одного и того же результата запроса разнообразными способами, существенно различающиеся не только затратами ресурсов, но и временем выполнения. Задачей оптимизации как раз и является нахождение оптимального способа. Когда говорят об оптимизации в реляционных системах управления БД, подразумевают аспект оптимизации запросов. Другими словами, такой способ выполнения запросов, при котором по начальному представлению запроса путем его синтаксических и семантических преобразований вырабатывается процедурный план выполнения запроса, наиболее оптимальный при существующих в БД управляющих структурах. Подходящие преобразования начального представления запроса выполняются специализированным компонентом системы управления БД, так называемым, оптимизатором, и оптимальность производимого им плана запроса носит достаточно условный характер: план оптимален в соответствии с теми критериями, которые заложены в оптимизатор.Одновременно с этим, не исключены отклонения от истинной оптимальности. На сегодняшний день известны два вида стратегий поиска оптимального плана: * грубой силы, путём оценки всех перестановок соединяемых таблиц, используемых способов входа в таблицы и типов соединения (другими словами -полный перебор вариантов); * на основе генетического алгоритма, путём оценки ограниченного числа перестановок. Также известно, что некоторые системы управления БД дают возможность программисту вмешиваться в поиск оптимального плана в какой-либо степени, от минимального влияния до полного и чёткого указания, какой именно план запроса использовать. 3.1 Поэтапная оптимизация запросов в РСУБД Поскольку язык SQL - это декларативный язык, то в его командах нет информации о том, как выполнить запрос, какие методы доступа к данным использовать. Практически любая команда SQL, из подмножества языка DML, может быть выполнена различными способами. Например, необходимо получить “перечень сотрудников 6-го отдела не старше 30 лет и получающие «чистую» зарплату не менее 35000 рублей” (под «чистой» зарплатой понимается заработная плата после вычета подоходного налога, равному13%)[1]. SELECT * FROM Employeers WHERE department_Number=6 AND born>'1986/01/01' AND salary*0.87>=35000; В этом запросе к таблице Employeers (Персонал) определены ограничения на поля department_Number (№_отдела), born (Дата рождения) и salary (Заработная плата). В случае, когда по данным полям имеются индексы, то данный запрос быть выполнен одним из следующих способов: 1. Осуществляется поиск по индексу INDEX (department_Number) записей, которые удовлетворяют первому ограничению, и проверяется для отобранных записей второе ограничение. 2. Осуществляется поиск по индексу INDEX (born) записей, которые удовлетворяют второму ограничению, и проверяется для отобранных записей первое ограничение. 3. Последовательно считываются все записи таблицы Employeers и проверяются для каждой записи оба ограничения. В данном случае система не может применять индекс по полю salary система, поскольку оно заключено в выражение. Целью системы управления БД является выполнение запроса, притом сделать это наиболее эффективным способом. Оптимизация системы заключается в построении квазиоптимального процедурного плана выполнения декларативного запроса. Построение данного плана осуществляет оптимизатор[10]. Под термином «план выполнения запроса» понимается последовательность этапов, на каждом из которых либо физически извлекаются данные из памяти, либо делается подготовительная работа. Обработка запроса, поступившего в реляционную систему управления БД, который представлен на декларативном языке запросов, состоит из нескольких этапов (фаз), которые изображены на рис. 6 [17]. Рисунок 6 - Фазы выполнения запросов в РСУБД На первом этапе запрос анализируется лексическим и синтаксическим анализатором. Лексическим анализатором запрос подвергается делению на лексические единицы, называемые лексемами (наименования полей и таблиц, константы, знаки операций и другие). Синтаксическим анализатором запрос проверяется на синтаксическую правильность. В итоге на выходе этого этапа обработки получается внутреннее представление запроса, в котором отражается структура запроса и содержится информация, характеризующая объекты БД, упоминающиеся в запросе. Информация об объектах БД выбирается из словаря-справочника данных. Внутреннее представление запроса применяется и видоизменяется на последующих этапах обработки запроса. На втором этапе внутреннее представление запроса претерпевает логическую оптимизацию. Вдобавок могут использоваться разнообразные преобразования, которые "улучшают" изначальное представление запроса. Эти преобразования включают в себя эквивалентные. В результате эквивалентного преобразования получается внутреннее представление, семантически равноценное изначальному запросу. Преобразования также могут оперировать информацией об ограничениях целостности, которые наличествуют в БД. Эти преобразования называются семантическими, другими словами, они основаны на семантике (смысле) предметной области. В данном конкретном случае, получившееся представление не является семантически равноценным изначальному запросу. Тем не менее, система дает гарантию того, что результат выполнения преобразованного запроса будет таким же как результат запроса в изначальной форме при соблюдении ограничений целостности, которые существуют в БД. Например, если для таблицы Employeers определено следующее ограничение целостности: (CHECK (salary>10000 AND salary<100000), то в этом случае система к запросу,из примера описанного выше для того, чтобы получить возможность применять индекс по полю salary, может добавить это ограничение в часть WHERE. При любом раскладе, по завершению второго этапа обработки запроса его внутреннее представление сохраняется непроцедурным, однако при всем этом оно является более эффективным, чем изначальное. Из этого следует, что по этому представлению система сможет построить более эффективный план. На третьей фазе обработки запроса осуществляется выбор альтернативных процедурных планов выполнения данного запроса согласно тому внутреннему представлению, которое получено на втором этапе. Для осуществления выбора, оптимизатор оперирует информацией из словаря-справочника данных. Вначале это информация о наличествующих путях доступа к данным. Единственный путь доступа, возможный в любом случае, – это последовательное чтение. Возможность применения других путей доступа зависит от следующего: * способ размещения данных в памяти; * наличие индексов; * формулировка запроса. Третий этап характеризуется оцениванием каждого из выбранных планов, с точки зрения предполагаемой стоимости выполнения запроса по данному плану. При осуществлении оценивания, применяется либо статистическая информация о распределении данных, которая доступна оптимизатору, либо информация о механизмах реализации путей доступа. В результате, на основе некоторого (заранее выбранного или заданного) критерия, производится выбор наилучшего плана из всех альтернатив. На четвертой фазе по внутреннему представлению наиболее оптимального плана выполнения запроса осуществляется формирование процедурного представления плана. Таким образом, выполняемое представление плана может быть как программой в машинных кодах, так и машинно-независимым, что является особо удобным для интерпретирования запросов. Однако ....................... |
Для получения полной версии работы нажмите на кнопку "Узнать цену"
Узнать цену | Каталог работ |
Похожие работы:
- Язык структурированных запросов sql
- Документирование деятельности по исполнению социально-правовых запросов граждан на примере архивного отдела администрации МОГО Ухта
- Правовое регламентирование и характеристика деятельности архивного отдела администрации города сургута по исполнению социально – правовых запросов граждан