database tuning method & technics

53
Оптимизация производительности БД Денис Бесков-Доронин UML2.ru

Upload: denis-beskov

Post on 14-Dec-2014

2.439 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Database Tuning Method & Technics

Оптимизация производительности БД

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

UML2.ru

Page 2: Database Tuning Method & Technics

Оптимизация БД

Page 3: Database Tuning Method & Technics

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

Page 4: Database Tuning Method & Technics

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

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

Page 5: Database Tuning Method & Technics

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

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

Page 6: Database Tuning Method & Technics

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

Page 7: Database Tuning Method & Technics

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

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

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

Page 8: Database Tuning Method & Technics

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

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

Page 9: Database Tuning Method & Technics

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

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

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

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

Page 10: Database Tuning Method & Technics

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

Page 11: Database Tuning Method & Technics

Проактивно

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

Performance Planning Capacity Planning Reliability Planning

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

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

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

Page 12: Database Tuning Method & Technics

Реактивно

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

Page 13: Database Tuning Method & Technics

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

Page 14: Database Tuning Method & Technics

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

Page 15: Database Tuning Method & Technics

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

Интерфейс, Внешние системы Глобальная сеть Сервисный слой

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

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

ODBC Custom API

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

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

ОС Процессы

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

Page 16: Database Tuning Method & Technics

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

Page 17: Database Tuning Method & Technics

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

Page 18: Database Tuning Method & Technics

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

DRI Кэширование

Page 19: Database Tuning Method & Technics

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

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

Page 20: Database Tuning Method & Technics

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

Page 21: Database Tuning Method & Technics

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

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

Page 22: Database Tuning Method & Technics

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

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

Ищем где светло Эффект от неважного до

отрицательного

Page 23: Database Tuning Method & Technics

Метод R

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

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

Identify Profile ROI-based choosing Tune

Page 24: Database Tuning Method & Technics

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

Page 25: Database Tuning Method & Technics

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

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

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

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

Page 26: Database Tuning Method & Technics

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

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

Page 27: Database Tuning Method & Technics

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

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

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

Page 28: Database Tuning Method & Technics

Настройка SQL

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

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

использование SQL Минимизация объёма

данных Политика блокировок

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

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

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

Page 29: Database Tuning Method & Technics

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

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

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

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

Page 30: Database Tuning Method & Technics

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

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

Page 31: Database Tuning Method & Technics

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

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

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

Page 32: Database Tuning Method & Technics

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

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

Page 33: Database Tuning Method & Technics

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

Oracle Hierarchical Query TOP command LIMIT GROUP_CONCAT

Page 34: Database Tuning Method & Technics

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

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

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

Page 35: Database Tuning Method & Technics

Подсказки

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

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

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

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

Page 36: Database Tuning Method & Technics

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

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

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

Page 37: Database Tuning Method & Technics

Операторы

UNION VS UNION ALL

Page 38: Database Tuning Method & Technics

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

Native interfaces against ODBC

Page 39: Database Tuning Method & Technics

Модель БД

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

Page 40: Database Tuning Method & Technics

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

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

Page 41: Database Tuning Method & Technics

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

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

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

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

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

Page 42: Database Tuning Method & Technics

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

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

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

Page 43: Database Tuning Method & Technics

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

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

Page 44: Database Tuning Method & Technics

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

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

индексах Исключение дублей

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

Page 45: Database Tuning Method & Technics

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

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

Кластеризация Распределение файлов данных и индексов Первичные ключи

Замена составных ключей суррогатными DB Engine

In-memory Типы данных

Минимум длины NOT NULL

Page 46: Database Tuning Method & Technics

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

Распределение файлов БД и журналов

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

Page 47: Database Tuning Method & Technics

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

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

Page 48: Database Tuning Method & Technics

Оборудование

Память Процессор

Page 49: Database Tuning Method & Technics

Инструменты профилирования

Page 50: Database Tuning Method & Technics

Тесты

OLTP TPC-C TPC-E

DSS TPC-H

Apps & WS TPC-App

Page 51: Database Tuning Method & Technics

Open Source

JMeter ...

Page 52: Database Tuning Method & Technics

Commercial

Rational Robot Compuware QALoad HP (Mercury) LoadRunner

Page 53: Database Tuning Method & Technics

Рекомендуемая литература