Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Partitioning Design

1,163 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Partitioning Design

  1. 1. Partitioning DesignFor Performance and Maintainability Martin Cairns http://sqlbyparts.com http://twitter.com/MartinCairnsSQL
  2. 2. Who am I?
  3. 3. Partitioning DefinedPartitioning (noun)1. the action or state of dividing or being divided into parts2. a structure dividing a space into two parts Source: http://oxforddictionaries.com/definition/english/partition
  4. 4. Types of Partitioning• Horizontal • Partition Table by Rows• Vertical • Partition Table by Columns• File Group • Partition Tables by File Group
  5. 5. Horizontal Partitioning Divides the rows into small sets by boundaries Year PK Order ID Product ID Qty Cost Line XML 2010 1 1 1 5 1.5 <Line… 2010 2 1 1 7 2 <Line… 2011 1000000 20000 345 1000 5 <Line… 2011 1000001 20000 347 3000 12 <Line… 2012 2000000 40000 705 8000 3 <Line… 2012 2000001 40001 706 3000 7 <Line…
  6. 6. Vertical Partitioning Divides columns from one table into multiple tables Year PK Order ID … Year PK Line XML 2010 1 1 … 2010 1 <Line… 2010 2 1 … 2010 2 <Line… 2011 1000000 345 … 2011 1000000 <Line… 2011 1000001 347 … 2011 1000001 <Line… 2012 2000000 705 … 2012 2000000 <Line… 2012 2000001 706 … 2012 2000001 <Line…
  7. 7. File Group Partitioning File group partitioning is separating the storage of tables and indexes onto separate database files During a Primary File Group restore the whole database will be offline Separate the system & user tables to allow the quickest restore time Since the partitioned database is made up of smaller parts it is easier to manage the storage location of the files
  8. 8. Using Table Partitioning Supports Horizontal Partitioning Partition Function defines boundaries based on a single column Partition Scheme defines the File Group Inserts automatically supported All partitions share the same definition as the table (indexes, columns, fill factor etc)
  9. 9. Table Level Limitations Only ~200 steps for each statistics across the whole table Online Index rebuilds are for the whole table not individual partitions Fill Factor Lock settings (Row, Page, Escalation, etc) Indexes are defined for the whole table rather than partitions
  10. 10. Using View Partitioning View Partitioning allows you to overcome Table Level Constraints Check Constraints used to define partitions Combine all tables with a UNION ALL View Can be used together with Table Partitioning Trigger required to allow INSERT with Identity column Allows more complex partitioning schemes
  11. 11. Candidates for Partitioning Large vs. Small Tables Replicated vs. Non-Replicated Tables Normal vs. BLOB columns Write Heavy Current data vs. Heavily Read Historic data Read Write vs. Read Only Tables
  12. 12. Partial Database Availability Also referred to as Piecemeal Restore Full Recovery Model is Required Individual File & File Groups Restore Only the Primary File Group is required to restore a database Allows restoring a subset of a correctly partitioned database for quicker recovery from a disaster
  13. 13. Tipping Point Why is it Table Scanning As the number of rows in a table increase the depth of the B+Tree increases The number of Page Reads for a lookup is equal to the depth of the B+Tree The Tipping Point is the point where a Full Table Scan requires less Page Reads than the lookups
  14. 14. What Does Partition Give Us Choices  Using different Tiers of Storage  Allows quicker recovery strategies  Allows partial restores of the database Performance  Allows reduction of overhead of backups  Allows better query plans due to more accurate statistics on large tables
  15. 15. Demos Moving Tables to File Groups Partial Restore + Using Partial Restore to Initialise Replication Moving Partition Between Tables For Current vs. Historic Show how View Partitioning can present a single view of all tables & still support partition elimination

×