EMPTY - WordPress.com

advertisement
Параллельная загрузка
данных с использованием
секционирования
Иван Косяков
Архитектор (SQL-BI), MTC Moscow
Лидер Russian Business Intelligence User Group (PASS Chapter)
Благодарности
 Microsoft Services –
за демонстрационный стенд
 Hewlett Packard –
за оборудование для стенда
 Kevin Cox –
за слайды с анимацией
 MTC Moscow –
за предоставленную инфраструктуру
Содержание
Введение
Секционирование
Управление секциями
Параллельная загрузка (SSIS)
Блокировки при секционировании
Распараллеливание запросов к секционированным
таблицам (движок)
 FastTrack DW
 Заключение






Введение
Производительность SQL Server 2008
TPC benchmarks
Scalable
shared
databases for
Analysis
Services
Workload
prioritization
Tuning and
optimization
tools
Real-world,
predictable
performance
Improved BI
performance
Data
dependent
routing
Multiinstance
architecture
Enterprise
health
monitoring
Hot-add
hardware
64-bit
technologies
NUMA
Distributed
partitioned views
Scale out for the
enterprise
Peer-to-peer
replication
Service
Broker
Scale up with
today’s hardware
NUMA
Support
Scalable shared
databases
Query
notifications
Производительность реляционной базы
Движок
обработки
запросов
• Cost-based
optimization
• Read-ahead scans
• Partitioning
Инструменты
оптимизации
• SQL Server
Profiler
• Database Engine
Tuning Advisor
Измеряемая
производительность
на реальных задачах
• TPC-E
• TPC-H
• SAP-SD
Секцианирование
Секционирование и
параллельная загрузка
 Быстрое и
эффективное
управление и доступ
к наборам данных
 Упрощение и
ускорения настройки
файловых групп
 Ускорение загрузки и
управления данными
 Использование всех
процессоров для
ускорения операций
Секционированные таблицы и индексы
 Разбиты на объекты хранения по значению
колонки (диапазоны значений)
 Для запросов считаются одним объектом
 Обрабатываются движком хранения как
различные объекты (B-Trees)
 До1000 секций на объект
Преимущества секционированных таблиц
 Управляемость
 Быстрое удаление и загрузка данных
 Управление индексами на уровне секций
 Уменьшение фрагментации индексов (для секций по
дате)
 Резервирование и восстановление исторических
данных по частям
 Альтернативное хранение для исторических данных
 Быстрые запросы к большим таблицам
 Эффективные операции «Join»
 Меньше дерево индекса и сканирование таблицы
при запросе к секции
Главные термины секционирования
 Объекты:
 Функция секционирования
 Схема секционирования
 Операции:
 SPLIT (разделение секций)
 MERGE (объединение секций)
 SWITCH (переключение секций)
Функция секционирования
Partitioning function
 Привязывает области данных к целочисленным значениям
 Определяется заданием граничных точек
(boundary points)
 N граничных точек определяют N+1 секций
CREATE PARTITION FUNCTION myRangePF1 (int) AS
RANGE LEFT FOR VALUES (1, 100, 1000);
Граничная точка
1
Номер
секции
1
2
2
3
3
4
4
5
Схема секционирования
Partitioning scheme
 Связывает место хранения – группу файлов
(filegroup) с каждой секцией (partition) через функцию
секционирования (partitioning function)
 Не требуется использовать различных группы
файлов для различных секций
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);
Лучшая практика:
Распределите все группы файлов в схеме секционирования
между всеми дисковыми шпинделями
Секционированные таблицы и индексы
 Ключ секционирования (Partitioning Key) – отдельная колонка
 Создаются на базе схем секционирования (Partition Schemes)
вместо групп файлов (Filegroups)
 Секции прозрачны для запросов
 Различные таблицы и индексы могут использовать одни и те
же функции и схемы секционирования
Partition
Function
1
Partition
Scheme
Table or
Index
many
many
Создание секционированной
таблицы и индекса
CREATE TABLE Order_History (
Order_ID
bigint,
Order_Date datetime,
Customer_ID bigint
…
) ON Annual_Scheme_1(Order_Date)
CREATE INDEX Order_Cust_Idx
ON Order_History(Order_ID)
ON Annual_Scheme_1(Order_Date)
Aligned Index
One-to-one partition correspondence
Секции
таблиц
Секции
индексов
Note: You cannot SWITCH if indexes are not aligned. Normally best practise to
align (this is also the default when creating an index)
Объекты секционирования
Секционированный индекс
Строится для
Секционированная таблица
Состоит из
Функция секционирования
Секция
Определяет
Схема секционирования
Строится над
Определяет
Группа файлов
Параллельная загрузка (SSIS)
Проектирование параллельной загрузки
 Разделение данных на куски одинакового
размера
 Секционированный источник или отдельные файлы
 Секционирование приемника –
команда SWITCH
 Исключение конфликтов
 Независимые объекты (локировки)
 Минимум общих ресурсов (ввод-вывод, процессоры,
память)
 Эффективный план запуска
 Диаграмма Ганта
SSIS – настройки параллелизма
• Свойство пакета: MaxConcurrentExecutables
− По умолчанию: -1
• Свойство Data Flow Task: EngineThreads
− По умолчанию: 5
Источник:
ttp://blogs.msdn.com/sqlperf/archive/2007/05/11/implement-parallel-execution-in-ssis.aspx
Демонстрация.
Параллельная загрузка
Иван Косяков
Архитектор (SQL-BI), MTC Moscow
Лидер Russian Business Intelligence UG (PASS Chapter)
Демонстрационный сценарий подготовлен специалистами
Управление секциями
Управление секциями
 SPLIT
 MERGE
ALTER PARTITION FUNCTION partition_function_name()
{ SPLIT RANGE ( boundary_value ) |
MERGE RANGE ( boundary_value ) } [ ; ]
 SWITCH
ALTER TABLE PartitionTable
SWITCH PARTITION 2 TO NonPartitionTable ;
Switch – Table to Partition
Table A:
[EMPTY]
Partition 1
#
2004 &
2
2005 Data
3
4
2006 Data
2007 Data
5
2008 Data
Earlier
Filegroup
DATA_2005
Table B:
6
2009 &
Later
Alter Table B
SWITCH TO A
PARTITION 2
CHECK CONSTRAINT:
B.Date_Key >= ‘20050101’ and
B.Date_Key < ‘20060101’
Loading Most Recent Data
[EMPTY] [EMPTY]
[EMPTY]
Partition #
1
2004 &
Earlier
2
2005 Data
3
4
5
6
2006 Data
2007 Data
2008
2008 &
Data
Later
2009 &
Later
1. Create staging table in same
filegroup as target partition (2005)
2. Split most recent partition,
adding boundary point
for following period
3. Bulk load and index staging table
4. Switch data into next-to-last partition
2008 Staging
Table
Unloading Oldest Data
[EMPTY]
Partition #
2004 &
Earlier
[EMPTY]
1
2.
3.
2005 Unload
Table
2
2005 Data
&
2005
Earlier
1.
4.
[EMPTY]
2006 Data
3
2007 Data
4
2008 Data
5
2009 &
Later
Create Unload Table in same filegroup as partition
to remove (2005)
Switch data out of second partition
Merge first partition, removing the boundary point
for the unload period
Archive or Truncate the unload table
Dropping and merging in the middle (left range case) –
not optimal
[EMPTY]
2004 &
Earlier
[EMPTY]
2005 &
2006 Data
2005 Data
2006 Data Range
1.
2.
3.
2006 Unload
Table
4.
2007 Data
2008 Data
2009 &
Later
Create Unload Table in same filegroup as partition to
remove (2006)
Switch data out of third partition
Merge second and third partition, removing the
boundary point for the unload period
Data will move from 2005 range to origin 2006 range 
long run time, high Tlog consumption
Dropping and merging in the middle – better way
[EMPTY]
2004 &
Earlier
[EMPTY]
2005 &
2006 Data
2005 Data
2006 Data Range
1.
2005 Unload
Table
2006 Unload
Table
2.
3.
4.
2007 Data
2008 Data
2009 &
Later
Create Unload Tables in same filegroup as
partitions to remove 2005 and 2006 partitions
Switch data out of second and third partition
Merge second and third partition, removing the
boundary point for the unload period
Move 2005 data back into partitioned table again
Демонстрация.
Управление секциями
Иван Косяков
Архитектор (SQL-BI), MTC Moscow
Лидер Russian Business Intelligence UG (PASS Chapter)
Демонстрационный сценарий подготовлен специалистами
Блокировки при
секционировании
Конкурентные запросы
Transaction isolation
•
•
•
•
•
Read uncommitted
Read committed
Repeatable read
Serializable
Read committed (with row
versioning)
• Snapshot
Lock escalation granularity
•
•
•
•
Row
Page
Partition
Table
Совместимость блокировок
Запрошенный режим
IS
S
U
IX
SIX
X
Общая блокировка намерения (IS) Да
Да
Да
Да
Да
Нет
Общая блокировка (S)
Да
Да
Да
Нет
Нет
Нет
Блокировка обновления (U)
Да
Да
Нет
Нет
Нет
Нет
Монопольная блокировка
намерения (IX)
Да
Нет
Нет
Да
Нет
Нет
Общая блокировка с
монопольным намерением (SIX)
Да
Нет
Нет
Нет
Нет
Нет
Монопольная (X)
Нет
Нет
Нет
Нет
Нет
Нет
Анализ блокировок
sys.dm_tran_locks
resource_type
Описание
Resource_associated_entity_id
OBJECT
Объект базы
данных
Object ID
HOBT
Heap or a B-tree
HoBt ID, соответствует полю
sys.partitions.hobt_id.
Демонстрация.
Блокировка секций
Иван Косяков
Архитектор (SQL-BI), MTC Moscow
Лидер Russian Business Intelligence UG (PASS Chapter)
Демонстрационный сценарий подготовлен специалистами
Распараллеливание запросов к
секционированным таблицам
Распараллеливание запросов
 Уровень параллелизма для экземпляра SQL Server –
‘max degree of parallelism’
 Минимальная граница для возможности
параллелизма –
‘cost threshold for parallelism’
 Можно установить для
 Обычных запросов
 Команд управления индексами
 Уровень параллелизма (во время запуска):
 Имеющаяся память
 Имеющиеся процессорные ресурсы
Parallelism against Partitioned Tables –
Default SQL Server 2005
[EMPTY]
[EMPTY]
1
2004 &
Earlier
2
2005 Data
3
4
5
6
2006 Data
2007 Data
2008 Data
2009 &
Later
• Scan against single partition (e.g.
select * from my_partitioned_table where Year = ‘2005’ Parallelism
for scan possible
Parallelism against Partitioned Tables
– Default SQL Server 2005
[EMPTY]
[EMPTY]
1
2004 &
Earlier
2
2005 Data
3
4
5
6
2006 Data
2007 Data
2008 Data
2009 &
Later
• Scan against multiple partitions (e.g.
select * from my_partitioned_table where Year between ‘2005’ and
‘2006
Single threaded scan on single partitions – Performance regression
Page 39
Parallelism against Partitioned Tables – SQL Server 2008
[EMPTY]
[EMPTY]
1
2004 &
Earlier
•
•
3
4
5
6
2005 Data
2006 Data
2007 Data
2008 Data
2009 &
Later
n/k threads
n/k threads
2
Scan against multiple partitions (e.g.
select * from my_partitioned_table where Year between ‘2005’ and ‘2006
Multi threaded scan on single partitions again.
Algorithm: Assume n partitions to be scanned by k threads available
−
threads per partition = n/k
Parallelism against Partitioned Tables –SQL
Server 2008 option using trace flag 2440
[EMPTY]
[EMPTY]
1
2004 &
Earlier
2
2005 Data
3
4
5
6
2006 Data
2007 Data
2008 Data
2009 &
Later
k threads
•
Scan against multiple partitions (e.g.
select * from my_partitioned_table where Year between ‘2005’ and ‘2006
•
Multi threaded scan on single partitions again.
Algorithm: Assume n partitions to be scanned by k threads available
−
−
threads per partition = k
Jump from partition to partition scanning them with k-threads
FastTrack DW
Что такое SQL Server Fast Track
Data Warehouse (FTDW)?
Фокус SQL Server FTDW
Аналитические
кубы
Источники
ERP
Промежуточная
область
ХД,
Витрины
данных
CRM
HRMS
Фокус рекомендованных
архитектур
Портал
Возможные проблемы архитектур
 Оптимизированы под транзакции
 Не сбалансированы
 Нет гарантии положительного
результата масштабирования
Шаблоны нагрузки для сценариев ХД
 Интенсивное сканирование
 Чтение с диска большого количества строк
 Не волатильные данные
 После записи данных они редко меняются
 Мало индексов
 Минимальное использование вторичных индексов
 Использование разделов
 Упрощает управление жизненным циклом данных и
способствует уменьшению фрагментации
Зачем нужны рекомендованные архитектуры?
 Сбалансированы между всеми компонентами
 Подробно описаны
 Основаны на последовательном вводе/выводе и нагрузке,
характерной для ХД
 Ниже стоимость владения (TCO)
 Масштабируемость и производительность
Состав FTDW
 Метод разработки оптимальных по цене, сбалансированных
систем для задач ХД
 Рекомендованные конфигурации аппаратного обеспечения,
разработанные совместно с партнерами
 Лучшие практики организации данных, загрузки и
управления
Только для реляционных баз.
Не предназначены для
− Analysis Services
− Integration Services
− Reporting Services
Область действия RA
Системы хранения
аналитических данных
Пакеты загрузки
Integration Services
Путь данных
Кубы
Analysis Services
Выделенный SAN,
Массив хранения
Хранилище данных,
Промежуточная область,
Пакетная загрузка
Область действия рекомендованных
архитектур (пунктиром)
Системы
презентационного уровня
Данные для отображения
Поддерживающие
системы
Инструменты веб-анализа
Reporting Services
SharePoint Services
Microsoft Office SharePoint
PerformancePoint
Excel Services
Пример оценки пропускной способности
Определение требований к процессорному ядру для заданной нагрузки
Fast Track SMP RA for SQL Server 2008 CPU Core Calculator v2.4
Updated 12/09/2009 - uw
This spreadsheet can be used to estimate the number of cores required to support a user workload and workload mix.
Enter your factors into the green fields and the results will be calculated in the pink cells.
The spreadsheet uses a weighted average to determine the number of cores required based on your inputs.
User Variable Input
Anticipated total number of users expected on the
system
Estimated percent of actual query concurrency
Fast Track DW CPU max core consumption rate (MCR) in
MB/s of page compressed data per core
Estimated compression ratio (default = 2.5:1)
Estimated drive serial throughput speed in compressed
MB/s
Number of data drives in single storage array
Usable capacity per drive
Space Reserved for TempDB
Adjust for workload Estimated % of
mix
workload
3 000users
1%concurrency
Estimated Query
Estimated %
Data
data found in
Scan Volume MB
SQL Server cache
(Uncompressed)
25
Estimated Disk
Scan volume MB
(Uncompressed)
Simple
70%
10%
200MB/s
Average
20%
0%
75 000
180
75 000
2,5:1
Complex
10%
0%
450 000
1 200
450 000
100MB/s
8drives
272GB
26%
8 000
Desired Query
Response Time
(seconds)
(under load)
7 200
100%
Calculations and Results
Calculated Single
% of core
Expected per CPU
Calculated Target
Query Scan Volume
Estimated Target
consumption rate core consumption
Concurrent
in MB
Queries per Hour
achieved
rate (MB/s)
Queries
(compressed)
Simple
100%
200
2 880
21
3 024
Average
50%
100
30 000
6
120
Complex
25%
50
180 000
3
9
30
3 153
Arrays Required
based on
throughput
requirements
5
Suggested Fast Track RA Server Requirements
Single Array
Throughput in
MB/s
800
Required IO
Throughput in
MB/s
2 419
1 000
450
3 869
Throughput in
MB/s for All
Required Arrays
4 000
Max achievable
Max achievable
Total Compressed
CPU
No of CPU cores Number of arrays
IO Throughput in
Data Capacity (TB)
consumption in
MB/s
MB/s
32
8
16
6 400
6 400
Required IO
Throughput in
MB/s
3 869
Estimated Single
Estimated Number
Query Run Time
of Cores Required
(seconds)
12,10
10,00
9,00
32,00
0,5
9,4
112,5
Дополнительная информация

Main Fast Track Website
http://www.microsoft.com/sqlserver/2008/en/us/fasttrack.aspx

Intro to Fast Track
http://msdn.microsoft.com/en-us/library/dd459146.aspx

Fast Track Data Warehouse 2.0 Architecture
http://msdn.microsoft.com/en-us/library/dd459178.aspx

Hardware vendor’s datasheets



HP
IBM
Dell
Заключение
Масштабируемость и производительность
 Use hardware and software resources more efficiently to reduce costs
 Flexibility to address the need for more capacity
 Predictable response times reduce user frustration and support costs
Technology
Standard Edition
Enterprise Edition
CPU support
4
8
Multiple-instance support
16 instances
More instances
Maximum virtualization
Data compression
Backup compression
Table partitioning
Partitioned table parallelism
Parallel index operations
StreamInsight (serial processing)
Ссылки
− Strategies for partitioning relational data
warehouses
• http://www.microsoft.com/technet/prodtechnol/sql/2005/sp
dw.mspx
− Simply database maintenance with table
partitions
• http://www.microsoft.com/technet/technetmag/issues/2007/
03/Partitioning/default.aspx
− The Data Loading Performance Guide
• http://msdn.microsoft.com/en-us/library/dd425070.aspx
Спасибо за внимание!
Иван Косяков
Архитектор (SQL-BI), MTC Moscow
Лидер Russian Business Intelligence User Group (PASS Chapter)
i-ivanko@microsoft.com
Download