1.40M
Категория: ПрограммированиеПрограммирование

Многопоточные вычисления на БД

1.

Многопоточные вычисления на БД
Алексей Киселев

2.

Эволюция вычислительных мощностей
2

3.

Современный Mainframe от Oracle
3

4.

Объем растёт
Попытка впихнуть невпихуемое
4

5.

Решение(?) в виде Parallel DML
5

6.

Работа независимых потоков
6

7.

Решение – фоновые процессы
BOSS_TASK_LIST
1--------2------------------------------------------------------------------------------9999----
SLAVE_PREPARE
BOSS_PREPARE
Задание
Задание
AQ
BOSS_PROCESS
SLAVE_PROCESS
SLAVE_TASK_LIST
23-------24-------25-------------------------------------------------------------------39--------
Ответ
Ответ
BOSS_FINISH
SLAVE_FINISH
7

8.

Не сферические вычисления в вакууме
8

9.

Пример «плохой» задачи и методы решения
Автопроводка документов
Счет с
остатком
КТ
Документ\
выписка
Лог
Инструментарий
• Oracle 11.2
ДТ
• Cloud control 12c
• Сервер от IBM
с процессором Power7
• Ядро платформы
Развитие версии 7.3.7.3
• Фоновые процессы
версии 2014 года
9

10.

Решение задачи в лоб
Суть эксперимента:
• 20 потоков
• Передача экземпляра по курсору
• Обработано 700 документов
за 7 минут
10

11.

Рандомизация выборки
Суть эксперимента:
• 20 потоков
• Рандомизированная передача
экземпляра
• Обработано 1300 документов
за 7 минут
11

12.

Начинаем борьбу с блокировками
Суть эксперимента:
• 20 потоков
• Задание – Счет по Дебет
• Обработано 630900 документов
12
за 58 секунд с ошибками

13.

Отладка «курильщика»
Суть эксперимента:
• 20 потоков
• Добавили вывод в pipe
с чтением
• Обработано 150 000 документов
13
за 7 минут

14.

Отладка здорового человека
Суть эксперимента:
• 20 потоков
• Вывод в таблицу
• Обработано 630900 документов
14
за 135 секунд

15.

С ног на голову
Суть эксперимента:
• 50 потоков
• Alter index XXX rebuild reverse
• Обработано 630900 документов
16
за 63 секунды

16.

Пакетный вывод
Суть эксперимента:
• 50 потоков
• Аккумулируем данные
в PlSql таблице
• Обработано 630900 документов
за 136 секунд,
а в 20 потоков за 99 секунд 15

17.

Массированный тест
Суть эксперимента:
• 50 потоков
• Добавляем объем работ
• Обработано 2343500 документов
17
за 66 секунд

18.

Выводы
Первый успешный запуск
Финальный запуск
• Минимальные трудозатраты
• 8 часов работы
• 700 документов за 7 минут
• 2343500 документов
за 66 секунд
• 20 потоков
• 50 потоков
• Сильная загрузка сервера ничем
• Полезная загрузка
18

19.

Спасибо за внимание!
Алексей Киселев
English     Русский Правила