|
|
|
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра вычислительной техники
отчет
по лабораторной работе №3
по дисциплине «Распределенные базы данных»
Тема: Статистика
Студентка гр. 1308 |
_______________ |
Кочубей Е.Д. |
Студентка гр. 1308 |
_______________ |
Зубченко П.А. |
Преподаватель |
_______________ |
Шичкина Ю.А. |
Санкт-Петербург
2025
Цель работы
Изучение особенностей индексов, генерации и расшифровки статистики информации из базы данных.
Ход работы
Создание базы данных
Для начала создадим базу данных, в которой будет храниться наша будущая таблица.
Рисунок 1 – запрос, создание базы данных
Рисунок 2 – результат создания базы данных
Рисунок 3 – структура созданной базы данных
Создание таблицы
Создаём одну таблицу, с которой в дальнейшем будет взаимодействие.
Рисунок 4 – запрос, создание таблицы tab
Рисунок 5 – результаты создания таблицы tab
После того, как таблица была успешно создана, мы можем её заполнить данными.
Рисунок 6 – запрос, добавление значений в таблицу tab
С помощью команды «SELECT * FROM tab;» выводим получившуюся таблицу.
Рисунок 7 – результат добавления значений в таблицу Product
Создание запросов
Наша таблица сформирована, а это значит, что можно приступить к написанию запросов, которые ответят нам на вопросы.
Запросы без индексов.
Найти всех производителей колбасы.
Рисунок 8 – запрос
Рисунок 9 – результат
Найти все продукты производителя ВЛ.
Рисунок 10 – запрос
Рисунок 11 – результат
Найти продукцию ВЛ, тип которой производит только эта компания.
Рисунок 12 – запрос
Рисунок 13 – результат
Запросы с индексами.
Для начала нам нужно создать индексы.
Рисунок 14 – запрос на создание индексов
Найти всех производителей колбасы.
Рисунок 15 – запрос
Рисунок 16 – результат
Найти все продукты производителя ВЛ.
Рисунок 17 – запрос
Рисунок 18 – результат
Найти продукцию ВЛ, тип которой производит только эта компания.
Рисунок 19 – запрос
Рисунок 20 – результат
Сбор и расшифровка статистики
Таблица без индексов.
Команда EXPLAIN для поиска всех производителей колбасы.
Рисунок 21 – запрос
Рисунок 22 – результат
Здесь у нас простой запрос, который проходит по всем 19 строкам, чтобы выдать результат. Также обращаем внимание на параметр filtered, который равен 10. Это означает, что лишь 10% из прочитанной информации попадёт вывод, то есть остальное – это мусор (работа впустую).
Команда EXPLAIN для поиска всех продуктов производителя ВЛ.
Рисунок 23 – запрос
Рисунок 24 – результат
Тоже простой запрос, который поясняется точно также, как и предыдущий.
Команда EXPLAIN для поиска продукции ВЛ, тип которой производит только эта компания.
Рисунок 25 – запрос
Рисунок 26 – результат
Этот запрос сложный, поэтому у первой таблицы тип оператора PRIMARY (первоочередной), а второй помечается SUBQUERY (подзапрос). Сначала рассмотрим подзапрос, так как он выполняется первым: было прочитано 19 строк, из которых подошло 90%, что является отличным показателем. Но в итоге в верхнем запросе у нас остаётся только 10% от начального количества. Опять же, обработали кучу лишнего.
Команда ANALYZE.
Рисунок 27 – запрос
Рисунок 28 – результат
Данная команда обновляет информацию о распределении ключей в таблице, так как ключей у нас на данном этапе нет, то в любой случае анализ закончится успешно.
Команда SHOW INDEX.
Рисунок 29 – запрос
Рисунок 30 – результат
Индексов у нас не имеется, поэтому и таблица вышла пустая.
Таблица с индексами.
Команда EXPLAIN для поиска всех производителей колбасы.
Рисунок 31 – запрос
Рисунок 32 – результат
В запросе используется индекс для поиска точных значений (параметр type=ref). Сразу видно, насколько наличие индексом оптимизируют работу: проверили только 5 строк, из которых подошли все (параметр filtered равняется 100%).
Команда EXPLAIN для поиска всех продуктов производителя ВЛ.
Рисунок 33 – запрос
Рисунок 34 – результат
Команда explain этого запрос также показала отличные результаты: прочитанных строк всего лишь 3, и в результат попали все они.
Команда EXPLAIN для поиска продукции ВЛ, тип которой производит только эта компания.
Рисунок 35 – запрос
Рисунок 36 – результат
Здесь у нас сложный запрос, каждый из которых использует свой индекс. Подзапрос хорошо проделал работу и нашёл 4 подходящих строки, а далее внешний запрос уже исключил лишь одну строку!
Команда ANALYZE.
Рисунок 37 – запрос
Рисунок 38 – результат
Тут у нас уже есть индексы, и в данной ситуации команда ANALYZE полезна. Если у нас запросы выполняются медленно или произошло изменение данных, то она может помочь оптимизировать выбор индексов, за чем последует более стабильная работа кода.
Команда SHOW INDEX.
Рисунок 39 – запрос
Рисунок 40 – результат
Данная команда показывает информацию по индексам. У нас было создано 4 индекса, которые являются не уникальными, то есть допускается дублирование. Поясним сразу, что один из индексов (idx_производитель_тип) разделился на два: первый использует первый столбец, второй – второй.
Самым значимым параметром является «cardinality», который показывает количество уникальных значений по соответствующему индексу. Для всех индексов у нас высокое число, а значит, что фильтрация хорошая.
Выводы
В ходе лабораторной работы была создана база данных, в которой расположилась одна таблица tab, которая была заполнена вручную данными, предоставленными преподавателем.
Было выполнено по 3 запроса для таблицы без и с индексами, результаты которых визуально не отличались, но как было исследовано далее, эффективность которых значительно разнится.
Благодаря проведённой работе были приобретены знания работы с индексами, а также сбор и расшифровка статистики с помощью встроенных ключевых слов.
|
|
|
