![Page 1: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/1.jpg)
Partitioning techniques in SQL Server
Eladio Rincon ([email protected])Javier Loria ([email protected])Solid Quality Mentors
![Page 2: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/2.jpg)
2
Agenda
© 2008 Solid Quality Mentors
Why?
How?
What?
Where?
Partitioning Toolbox
![Page 3: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/3.jpg)
3
Agenda
© 2008 Solid Quality Mentors
Why?
• Definition• I/O Basics• Table Basics• Operational Benefits
How?
What?
Where?
Toolbox
![Page 4: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/4.jpg)
Definition
4© 2008 Solid Quality Mentors
Physical segregation of a single logical table
name into multiple, identical physical structures
![Page 5: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/5.jpg)
5
I/O BasicsOperation File Type Read Write
SELECT Database Random Synchronous -
INSERTUPDATEDELETE
Log Sequential - Synchronous
Database Random - Asynchronous
Bulk Insert Database Random Synchronous
Full Backup Database Sequential Synchronous *
Log Backup Log Sequential Synchronous -
Reindex Random ? ?
© 2008 Solid Quality Mentors OLTP8x58
8
8
24x7OLTP24
24
24
24
24
OLAPS
S
S
S
![Page 6: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/6.jpg)
6
Table Basics
© 2008 Solid Quality Mentors
![Page 7: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/7.jpg)
7
Operational Benefits
Performanc
eQuery(OLPT/OLAP)
Bulk-Insert
(OLAP)
Availability
Full Backups
Maintainabil
ityArchivi
ngPruning
Reindex
© 2008 Solid Quality Mentors
![Page 8: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/8.jpg)
Poor’s Mans Table PartitioningCreating and using partitioned views
![Page 9: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/9.jpg)
9
Agenda
© 2008 Solid Quality Mentors
Why?
• Partition Function• Partition Scheme• Create Table Reloaded• Create Index Reloaded
How?
What?
Where?
Toolbox
![Page 10: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/10.jpg)
Partition Function
10© 2008 Solid Quality Mentors
CREATE PARTITION FUNCTION Annual (INT) AS RANGE RIGHT FOR VALUES (20060101 , 20070101, 20080101, 20090101, 20100101);
![Page 11: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/11.jpg)
Partition Scheme
11© 2008 Solid Quality Mentors
CREATE PARTITION SCHEME AnnualAS PARTITION AnnualTO (EmptyHistory, Fact2006, Fact2007, Fact2008, Fact2009, EmptyFuture)
![Page 12: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/12.jpg)
12
Create Table Reloaded
© 2008 Solid Quality Mentors
CREATE TABLE SalesDataMart.FactVendas( IdDimDate INT NOT NULL, IdDimProduct INT NOT NULL, IdDimCustomers INT NOT NULL, IdDimStore INT NOT NULL, OrderedQuantity INT NOT NULL, TotalSalesAmount DECIMAL (19, 2) NOT NULL, TotalProductCost DECIMAL (19, 2) NOT NULL, POSNum INT NOT NULL, InvoceNum INT NOT NULL) ON Annual(IdDimDate);
![Page 13: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/13.jpg)
Create Index Reloaded
13© 2008 Solid Quality Mentors
CREATE CLUSTERED INDEX IDX_FactSalesON SalesDataMart.FactSales(IdDimDate, IdDimStore) ON Annual(IdDimDate);
ALTER TABLE SalesDataMart.FactSales ADD CONSTRAINT PK_FactSales PRIMARY KEY(IdDimDate, IdDimProduct, IdDimCustomers, IdDimStore)ON Annual(IdDimDate);
![Page 14: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/14.jpg)
Partition 101Partitioned Hello World
![Page 15: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/15.jpg)
15
Agenda
© 2008 Solid Quality Mentors
Why?
• Table Design Patterns• Partition Types• Partition Methods• Index Partitions
How?
What?
Where?
How?
![Page 16: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/16.jpg)
16
Table and Design Patterns
© 2008 Solid Quality Mentors
OLTP• Reference• Transactional• History/Audit
OLAP• Dimension• Fact Tables
![Page 17: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/17.jpg)
17
Partition Types: Horizontal
Out of the Box: in SQL 2005/2008
![Page 18: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/18.jpg)
18
Horizontal Partition Methods
• RANGE– Out of the Box (SQL 2005, SQL 2008)
• HASH– Build your own (Calculated
Column/Hash/Range)• LIST
– Build your own (RANGE or Partitioned Views)
© 2008 Solid Quality Mentors
![Page 19: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/19.jpg)
Partition Types: Vertical
19
Out of the Box: (n)text, image, xml, (n)varchar(max), varbinary(max) and CLR Types.
Build your own: Views and Instead of Trigger
![Page 20: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/20.jpg)
Index Structures
20© 2008 Solid Quality Mentors
Clustered Index Non-clustered Index
![Page 21: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/21.jpg)
Partitioned Table/non-partitioned Index
21© 2008 Solid Quality Mentors
Clustered Index Non-clustered Index
![Page 22: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/22.jpg)
Non Partitioned Table/Partitioned Index
22© 2008 Solid Quality Mentors
Clustered Index Non-clustered Index
Filtered Indexes
![Page 23: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/23.jpg)
Partitioned Table/Aligned Index
23© 2008 Solid Quality Mentors
Clustered Index Non-clustered Index
![Page 24: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/24.jpg)
Partitioned ViewCREATE VIEW SalesDataMart.FactSalesByStore WITH SCHEMABINDING AS(SELECT IdDimDate, IdDimStore , SUM(OrderedQuantity) AS OrderedQuantity , SUM(TotalSalesAmount) AS TotalSalesAmount , SUM(TotalProductCost) AS TotalProductCost , COUNT_BIG(*) AS OrderNumFROM SalesDataMart.FactSalesGROUP BY IdDimDate, IdDimStore)GO
CREATE UNIQUE CLUSTERED INDEX PK_FactSalesByStoreON SalesDataMart.FactSalesByStore(IdDimDate, IdDimStore)ON Annual(IdDimDate);GO
![Page 25: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/25.jpg)
Partitioningand Query Performance
![Page 26: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/26.jpg)
26
Agenda
© 2008 Solid Quality Mentors
Why?
• Logical/Physical• Method
How?
What?
Where?
Toolbox
![Page 27: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/27.jpg)
Without Partitions
Disk
File
Filegroup
Partition
Primary
![Page 28: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/28.jpg)
Simple: Partitioned
Disk
File
Filegroup
Partition
Primary 2006 2007 2008 2009
![Page 29: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/29.jpg)
Multiple: Without Partitions
Disk
File
Filegroup
Partition
Primary
![Page 30: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/30.jpg)
Multiple: with Partitions (1/3)
Disk
File
Filegroup
Partition
Primary 2006 2007 2008 2009
High Availability
![Page 31: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/31.jpg)
Multiple: with Partitions (2/3)
Disk
File
Filegroup
Partition
Primary 2006 2007 2008 2009
Performance
![Page 32: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/32.jpg)
Multiple: with Partitions (3/3)
Disk
File
Filegroup
Partition
Primary 2006 2007 2008 2009
![Page 33: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/33.jpg)
PartitioningAvailability and MaintainabilityBackup/Restore
![Page 34: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/34.jpg)
34
Agenda
© 2008 Solid Quality Mentors
Why?
• Pruning• Loading
How?
What?
Where?
Toolbox
![Page 35: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/35.jpg)
Pruning
![Page 36: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/36.jpg)
Sliding Window Loading
![Page 37: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/37.jpg)
37
Agenda
© 2008 Solid Quality Mentors
Why?
How?
What?
Where?
Partitioning Toolbox
![Page 38: Partitioning techniques in SQL Server Eladio Rincon (ERincon@solidq.com)ERincon@solidq.com Javier Loria (javier@solidq.com)javier@solidq.com Solid Quality](https://reader036.vdocument.in/reader036/viewer/2022070323/56649da15503460f94a8d5e8/html5/thumbnails/38.jpg)
Thank You!!Thank You!!
Please remember to fill out evaluations