Научная статья на тему 'Оптимизация работы с информацией в базах данных'

Оптимизация работы с информацией в базах данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
993
141
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БАЗЫ ДАННЫХ / НОРМАЛЬНАЯ ФОРМА / ИНДЕКСИРОВАНИЕ ДАННЫХ / ПОИСК ДАННЫХ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Чухраев И. В., Жукова И. В.

Рассмотрены вопросы оптимизации работы с информацией в базах данных на примере информационной системы промышленного предприятия, реализованной с использованием системы управления реляционными базами данных (СУРБД) Microsoft SQL Server и интегрированной с продуктами Microsoft Office.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Оптимизация работы с информацией в базах данных»

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №4/2016 ISSN 2410-6070_

УДК 004.65

И.В. Чухраев

к.т.н., доцент, зав. кафедрой «Компьютерные системы и сети» КФ МГТУ им. Н.Э.Баумана

И.В. Жукова

студентка 4 курса кафедры «Компьютерные системы и сети» КФ МГТУ им. Н.Э.Баумана

г. Калуга, Российская Федерация

ОПТИМИЗАЦИЯ РАБОТЫ С ИНФОРМАЦИЕЙ В БАЗАХ ДАННЫХ

Аннотация

Рассмотрены вопросы оптимизации работы с информацией в базах данных на примере информационной системы промышленного предприятия, реализованной с использованием системы управления реляционными базами данных (СУРБД) Microsoft SQL Server и интегрированной с продуктами Microsoft Office.

Ключевые слова

Базы данных, нормальная форма, индексирование данных, поиск данных.

В настоящее время информационные системы (ИС), реализованные с использованием баз данных (БД), нашли применение практически во все сферах деятельности человека начиная с социальной и заканчивая производственной [1-3]. В таких ИС основными операциями являются поиск данных и осуществление доступа к информации. Очевидно, что для повышения эффективности их работы необходима оптимизация указанных операций, что позволит сэкономить затраты времени и ресурсов при обработке больших объемов данных. Такая оптимизация включает в себя максимальное ускорение доступа к информации и выбор наилучшего способа поиска данных [4].

Для ускорения доступа к информации в БД необходимо оптимизировать ее структуру и запросы.

Структура БД описывается нормальными формами, которые являются каноническими представлениями в реляционной модели данных. При создании БД, как правило, достаточно использовать три нормальные формы 1НФ, 2НФ и 3НФ, связанные между собой [1]. При решении практических задач структура БД в большинстве случаев является оптимальной, если она приведена к 3НФ, что обеспечивает устранение или сведение к минимуму избыточности, дублирования данных и, как следствие, облегчает администрирование базы и обновление информации в ней [1,5].

Одним из механизмов, позволяющих оптимизировать запросы в БД, является индексирование данных. Индекс - это таблица указателей, где каждая строка ссылается на соответствующую строку в таблице данных. Индексы позволяют осуществлять доступ к данным, и выполнять изменения или удаление информации, не просматривая всю таблицу целиком. Это существенно повышает эффективность работы программы при большом количестве записей в таблицах. Структура таблиц индекса аналогична структуре таблиц данных [1,4]. Эффективность использования индексов зависит от их количества, так как чем больше индексов используется, тем больше времени и ресурсов затрачивается, соответственно тем дольше будет время отклика программы. Чтобы выяснить необходимое количество индексов для конкретной БД, надо определить поля, наиболее часто используемые для доступа к записям, т.е. провести анализ запросов базы данных.

В качестве средства анализа производительности запросов БД используем приложение SQL Server Profiler, позволяющее создать трассировки, то есть пошаговое выполнение программы, с моментальными снимками действий [4]. Пример работы с данным приложением изображен на рис. 1. Трассировки позволяют получить данные о наиболее часто используемых полях, загруженности сервера в зависимости от количества запросов в единицу времени и продолжительности выполнения запросов.

В качестве примера проанализируем таблицу «Счета» в базе данных ИС промышленного предприятия, реализованной с использованием СУРБД Microsoft SQL Server [4]. Используя трассировки, выполним запрос на выборку всех данных из таблицы «Счета» сначала с неиндексированными полями, затем с индексированными и проведем трассировку доступа к данным таблицы, увеличивая количество записей (таблица 1).

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №4/2016 ISSN 2410-6070

Рисунок 1 - Пример выполнения трассировки с помощью SQL Server Profiler Длительность запроса выборки данных из таблицы «Счета»

Таблица 1

Запрос на выборку данных Неиндексированные поля Индексированные поля

Длительность запроса, с Длительность запроса, с

Тип атрибута

Строковый (дата счета) 0,035 0,014

Числовой (ГО счета) 0,075 0,014

Число записей

100 0,016 0,014

1000 0,025 0,018

10000 0,05 0,02

100000 0,35 0,035

Как видно из таблицы 1, длительность запроса с использованием индексирования существенно уменьшилась и перестала зависеть от типа атрибута выбранного поля. Таким образом, можно составить алгоритм индексирования полей БД (рис. 2).

Рассмотрим методы поиска данных в БД. Поиск - это нахождение информации в объеме данных по определенному критерию (ключу поиска). Существуют различные стратегии поиска по ключу.

Начало

Выбрать таблицы

Трассировка запросов

Анализ результатов трассировки

Выбор наиболее используемых полей

Индексирование полей

Конец

Рисунок 2 - Алгоритм индексирования полей базы данных

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «ИННОВАЦИОННАЯ НАУКА» №4/2016 ISSN 2410-6070_

Наиболее простым является метод последовательного поиска, в котором все элементы массива перебираются, пока не обнаружится элемент, совпавший с ключом поиска [1,5]. Достоинством данного метода является простота программирования: /* Последовательный поиск */

int sequential_search(char *items, int count, char key) {

register int t; for(t=0; t < count; ++t)

if(key == items[t]) return t; return -1; /* ключ не найден */

}

Сложность данного алгоритма линейна, поэтому данный способ занимает слишком много времени при большом количестве записей в БД.

Более эффективным является двоичный поиск. В нем применяется метод половинного деления [1,5]. Сначала проверим средний элемент. Если он больше, чем искомый ключ, проверим средний элемент первой половины, в противном случае — средний элемент второй половины. Будем повторять эту процедуру до тех пор, пока искомый элемент не будет найден либо пока не останется очередного элемента. В двоичном поиске количество сравнений в худшем случае равно log2n. В среднем случае количество немного ниже, а в лучшем — количество сравнений равно 1. Приведем листинг программы для осуществления двоичного поиска: /* Двоичный поиск */

int binary_search(char *items, int count, char key) {

int low, high, mid; low = 0; high = count-1; while(low <= high) { mid = (low+high)/2; if(key < items[mid]) high = mid-1; else if(key > items[mid]) low = mid+1; else return mid; /* ключ найден */

}

return -1;

}

Таким образом, на основе экспериментальных данных получен оптимальный способ выбора индексации полей в БД и разработан алгоритм индексации данных. Эффективность работы ИС, основанной на БД, позволяет увеличить алгоритм двоичного поиска по сравнению с простым перебором данных.

Список использованной литературы:

1. Пирогов В.Ю. Информационные системы и базы данных. Организация и проектирование. СПб.: Изд-во БХВ-Петербург. 2009. 528 c.

2. Чухрай И.В. Геоинформационная система поиска жилья // Современные научные исследования и инновации. 2015. № 6-2 (50). С. 71-73.

3. Борсук Н.А., Трошкин Д.О., Чухраев И.В. Анализ функционального наполнения социального сервиса электронного оборота купонов // Вопросы радиоэлектроники. 2015. № 8 (8). С. 57-62.

4. Бейли Л. Изучаем SQL. СПб.: Изд-во Питер. 2012. 637 с.

5. Зрюмов Е.А., Зрюмова А.Г. Базы данных для инженеров. Барнаул: Изд-во АлтГТУ. 2010. 131 с.

© Чухраев И.В., Жукова И.В., 2016

i Надоели баннеры? Вы всегда можете отключить рекламу.