Upload
nova
View
85
Download
2
Embed Size (px)
DESCRIPTION
Параллельная загрузка данных с использованием секционирования. Иван Косяков Архитектор (SQL-BI), MTC Moscow Лидер Russian Business Intelligence User Group (PASS Chapter). Благодарности. Microsoft Services – за демонстрационный стенд Hewlett Packard – за оборудование для стенда - PowerPoint PPT Presentation
Citation preview
Параллельная загрузка данных с использованием секционирования
Иван Косяков Архитектор (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
Real-world, predictable performance
Scale up with today’s hardware
Scale out for the enterprise
TPC benchmarksWorkload
prioritization
Tuning and optimization
tools
Enterprise health
monitoring
Improved BI performance Multi-
instance architecture
6464-bit
technologies
NUMANUMA
Support
+Hot-add hardware
Scalable shared databases
Distributed partitioned views
Peer-to-peer replication
Query notifications
Service Broker
Data dependent
routing
Scalable shared
databases for Analysis Services
Производительность реляционной базы
Измеряемая производительность на реальных задачах• TPC-E
• TPC-H• SAP-SD
Инструменты оптимизации• SQL Server
Profiler• Database
Engine Tuning Advisor
Движок обработк
и запросов
• Cost-based optimization
• Read-ahead scans
• Partitioning
Секцианирование
Секционирование и параллельная загрузка
Быстрое и эффективное управление и доступ к наборам данных
Упрощение и ускорения настройки файловых групп
Ускорение загрузки и управления данными
Использование всех процессоров для ускорения операций
Секционированные таблицы и индексы
Разбиты на объекты хранения по значению колонки (диапазоны значений)
Для запросов считаются одним объектом Обрабатываются движком хранения как
различные объекты (B-Trees) До1000 секций на объект
Преимущества секционированных таблиц Управляемость
Быстрое удаление и загрузка данных Управление индексами на уровне секций Уменьшение фрагментации индексов (для секций по
дате) Резервирование и восстановление исторических
данных по частям Альтернативное хранение для исторических данных
Быстрые запросы к большим таблицам Эффективные операции «Join» Меньше дерево индекса и сканирование таблицы
при запросе к секции
Главные термины секционирования
Объекты: Функция секционирования Схема секционирования
Операции: SPLIT (разделение секций) MERGE (объединение секций) SWITCH (переключение секций)
Функция секционированияPartitioning function Привязывает области данных к целочисленным значениям Определяется заданием граничных точек
(boundary points) N граничных точек определяют N+1 секций
Номер секции 1 2 3 4 5
1 2 3 4Граничная точка
CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES (1, 100, 1000);
Схема секционированияPartitioning scheme Связывает место хранения – группу файлов
(filegroup) с каждой секцией (partition) через функцию секционирования (partitioning function)
Не требуется использовать различных группы файлов для различных секций
Лучшая практика: Распределите все группы файлов в схеме секционирования
между всеми дисковыми шпинделями
CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg);
Секционированные таблицы и индексы Ключ секционирования (Partitioning Key) – отдельная колонка Создаются на базе схем секционирования (Partition Schemes)
вместо групп файлов (Filegroups) Секции прозрачны для запросов Различные таблицы и индексы могут использовать одни и те
же функции и схемы секционирования
Table orIndex
PartitionScheme
PartitionFunction
1 many many
Создание секционированной таблицы и индекса
16
CREATE TABLE Order_History (Order_ID bigint,Order_Date datetime,Customer_ID bigint…
) ON Annual_Scheme_1(Order_Date)
CREATE INDEX Order_Cust_IdxON 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 ) } [ ; ]
SWITCHALTER TABLE PartitionTable
SWITCH PARTITION 2 TO NonPartitionTable ;
Switch – Table to Partition
Alter Table BSWITCH TO APARTITION 2
Partition# 2006 Data 2007 Data 2008 Data 2009 &
Later2005 Data
1 2 3 4 52004 & Earlier
6
Table B:
Filegroup DATA_2005
[EMPTY]
CHECK CONSTRAINT:B.Date_Key >= ‘20050101’ andB.Date_Key < ‘20060101’
Table A:
Loading Most Recent Data
1. Create staging table in same filegroup as target partition (2005)
2. Split most recent partition,adding boundary pointfor following period
3. Bulk load and index staging table4. Switch data into next-to-last partition
Partition #1 2 3 4 5
2004 & Earlier
2005 Data 2006 Data 2007 Data 2008 & Later
[EMPTY] [EMPTY] [EMPTY]
2008 Data 2009 & Later
6
2008 Staging Table
Unloading Oldest Data
1. Create Unload Table in same filegroup as partition to remove (2005)
2. Switch data out of second partition3. Merge first partition, removing the boundary point
for the unload period4. Archive or Truncate the unload table
Partition #2006 Data 2007 Data
[EMPTY]
2008 Data 2009 & Later
2005 Unload Table
[EMPTY]
1 2 3 4 52005 & Earlier2005 Data2004 &
Earlier
[EMPTY]
Dropping and merging in the middle (left range case) – not optimal
1. Create Unload Table in same filegroup as partition to remove (2006)
2. Switch data out of third partition3. Merge second and third partition, removing the
boundary point for the unload period4. Data will move from 2005 range to origin 2006 range
long run time, high Tlog consumption
2006 Data 2007 Data
[EMPTY]
2008 Data 2009 & Later
2006 Unload Table
2005 Data2004 & Earlier
[EMPTY]
2005 & 2006 Data Range
Dropping and merging in the middle – better way
1. Create Unload Tables in same filegroup as partitions to remove 2005 and 2006 partitions
2. Switch data out of second and third partition3. Merge second and third partition, removing the
boundary point for the unload period4. Move 2005 data back into partitioned table again
29
2006 Data 2007 Data
[EMPTY]
2008 Data 2009 & Later
2006 Unload Table
2005 Data2004 & Earlier
[EMPTY]
2005 & 2006 Data Range
2005 Unload Table
Демонстрация.Управление секциями
Иван Косяков Архитектор (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
• Scan against single partition (e.g. select * from my_partitioned_table where Year = ‘2005’ Parallelism for scan possible
1 2 3 4 52004 & Earlier
2005 Data 2006 Data 2007 Data
[EMPTY] [EMPTY]
2008 Data 2009 & Later
6
Parallelism against Partitioned Tables – Default SQL Server 2005
• 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
1 2 3 4 52004 & Earlier
2005 Data 2006 Data 2007 Data
[EMPTY] [EMPTY]
2008 Data 2009 & Later
6
Parallelism against Partitioned Tables – SQL Server 2008
• 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
1 2 3 4 52004 & Earlier
2005 Data 2006 Data 2007 Data
[EMPTY] [EMPTY]
2008 Data 2009 & Later
6
n/k threadsn/k threads
Parallelism against Partitioned Tables –SQL Server 2008 option using trace flag 2440
• 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
1 2 3 4 52004 & Earlier
2005 Data 2006 Data 2007 Data
[EMPTY] [EMPTY]
2008 Data 2009 & Later
6
k threads
FastTrack DW
Что такое SQL Server Fast TrackData Warehouse (FTDW)? Предложение помощи клиентам и партнерам
ускорить внедрение хранилищ данных (ХД)
12 симметричных мультипроцессорных (SMP) рекомендованных (reference) архитектур (RA)
Фокус SQL Server FTDWИсточники
Промежуточнаяобласть
ХД,Витрины данных
Аналитические кубы
ERP
CRM
HRMS
Фокус рекомендованных архитектур
Портал
Возможные проблемы архитектурОптимизированы под транзакцииНе сбалансированыНет гарантии положительного результата масштабирования
Шаблоны нагрузки для сценариев ХД Интенсивное сканирование
Чтение с диска большого количества строк Не волатильные данные
После записи данных они редко меняются Мало индексов
Минимальное использование вторичных индексов Использование разделов
Упрощает управление жизненным циклом данных и способствует уменьшению фрагментации
Зачем нужны рекомендованные архитектуры?Сбалансированы между всеми компонентамиПодробно описаныОснованы на последовательном вводе/выводе и нагрузке, характерной для ХДНиже стоимость владения (TCO)Масштабируемость и производительность
Состав FTDW Метод разработки оптимальных по цене, сбалансированных
систем для задач ХД Рекомендованные конфигурации аппаратного обеспечения,
разработанные совместно с партнерами Лучшие практики организации данных, загрузки и управления
Только для реляционных баз.
Не предназначены для − Analysis Services− Integration Services− Reporting Services
Область действия RA
Пут
ь да
нны
х
Кубы Analysis Services
PerformancePoint
Выделенный SAN, Массив хранения
Reporting Services
Инструменты веб-анализа
Пакеты загрузки Integration Services
SharePoint Services
Microsoft Office SharePoint
Хранилище данных,Промежуточная область,Пакетная загрузка
Поддерживающие системы
Системы хранения аналитических данных
Системы презентационного уровня
Область действия рекомендованных архитектур (пунктиром)
Excel Services
Дан
ные
для
отоб
раже
ния
Пример оценки пропускной способности
Fast Track SMP RA for SQL Server 2008 CPU Core Calculator v2.4Updated 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 3 000users
Adjust for workload mix
Estimated % of workload
Estimated % data found in
SQL Server cache
Estimated Query Data
Scan Volume MB (Uncompressed)
Desired Query Response Time
(seconds)(under load)
Estimated Disk Scan volume MB (Uncompressed)
Estimated percent of actual query concurrency 1%concurrency Simple 70% 10% 8 000 25 7 200Fast Track DW CPU max core consumption rate (MCR) in
MB/s of page compressed data per core 200MB/s Average 20% 0% 75 000 180 75 000Estimated compression ratio (default = 2.5:1) 2,5:1 Complex 10% 0% 450 000 1 200 450 000
Estimated drive serial throughput speed in compressed MB/s 100MB/s 100%
Number of data drives in single storage array 8drivesUsable capacity per drive 272GB
Space Reserved for TempDB 26%
Calculations and Results % of core
consumption rate achieved
Expected per CPU core consumption
rate (MB/s)
Calculated Single Query Scan Volume
in MB (compressed)
Calculated Target Concurrent
Queries
Estimated Target Queries per
Hour
Required IO Throughput in
MB/s
Estimated Number of Cores
Required
Estimated Single Query Run Time
(seconds)Simple 100% 200 2 880 21 3 024 2 419 12,10 0,5
Average 50% 100 30 000 6 120 1 000 10,00 9,4Complex 25% 50 180 000 3 9 450 9,00 112,5
30 3 153 3 869 32,00
Arrays Required based on
throughput requirements
Single Array Throughput in
MB/s
Throughput in MB/s for All
Required Arrays5 800 4 000
Suggested Fast Track RA Server Requirements
No of CPU cores Number of arrays Total Compressed Data Capacity (TB)
Max achievable IO Throughput in
MB/s
Max achievable CPU
consumption in MB/s
Required IO Throughput in
MB/s32 8 16 6 400 6 400 3 869
Определение требований к процессорному ядру для заданной нагрузки
Дополнительная информация
Main Fast Track Websitehttp://www.microsoft.com/sqlserver/2008/en/us/fasttrack.aspx
Intro to Fast Trackhttp://msdn.microsoft.com/en-us/library/dd459146.aspx
Fast Track Data Warehouse 2.0 Architecturehttp://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)[email protected]