🗊Презентация Физическое проектирование БД. Индексы

Категория: Информатика
Нажмите для полного просмотра!
Физическое проектирование БД. Индексы, слайд №1Физическое проектирование БД. Индексы, слайд №2Физическое проектирование БД. Индексы, слайд №3Физическое проектирование БД. Индексы, слайд №4Физическое проектирование БД. Индексы, слайд №5Физическое проектирование БД. Индексы, слайд №6Физическое проектирование БД. Индексы, слайд №7Физическое проектирование БД. Индексы, слайд №8Физическое проектирование БД. Индексы, слайд №9Физическое проектирование БД. Индексы, слайд №10Физическое проектирование БД. Индексы, слайд №11Физическое проектирование БД. Индексы, слайд №12Физическое проектирование БД. Индексы, слайд №13Физическое проектирование БД. Индексы, слайд №14Физическое проектирование БД. Индексы, слайд №15Физическое проектирование БД. Индексы, слайд №16Физическое проектирование БД. Индексы, слайд №17Физическое проектирование БД. Индексы, слайд №18Физическое проектирование БД. Индексы, слайд №19Физическое проектирование БД. Индексы, слайд №20Физическое проектирование БД. Индексы, слайд №21Физическое проектирование БД. Индексы, слайд №22Физическое проектирование БД. Индексы, слайд №23Физическое проектирование БД. Индексы, слайд №24Физическое проектирование БД. Индексы, слайд №25

Содержание

Вы можете ознакомиться и скачать презентацию на тему Физическое проектирование БД. Индексы. Доклад-сообщение содержит 25 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Курс «Базы данных»

Тема: Физическое проектирование БД. Индексы
Барабанщиков
Игорь Витальевич
Описание слайда:
Курс «Базы данных» Тема: Физическое проектирование БД. Индексы Барабанщиков Игорь Витальевич

Слайд 2





План лекции
Алгоритмы поиска данных, используемые СУБД.
В+-деревья. 
Индексы СУБД Oracle.
Рекомендации по использованию индексов.
Описание слайда:
План лекции Алгоритмы поиска данных, используемые СУБД. В+-деревья. Индексы СУБД Oracle. Рекомендации по использованию индексов.

Слайд 3





Поиск  данных  в  БД
  В БД часто используются операции поиска данных.
Пример: Найти всех студентов с фамилией Кио.
  Просмотр всех записей в таблице использовать неэффективно – долго работает.
  Для ускорения поиска в базах данных используют вспомогательные объекты:  индексы.
Описание слайда:
Поиск данных в БД В БД часто используются операции поиска данных. Пример: Найти всех студентов с фамилией Кио. Просмотр всех записей в таблице использовать неэффективно – долго работает. Для ускорения поиска в базах данных используют вспомогательные объекты: индексы.

Слайд 4





Индекс
      Индекс – это структура, которая  определяет соответствие  значения ключа записи (атрибута или группы атрибутов) и местоположения этой записи в таблице.
В основе работы индекса лежит алгоритм бинарного поиска.
Описание слайда:
Индекс Индекс – это структура, которая определяет соответствие значения ключа записи (атрибута или группы атрибутов) и местоположения этой записи в таблице. В основе работы индекса лежит алгоритм бинарного поиска.

Слайд 5





Бинарный  поиск
Описание слайда:
Бинарный поиск

Слайд 6





Бинарное дерево поиска
    Бинарное дерево поиска — это дерево, в котором ключ в каждом узле должен быть:
Больше, чем любой из ключей в ветке слева.
Меньше, чем любой из ключей в ветке справа.
Несмотря  на  высокую  скорость  поиска,  дерево  плохо работает  в  случаях,  когда  нужно  получить  несколько элементов  в  пределах  двух  значений (BETWEEN a AND b).
Описание слайда:
Бинарное дерево поиска Бинарное дерево поиска — это дерево, в котором ключ в каждом узле должен быть: Больше, чем любой из ключей в ветке слева. Меньше, чем любой из ключей в ветке справа. Несмотря на высокую скорость поиска, дерево плохо работает в случаях, когда нужно получить  несколько элементов в пределах двух значений (BETWEEN a AND b).

Слайд 7





В+дерево
Нужен более эффективный способ запроса диапазона.
В современных БД для этого используется модифицированная версия дерева — В+дерево. 
Его особенность в том, что информацию (ID строк связанной таблицы) хранят лишь самые нижние узлы («листья»), а все остальные узлы предназначены для оптимизации поиска по дереву.
Описание слайда:
В+дерево Нужен более эффективный способ запроса диапазона. В современных БД для этого используется модифицированная версия дерева — В+дерево. Его особенность в том, что информацию (ID строк связанной таблицы) хранят лишь самые нижние узлы («листья»), а все остальные узлы предназначены для оптимизации поиска по дереву.

Слайд 8





B+tree индекс Oracle
Описание слайда:
B+tree индекс Oracle

Слайд 9





Сканирование   B+tree  индекса
Листовые блоки содержат по 2 элемента: 
     - индексированные значения столбца 
     - идентификатор ROWID строки, которая содержит это значение столбца. 
ROWID – уникальный  указатель  Oracle,  определяющий физическое местоположение строки и обеспечивающий самый быстрый способ доступа к строке в БД Oracle.
Сканирование  индекса  быстро  дает  ROWID  строки, и отсюда  можно  быстро  получить  доступ к ней. 
Большинство B-деревьев имеет всего три и менее уровней. 
Для выполнения поиска по B-дереву понадобится всего три или менее обращений к диску.
Описание слайда:
Сканирование B+tree индекса Листовые блоки содержат по 2 элемента: - индексированные значения столбца - идентификатор ROWID строки, которая содержит это значение столбца. ROWID – уникальный указатель Oracle, определяющий физическое местоположение строки и обеспечивающий самый быстрый способ доступа к строке в БД Oracle. Сканирование индекса быстро дает ROWID строки, и отсюда можно быстро получить доступ к ней. Большинство B-деревьев имеет всего три и менее уровней. Для выполнения поиска по B-дереву понадобится всего три или менее обращений к диску.

Слайд 10





Сбалансированное  дерево
В общем случае получим некоторое дерево, каждый родительский блок которого связан с одинаковым количеством подчиненных блоков, число которых равно числу индексных записей, размещаемых в одном блоке.
Количество обращений к диску при этом для поиска любой записи одинаково и равно количеству уровней в построенном дереве. 
Такие деревья называются сбалансированными (balanсed) именно потому, что путь от корня до любого листа в этом древе одинаков. 
Именно термин "сбалансированное" от английского "balanced" — "сбалансированный, взвешенный" и дал название данному методу организации индекса.
Описание слайда:
Сбалансированное дерево В общем случае получим некоторое дерево, каждый родительский блок которого связан с одинаковым количеством подчиненных блоков, число которых равно числу индексных записей, размещаемых в одном блоке. Количество обращений к диску при этом для поиска любой записи одинаково и равно количеству уровней в построенном дереве. Такие деревья называются сбалансированными (balanсed) именно потому, что путь от корня до любого листа в этом древе одинаков. Именно термин "сбалансированное" от английского "balanced" — "сбалансированный, взвешенный" и дал название данному методу организации индекса.

Слайд 11





Индексы СУБД Oracle
В*Tree индексы: 
    - наиболее часто используемый тип индекса
Reverse – индексы
Индексы, основанные на функциях (function-based)
Bitmap-индексы
Составные индексы
Описание слайда:
Индексы СУБД Oracle В*Tree индексы: - наиболее часто используемый тип индекса Reverse – индексы Индексы, основанные на функциях (function-based) Bitmap-индексы Составные индексы

Слайд 12





Создание  индексов
Индексы создаются в БД с помощью команды CREATE  INDEX.
Создание  обычного  индекса
    CREATE  INDEX  idx_emp 
           ON emp(last_name);
Создание  уникального  индекса
    CREATE  UNIQUE  INDEX idx_id
            ON emp(emp_id);
Описание слайда:
Создание индексов Индексы создаются в БД с помощью команды CREATE INDEX. Создание обычного индекса CREATE INDEX idx_emp ON emp(last_name); Создание уникального индекса CREATE UNIQUE INDEX idx_id ON emp(emp_id);

Слайд 13





Reverse – индексы
Reverse  index – это  тоже  B-tree  индекс,  но  с обратным  порядком байтов.  
Благодаря  перестановке  байтов  две соседние  записи  индекса  попадают  в  разные  блоки  индекса. 
Используются  в  основном  для  монотонно  возрастающих  значений с  целью  снятия конкуренции  за  последний  листовой  блок индекса.
Не  может  использоваться  для  диапазонного поиска.
Когда  в  запросе  присутствует  предикат неравенства,  ответ  получается  медленнее.
Описание слайда:
Reverse – индексы Reverse index – это тоже B-tree индекс, но с обратным порядком байтов. Благодаря перестановке байтов две соседние записи индекса попадают в разные блоки индекса. Используются в основном для монотонно возрастающих значений с целью снятия конкуренции за последний листовой блок индекса. Не может использоваться для диапазонного поиска. Когда в запросе присутствует предикат неравенства, ответ получается медленнее.

Слайд 14





Пример Reverse-индекс
     Значение в индексе изменяется намного больше, чем само значение в таблице, и поэтому в структуре 
B-Tree, они попадут в разные блоки. 
Описание слайда:
Пример Reverse-индекс Значение в индексе изменяется намного больше, чем само значение в таблице, и поэтому в структуре B-Tree, они попадут в разные блоки. 

Слайд 15





Пример
Программа продажи билетов на поезда
В таблицу TICKET (билет) каждую секунду вставляется много новых записей.
При наличии обычного индекса возникает конкуренция за самый правый листовой блок индекса.
Для решения проблемы надо создать реверсивный индекс:
CREATE  INDEX  ticket_idx  
        ON  ticket(ticket_id)   REVERSE;
Описание слайда:
Пример Программа продажи билетов на поезда В таблицу TICKET (билет) каждую секунду вставляется много новых записей. При наличии обычного индекса возникает конкуренция за самый правый листовой блок индекса. Для решения проблемы надо создать реверсивный индекс: CREATE INDEX ticket_idx ON ticket(ticket_id) REVERSE;

Слайд 16





Function-based Index
Индексы  на  основе  функций  предварительно вычисляют  значения  функций  по  заданному столбцу  и  сохраняют  результат  в  индексе.
Функциональные индексы часто строятся для полей, значения которых проходят предварительную обработку перед сравнением в команде SQL. 
-- создаем индекс на основе функции UPPER
CREATE INDEX firstname_idx ON emp(UPPER(fname));
-- выполняем запрос
SELECT * FROM emp  
    WHERE UPPER(fname) = ‘ИВАН’;
Описание слайда:
Function-based Index Индексы на основе функций предварительно вычисляют значения функций по заданному столбцу и сохраняют результат в индексе. Функциональные индексы часто строятся для полей, значения которых проходят предварительную обработку перед сравнением в команде SQL. -- создаем индекс на основе функции UPPER CREATE INDEX firstname_idx ON emp(UPPER(fname)); -- выполняем запрос SELECT * FROM emp WHERE UPPER(fname) = ‘ИВАН’;

Слайд 17





Bitmap  Index
Bitmap index – содержит отдельные битовые карты для каждого возможного значения столбца.
Каждому биту соответствует строка с индексируемым значением. 
Если значение бита равно 1 – значит запись, соответствующая позиции бита, содержит индексируемое значение для данного столбца.
Применяются, в основном, в OLAP-системах.
Это идеальный индекс для столбца с низкой селективностью (число уникальных записей в таблице мало) при большом размере таблицы.
Чувствительны к  перестроению  индекса.
Описание слайда:
Bitmap Index Bitmap index – содержит отдельные битовые карты для каждого возможного значения столбца. Каждому биту соответствует строка с индексируемым значением. Если значение бита равно 1 – значит запись, соответствующая позиции бита, содержит индексируемое значение для данного столбца. Применяются, в основном, в OLAP-системах. Это идеальный индекс для столбца с низкой селективностью (число уникальных записей в таблице мало) при большом размере таблицы. Чувствительны к перестроению индекса.

Слайд 18





Структура  bitmap-индекса
Описание слайда:
Структура bitmap-индекса

Слайд 19





Пример BITMAP-индекса
    В таблице EMP есть поле SEX (пол), которое обладает низкой селективностью – может принимать всего два значения.
CREATE  BITMAP  INDEX  idx_sex  ON emp(sex);
     Битовый индекс – не слишком разумная альтернатива для таблиц, подвергающихся большому количеству вставок, удалений и обновлений.
Описание слайда:
Пример BITMAP-индекса В таблице EMP есть поле SEX (пол), которое обладает низкой селективностью – может принимать всего два значения. CREATE BITMAP INDEX idx_sex ON emp(sex); Битовый индекс – не слишком разумная альтернатива для таблиц, подвергающихся большому количеству вставок, удалений и обновлений.

Слайд 20





Советы по работе с индексами
Создавайте индексы на следующие поля:
первичный ключ, такой индекс создается автоматически;
внешний ключ или поле, которое часто используется для связи таблиц. 
поле, используемые для частого поиска ряда значений (WHERE);
поле, по которому сортируются данные (ORDER BY, UNION, DISTINCT);
поля, которые группируются во время агрегации (GROUP BY);
поле, которое часто используется в запросах SELECT.
Индекс имеет смысл, если нужно обеспечить доступ одновременно не более чем к 4-5% данных таблицы.
Описание слайда:
Советы по работе с индексами Создавайте индексы на следующие поля: первичный ключ, такой индекс создается автоматически; внешний ключ или поле, которое часто используется для связи таблиц. поле, используемые для частого поиска ряда значений (WHERE); поле, по которому сортируются данные (ORDER BY, UNION, DISTINCT); поля, которые группируются во время агрегации (GROUP BY); поле, которое часто используется в запросах SELECT. Индекс имеет смысл, если нужно обеспечить доступ одновременно не более чем к 4-5% данных таблицы.

Слайд 21





Советы по работе с индексами
Не стоит создавать индексы на поля если:
Столбцы редко используются в запросе;
Столбцы содержат значения с низкой селективностью (неуникальные). Исключения для низкой селективности составляют случаи, при которых выборка чаше производится по редко встречающимся значениям
Столбцы состоят из длинно-символьных строк или BLOB. Колонки с этими типами данных не могут быть проиндексированы.
Столбцы часто обновляются, т.к. команды обновления ведут к потере времени на обновление индекса
Таблица сравнительно небольшая. Для таких таблиц больше подходит полное сканирование. В случае маленьких таблиц нет необходимости в хранении данных и таблиц, и индексов.
Описание слайда:
Советы по работе с индексами Не стоит создавать индексы на поля если: Столбцы редко используются в запросе; Столбцы содержат значения с низкой селективностью (неуникальные). Исключения для низкой селективности составляют случаи, при которых выборка чаше производится по редко встречающимся значениям Столбцы состоят из длинно-символьных строк или BLOB. Колонки с этими типами данных не могут быть проиндексированы. Столбцы часто обновляются, т.к. команды обновления ведут к потере времени на обновление индекса Таблица сравнительно небольшая. Для таких таблиц больше подходит полное сканирование. В случае маленьких таблиц нет необходимости в хранении данных и таблиц, и индексов.

Слайд 22





Составные  индексы
Составной индекс включает 2 и более столбца одной таблицы.
В некоторых случаях использование составного индекса предпочтительнее, чем одиночного:
Если в запросах часто используются только столбцы, участвующие в индексе, система может вообще не обращаться к таблице для поиска данных.
Несколько столбцов с низкой селективностью в  комбинации  друг  с  другом  могут  дать гораздо  более  высокую  селективность.
Описание слайда:
Составные индексы Составной индекс включает 2 и более столбца одной таблицы. В некоторых случаях использование составного индекса предпочтительнее, чем одиночного: Если в запросах часто используются только столбцы, участвующие в индексе, система может вообще не обращаться к таблице для поиска данных. Несколько столбцов с низкой селективностью в комбинации друг с другом могут дать гораздо более высокую селективность.

Слайд 23





Применение  составных  индексов
CREATE  TABLE  emp(id, name, sex, hobby, age)
CREATE  INDEX  i_emp  ON  emp(hobby, age, sex)
Обращение  к  составному  индексу  возможно только,  если  в  условиях  выбора  участвуют столбцы, представляющие собой лидирующую часть  составного  индекса. 
Обращение к индексу будет происходить в тех случаях, когда в условии запроса участвуют поля (hobby, age, sex),  (hobby, age)  или  (hobby).
Описание слайда:
Применение составных индексов CREATE TABLE emp(id, name, sex, hobby, age) CREATE INDEX i_emp ON emp(hobby, age, sex) Обращение к составному индексу возможно только, если в условиях выбора участвуют столбцы, представляющие собой лидирующую часть составного индекса. Обращение к индексу будет происходить в тех случаях, когда в условии запроса участвуют поля (hobby, age, sex), (hobby, age) или (hobby).

Слайд 24





Использование  индексов
Каждый индекс связан с определенной таблицей
Индекс обычно хранится отдельно от таблицы
СУБД использует индексы неявно при выполнении команд SQL.
СУБД  поддерживает  индексы  в  актуальном состоянии.
Описание слайда:
Использование индексов Каждый индекс связан с определенной таблицей Индекс обычно хранится отдельно от таблицы СУБД использует индексы неявно при выполнении команд SQL. СУБД поддерживает индексы в актуальном состоянии.

Слайд 25





Итоги
При  разработке  эффективных  приложений важным  этапом  является  физическое проектирование  БД.
Одной  из  задач  физического проектирования  БД  является  создание индексов.
СУБД  Oracle  предоставляет  богатые возможности  для  выбора  индексов.
Описание слайда:
Итоги При разработке эффективных приложений важным этапом является физическое проектирование БД. Одной из задач физического проектирования БД является создание индексов. СУБД Oracle предоставляет богатые возможности для выбора индексов.



Похожие презентации
Mypresentation.ru
Загрузить презентацию