Presentation is loading. Please wait.

Presentation is loading. Please wait.

Why Should I Care About … Partitioned Views?

Similar presentations


Presentation on theme: "Why Should I Care About … Partitioned Views?"— Presentation transcript:

1 Why Should I Care About … Partitioned Views?

2 SQL Saturday Madison: Silver Sponsors

3 SQL Saturday Madison: Gold Sponsor

4 SQL Saturday Madison: Gold Sponsor

5 Frederick (Rick) Lowe Data FLowe Solutions LLC
DataFLowe

6 I’m Not Here to Start the Retrolution
Partitioned tables are awesome for almost all partitioning cases Historical takeaway from this talk – you’re not doomed if you have pre-2016 Standard Ed. Also, there are a couple of cases where views make sense even in EE

7 First … Why Are Partitioned Tables So Exciting (review)?
Appears to be a normal table Table is broken into multiple partitions based on the value of a single column Migrating a partition in or out is a metadata-only operation (i.e. basically instantaneous) Select statements can eliminate partitions

8 Working With Partitioned Tables (review)
Create a partition function and scheme Build clustered and nonclustered indexes on the partition scheme Views, CRUD etc reference a partitioned table pretty much like any other table SQL Server does all the heavy lifting

9 Partitioned Table (review) Update/Insert/Select MyTable 2005? 2006?
2007? 2008? Partition Scheme Associated With Table P0 P1 P2 P3

10 Working With Partitioned Views
Build individual tables Typically, create check constraints on tables View unions together all underlying tables *Create procedure determines which table to insert the data into *Update/Delete also need to either determine which table to work on or operate on all * Indicates operations can actually sometimes be done on view

11 Partitioned View Worst Case
Update Insert Select UpdateMyTable CreateMyTable vwMyTable 2005? 2006? 2007? 2008? Data Boundaries Coded Into View / Procs MyTbl_05 MyTbl_06 MyTbl_07 MyTbl_08

12 Partitioned View If You’re Lucky
Update Insert Select UpdateMyTable CreateMyTable vwMyTable 2005? 2006? 2007? 2008? Data Boundaries Coded Into View / Procs MyTbl_05 MyTbl_06 MyTbl_07 MyTbl_08

13 Working With Partitioned Views

14 Defining a Partitioned View
CREATE VIEW Sales.vwSalesOrderHeader AS SELECT OrderDate, SalesOrderID, … FROM Sales.SalesOrderHeader_2005 UNION ALL SELECT OrderDate, SalesOrderID, … FROM Sales.SalesOrderHeader_2006 SELECT OrderDate, SalesOrderID, … FROM Sales.SalesOrderHeader_2007 SELECT OrderDate, SalesOrderID, … FROM Sales.SalesOrderHeader_2008; CREATE PROCEDURE Sales.SalesOrderHeader_Create AS INSERT INTO Sales.SalesOrderHeader_2008( OrderDate, SalesOrderID, ….) VALUES( …. )

15 Adding A New Table to View
Create table with appropriate structure Add check constraints Import data, if appropriate Create indexes Add new UNION ALL to view Update Stored Procedures

16 Removing Table From View
Update stored procedures, if necessary Remove appropriate UNION ALL from view Data can now be truncated / Archived / etc

17 Demo

18 “Table” Elimination Partitioned tables only search partitions that match WHERE clause Note: in practice, this typically isn’t a performance “game changer” SQL Server will leverage check constraints by using startup conditions in execution plans … so check constraints do give partitioned views similar “table elimination”

19 Use Cases For Partitioned Views

20 Limitations of Partitioned Tables
Prior to MSSQL 2016 SP1, Enterprise feature Horizontal partitioning scheme only Statistics tracked at table (not partition) level Indexing defined at the table level Partitioning can only occur on one column Prior to MSSQL 2014, online rebuild only supported at table level

21 Vertical Partitioning
Horizontal partitioning separates groups of rows into partitions (table) or tables (view) Vertical partitioning on the other hand separates columns from the rest of the table Can be driven by normalization In practice, this term is more often associated with row splitting

22 Horizontal Partition

23 Vertical Partition

24 Before Row Splitting ID_Int ID_GUID Name … Big_xml Rating 1 1a23… Anna
<doc <a name=a/>… /> 2 2ff0… Bubba <doc <a name=b/>… /> 9001 10ab… Goku

25 After Row Splitting ID_Int ID_GUID Name … 1 1a23… Anna 2 2ff0… Bubba
9001 10ab… Goku ID_Int Big_xml Rating 1 <… /> 2 9001

26 Before Row Splitting ID_Int ID_GUID Name … SSN Salary 1 1a23… Anna
$150,000 2 2ff0… Bubba $80,000 9001 10ab… Goku $125,000

27 After Row Splitting ID_Int ID_GUID Name … 1 1a23… Anna 2 2ff0… Bubba
9001 10ab… Goku ID_Int SSN Salary 1 $150,000 2 $80,000 9001 $125,000

28 Statistics Sampling

29 Connect the Dots Simply

30 Possible Answer

31 Remember This? 2005? 2006? 2007? 2008? Data Boundaries Coded Into View / Procs MyTbl_05 MyTbl_06 MyTbl_07 MyTbl_08

32 Multi-Dimensional Partitioned View 2005? 2006? 2007? 2008?
Data Boundaries Coded Into View / Procs MyTbl_05 MyTbl_06 MyTbl_07 Premium? no yes MyTbl_08 Fast_SSD

33 SQL Saturday Madison After Party
Join for some networking and fun. Appetizers provided. Madison’s 119 King Street Madison, WI 53703

34 Thank You Rick Lowe – DataFLowe

35 Partition Function vs Scheme
Partition Functions Partition Scheme

36 Defining a Partitioned Table (review)
CREATE PARTITION FUNCTION MyFunction(DATE) AS RANGE RIGHT FOR VALUES (…); CREATE PARTITON SCHEME MyPartitionScheme AS PARTITION MyFunction TO( … ); CREATE TABLE Sales.SalesOrderHeader( OrderDate DATETIME2(3), SalesOrderID INT IDENTITY NOT NULL, CONSTRAINT PK_SalesOrderHeader PRIMARY KEY CLUSTERED(OrderDate, SalesOrderID) ON MyPartitionScheme( OrderDate ) );

37 Moving Data Around – Partitioned Table (review)
To extract an entire partition from a table Use ALTER TABLE SWITCH to instantly switch the partition out to a new table Archive / delete / manipulate the new table To add existing data to partitioned table Get data into table with same structure/indexing Add check constraints Switch the new table into the partitioned table


Download ppt "Why Should I Care About … Partitioned Views?"

Similar presentations


Ads by Google