рит2007 оптимизация бд бесков доронин

47
Оптимизация баз данных Оптимизация баз данных Принципы, методики, техники Принципы, методики, техники Денис Бесков-Доронин Денис Бесков-Доронин Архитектор ПО, Системный аналитик Архитектор ПО, Системный аналитик UML2.ru UML2.ru [email protected] [email protected]

Upload: webcrunch

Post on 16-Jun-2015

429 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: рит2007   оптимизация бд   бесков доронин

Оптимизация баз данныхОптимизация баз данныхПринципы, методики, техникиПринципы, методики, техники

Денис Бесков-ДоронинДенис Бесков-ДоронинАрхитектор ПО, Системный аналитикАрхитектор ПО, Системный аналитикUML2.ruUML2.ru

[email protected]@beskov.ru

Page 2: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Обзор презентацииОбзор презентации

• Что оптимизировать?• Что такое производительность?• Когда выполняется оптимизация?• Принципы оптимизации• Методы оптимизации• Техники оптимизации

Page 3: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Что оптимизировать?Что оптимизировать?

Page 4: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Внешние свойстваВнешние свойства

• Производительность• Масштабируемость• Надёжность

Page 5: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Внутренние свойстваВнутренние свойства

• Модифицируемость

Page 6: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Что такое производительность?Что такое производительность?

Page 7: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Для IT-специалистовДля IT-специалистов

• Время отклика– Response

• Пропускная способность– Throughput– Bandwidth

Page 8: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Для бизнес-пользователейДля бизнес-пользователей

• Субъективное время реакции системы

Page 9: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Для владельцаДля владельца

• Количество обрабатываемых бизнес-операций в единицу времени

• Количество одновременно работающих пользователей

• Степень удовлетворённости пользователей

Page 10: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Когда выполняетсяКогда выполняетсяоптимизация?оптимизация?

Page 11: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

ПроактивноПроактивно

• При проектировании, построении системы– Make It Run, Make It Right, Make It Fast– Classic Engineering

• Performance Planning• Capacity Planning• Reliability Planning

– Кто: Системный архитектор• Плановая

– Профилактика– Предупреждение

• Мониторинг– Кто: Администрор БД / Системы

Page 12: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

РеактивноРеактивно

• В экстренном порядке– "Найти и обезвредить"– Кто: Аналитик по производительности

Page 13: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Почему именно БД?Почему именно БД?

Page 14: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Архитектура запроса в системеАрхитектура запроса в системе

Page 15: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Обзор типовой архитектуры Обзор типовой архитектуры многослойной системымногослойной системы

• Интерфейс, Внешние системы

• Глобальная сеть• Сервисный слой

(логика приложения)• Локальная сеть• Бизнес-логика• Логика доступа к данным

– Структура запросов• Интерфейс доступа к БД

– ODBC– Custom API

• Модель данных– Логическая модель данных– Физическая модель данных

• СУБД– Выделяемый пул– Режим работы

• ОС– Процессы

• Оборудование– Память– Диски– Процессор– Шина

Page 16: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Путь выполнения запросаПуть выполнения запроса

Page 17: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Принципы оптимизацииПринципы оптимизации

Page 18: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Сокращение пути выполнения Сокращение пути выполнения запросовзапросов

• Don’t Repeat Yourself– Кэширование

Page 19: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Сокращение времениСокращение времени выполнения выполнения отдельнойотдельной операцииоперации

• Распараллеливание(Увеличение числа обработчиков)

Page 20: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Методики оптимизацииМетодики оптимизации

Page 21: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Наивный экстенсивНаивный экстенсив

• Процессор• Память• Диски

Page 22: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

"Метод научного тыка""Метод научного тыка"

• Содержание• Проблема эффективности

– Ищем где светло– Эффект от неважного до отрицательного

Page 23: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Метод RМетод R

• Aligning IT and business• Цель Голдратта

– "Слабое звено"– Теория ограничений– Сценарий оптимизации

• Identify• Profile• ROI-based choosing• Tune

Page 24: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Техники оптимизацииТехники оптимизации

Page 25: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Логика приложенияЛогика приложения

• Кэширование– HTTP-кэширование– Кэширование шаблонов– Кэш объектов– Сетевое кэширование

• "Ленивое" чтение– Минимум датасетов (.NET)

• Плоские файлы• Prefetching

Page 26: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Уровень доступа к данным (DAL)Уровень доступа к данным (DAL)

• Стратегия доступа• Настройка SQL

Page 27: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Стратегия доступаСтратегия доступа

• Индексированный доступ• ORM• Хранимые процедуры• Последовательный доступ• Представления• Применение образцов проектирования

доступа• Временные таблицы

Page 28: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Настройка SQLНастройка SQL

• Кэширование запроса

• Кэширование результатов запроса

• Правильное использование SQL

• Минимизация объёма данных

• Политика блокировок

• Использование специфических свойств СУБД

• Использование оптимизатора

• Пакетная обработка• Операторы

Page 29: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Кэширование запросаКэширование запроса

• Связанные переменные(Параметризация запросов)– + Безопасность!– Порядок выполнения SQL-запроса

• Синтаксический разбор• Лексический разбор• Проверка прав доступа• Построение план выполнения• Доступ к данным• Извлечение

• Минимизация динамического SQL

Page 30: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Правильное использование SQLПравильное использование SQL

• Операции над множествами VS циклы

Page 31: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Минимизация объёма данныхМинимизация объёма данных

• Минимизация проекции:Явное перечисление столбцовVS квантор *

• Минимизация выборки (WHERE)• Кэширование результатов запроса

Page 32: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Политика блокировокПолитика блокировок

• Ослабление политики• Частые фиксации транзакций

Page 33: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Использование специфических Использование специфических свойств СУБДсвойств СУБД

• Oracle Hierarchical Query• TOP command• LIMIT• GROUP_CONCAT

Page 34: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Использование оптимизатораИспользование оптимизатора

• Читаемая структура(ANSI JOINs)

• Подсказки• Сбор статистики

Page 35: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

ПодсказкиПодсказки

• Порядок обхода таблиц– Кардинальность и селективность каждой

таблицы• Исключение индексов• Метод соединения

– Вложенные циклы• Есть индексы• Результат необъёмен

– Сортировка слиянием

Page 36: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Пакетная обработкаПакетная обработка

• Отключение индексов, ключей и ограничений

• Загрузка и удаление данных кусками, а не целиком

Page 37: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

ОператорыОператоры

• UNION VS UNION ALL

Page 38: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Модель БДМодель БД

• Логическая модель БД• Физическая модель БД

Page 39: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Логическая модель БДЛогическая модель БД

• Денормализация• Истинный ERM VS ORM• Логическое секционирование• Политика удаления

Page 40: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

ДенормализацияДенормализация

• Хранимые представления только для чтения– Materialized View– Агрегаты– Соединения– Производные атрибуты

• Обновления– Автоматически

• Триггер• Систематическая задача• MV Refresh

– Явно• Замена кода типа булевыми признаками

Page 41: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Логическое секционированиеЛогическое секционирование

• Вертикальное• Горизонтальное

– По таблицам– По разным хостам (хэш)

Page 42: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Политика удаленияПолитика удаления

• Замена мягкого удаления жёстким

Page 43: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Физическая модель БДФизическая модель БД

• Индексы– Минимально необходимые– На внешние ключи– С высокой селективностью– Правильный порядок столбцов в

составных индексах– Исключение дублей

• Секционирование– По времени– По региону– По имени

• Минимизация накладных расходов– Удаление индексов и ограничений– Отключение / Выключение индексов

и ограничений

• Кластеризация

• Распределение файлов данных и индексов

• Первичные ключи– Замена составных ключей

суррогатными

• DB Engine– In-memory

• Типы данных– Минимум длины– NOT NULL

Page 44: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Настройка СУБДНастройка СУБД

• Распределение файлов БД и журналов• Буферы памяти• Ограничение пула соединений• Репликация• Просмотр системых представлений

Page 45: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Файловая системаФайловая система

• RAID• SAN• Несколько дисков

Page 46: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

Интерфейс доступаИнтерфейс доступа

• Native interfaces against ODBC

to be continued…

Page 47: рит2007   оптимизация бд   бесков доронин

www.rit2007.ru

ВопросыВопросы?? Контакты Контакты!!

Приходите общаться!

Сообщество IT-аналитиков, архитекторов и консультантов UML2.ru:

• «Системный анализ и требования»• «Управление проектами»• «Проектирование систем»

Денис Бесков-ДоронинICQ 631.9839

LJ user beskov