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

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

Upload: webcrunch

Post on 22-Nov-2014

993 views

Category:

Documents


2 download

DESCRIPTION

 

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