database tuning method & technics

Post on 14-Dec-2014

2.439 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

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

UML2.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проактивно

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

Performance Planning Capacity Planning Reliability Planning

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

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

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

Реактивно

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

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

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

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

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

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

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

ODBC Custom API

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

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

ОС Процессы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Метод R

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

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

Identify Profile ROI-based choosing Tune

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

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

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

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

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

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

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

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

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

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

Настройка SQL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Oracle Hierarchical Query TOP command LIMIT GROUP_CONCAT

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

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

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

Подсказки

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

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

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

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

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

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

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

Операторы

UNION VS UNION ALL

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

Native interfaces against ODBC

Модель БД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тесты

OLTP TPC-C TPC-E

DSS TPC-H

Apps & WS TPC-App

Open Source

JMeter ...

Commercial

Rational Robot Compuware QALoad HP (Mercury) LoadRunner

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

top related