SQL SERVER – Tips from the SQL Joes 2 Pros Development Series – Introduction to Page Split – Day 20 of 35

Answer simple quiz at the end of the blog post and –
Every day one winner from India will get Joes 2 Pros Volume 3.
Every day one winner from United States will get Joes 2 Pros Volume 3.

From yesterdays post we learned that the clustered index is the placement order of a table’s records in memory pages. When you insert new records, then each record will be inserted into the memory page in the order it belongs.

Rick Morelan’s SSN (555-55-5555) belongs with the 5’s, so his record will be physically inserted in memory between Jonny Dirt and Sally Smith. Is there enough room in this page to accommodate his record without having to move other record(s) to a new page? Yes there is, and afterwards the first memory page is full. If you insert a new record(s), it is inserted into the memory page in the order it belongs.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_1

Next, we have another new record coming in, Vince Verhoff. His record belongs in sequence after Irene Intern, so he will begin occupying the next page of memory.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_2

The clustered index is the placement order of a table’s records in memory pages. When you insert new records, then each record will be inserted into the memory page in the order it belongs.

Page Splits

Page splits arise when records from one memory page are moved to another page during changes to your table. Here we see another new record (Major Disarray) being inserted, in sequence, between Jonny and Rick. Since there’s no room in this memory page, some records will need to shift around. The page split occurs when Irene’s record moves to the second page.

Page splits are considered very bad for performance, and there are a number of techniques to reduce, or even eliminate, the risk of page splits.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_3

Next we’ll see this data entered into the HumanResources.Contractor table, which contains a clustered index on the SSN field.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_4

Notice from the figure above that SSN is set as a primary key. A primary key is a constraint which ensures non-nullability and uniqueness (i.e., no duplicate values) in a field. Only one primary key per table is allowed. When you create a primary key, SQL Server creates two objects:  the primary key and an index (which by default is clustered).  The data in this table will be physically ordered by SSN.  Now insert the first three records into the table.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_5

Let’s use our same assumption that four records fit into a page of memory. These three records would all occupy the same memory page.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_6

So that means there is room in the same memory page for an INSERT to add one additional record to this table, for a total of four records.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_7

In our example, the first memory page is now full, since it contains four records. The second memory page is empty. The layout in the memory page is depicted with the fourth record (highlighted) added between Jonny Dirt and Sally Smith. The two bottom records (Sally Smith and Irene Intern) shifted down to make room for the “Rick Morelan” record to be inserted in proper sequence, according to the value of the clustered field (SSN).

The next insert (for Vince Verhoff – see figure below) goes straight into the second memory page and does not cause a page split. Now look at the SSN values in the table. Now the SSN value of the next record to be added will tell us whether there will be a page split. Any subsequent INSERT with an SSN value within the range 888-88-8889 through 999-99-9998 would go into one of the three available rows in the second memory page.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_8

Any SSN value below 888-88-8888 will cause a page split. The 444-44-4444 Major Disarray value must be inserted in Page 1 between Jonny and Rick, a page split is caused and Irene Intern’s record must move to Page 2.  Notice that it won’t take long before almost every insert causes a page split.

SQL SERVER - Tips from the SQL Joes 2 Pros Development Series - Introduction to Page Split - Day 20 of 35 J2P_20_9

NOTE: Please note that this is Level 100 explanation and how the rows are ordered and B Trees are organized are out of the scope of this article.

NOTE1: This article is just a introduction and not a deep dive into the storage structure. Here is the MSDN page for complete reference.

Note: If you want to setup the sample JProCo database on your system you can watch this video. For this post you will want to run the SQLArchChapter4.2Setup.sql script from Volume 3.

Question 20

When do page splits happen?

  1. When records from one memory page are moved to another page during changes to your table.
  2. When records from one memory page are collapsed into fewer pages from excessive deletes.
  3. When you insert records in order by the clustered index and you table needs to claim more memory space.

Rules:

Please leave your answer in comment section below with correct option, explanation and your country of resident.
Every day one winner will be announced from United States.
Every day one winner will be announced from India.
A valid answer must contain country of residence of answerer.
Please check my facebook page for winners name and correct answer.
Winner from United States will get Joes 2 Pros Volume 3.
Winner from India will get Joes 2 Pros Volume 3.
The contest is open till next blog post shows up at which is next day GTM+2.5.

Reference:  Pinal Dave (https://blog.sqlauthority.com)

Joes 2 Pros, SQL Scripts
Previous Post
SQL SERVER – Tips from the SQL Joes 2 Pros Development Series – The Clustered Index – Simple Understanding – Day 19 of 35
Next Post
SQL SERVER – Tips from the SQL Joes 2 Pros Development Series – All about SQL Statistics – Day 21 of 35

Related Posts

73 Comments. Leave new

  • ans is option#1

    INDIA

    Reply
  • Answer is #1

    When records from one memory page are moved to another page during changes to your table.

    This happens when a page is full and an inserted record belongs between two existing records. This causes some records on page X to need to be shifted downward and to another page so that the newly inserted record will fit where it belongs in the clustered index sequence

    Deb – USA

    Reply
  • Hi,

    Option 1 When records from one memory page are moved to another page during changes to your table is correct.

    Thanks

    Sudhir Chawla
    New Delhi, India

    Reply
  • Hi All

    I want to ask one question.

    I have one table Emp and Field is EmpId and EmpName
    If I create non-clustered index on empid then will my query perform well.

    with regds
    Premchand

    Reply
  • 1.When records from one memory page are moved to another page during changes to your table.

    Gordon Kane
    USA

    Reply
  • dilipkumarjena
    August 20, 2011 8:12 pm

    The Correct answer for the above question is Option #1.

    When records from one memory page are moved to another page during changes to your table.

    This is the correct answer.

    Explanation:

    what is a page split?

    “Page Splits” signals the number page splits for data pages, clustered index pages, or non clustered index pages because there was not enough room for a new row(data inserted).

    Explanation:

    When a data row is inserted into the table with a clustered index, the row must be placed in physical order according to the key value (SSN as Explained) .

    Index rows must also be placed in physical order on the pages. If there is not enough room on a page for a new row,SQL (Adaptive) Server splits the page, allocates a new page, and moves some rows to the new page.

    Page splitting incurs overhead because it involves updating the parent index page and the page pointers on the adjoining pages and adds lock contention. For clustered indexes, page splitting also requires updating all nonclustered indexes that point to the rows on the new page.

    Other Reasons why page split happens:

    • A page split occurs when there is no enough space left to perform an INSERT in the available memory/space.
    • In this case the SQL Server also needs to updae the indexes related to the queries depending on the page splits.
    • The SQL Servers performance is affected if there are a lot of page splits.

    The factors that affect the number of page splits are:
    1. Number of users
    2. Level of user activity
    3. The frequency of the rebuild of indexes
    4. The primary key being a clustered index
    5. The performance of your I/O subsystem
    6. Read or write operations
    7. The fill-factor used in table indexes
    • Performance Monitor can be used to watch the SQLServer:Access Methods:Page Splits/sec counter.
    • Solution to reduce the number of page splits:
    1. Increase the fillfactor on your indexes.
    2. Rebuild your indexes more often.
    3. Add clustered indexes to your monotonically increasing primary keys.
    4. Get a faster I/O subsystem.

    Dilip Kumar Jena
    Country : INDIA

    Reply
  • Page splits arise when records from one memory page are moved to another page during changes to your table. The correct option is 1.

    (Sale, Nigeria)

    Reply
  • Kalyanasundaram.K
    August 20, 2011 9:16 pm

    Answer : Option 1

    1) When records from one memory page are moved to another page during changes to your table.

    Chennai, TamilNadu, India

    Reply
  • Correct Answer is: Option 1

    Thanks,
    Basavaraj
    India

    Reply
  • Correct Answer is: Option 1

    Thanks,
    kulwant
    Delhi
    India

    Reply
  • vinay (@vinayprasadv)
    August 20, 2011 10:32 pm

    Answer is :

    1.When records from one memory page are moved to another page during changes to your table.

    Vinay
    Pune, India

    Reply
  • Answer is Option 1 –>
    1.When records from one memory page are moved to another page during changes to your table.

    Shiv Rampal
    Indianapolis, USA

    Reply
  • Partha Dutta Gupta
    August 20, 2011 11:35 pm

    The correct answer is both 1) and 2).
    Page splits arise when records from one memory page are moved to another page during changes in the table. Due to excessive delete record may need to be shifted to previous page ,as free space may arise in previous pages. For example suppose there are 10 records in Marketing_lead table with having ID 1 to 10 . Assuming 4 record in each memory page there will be 3 memory pages.
    Now, if ID 3,6,7,8,9,10 is deleted then there will be vacant space in the first page containing record with ID 1,2,and 4. And the second page record with ID 5 will be shifted to the first page.

    Country –> INDIA

    Reply
  • Correct answer : option No : 1

    shekhar gurav.
    country: india

    Reply
  • #1

    Page splits occur when records from one memory page are moved to another page during table changes

    Dan
    NJ, USA

    Reply
  • Page splits happen:

    1.When records from one memory page are moved to another page during changes to your table.

    Country: United States

    Reply
  • Hi Pinal,

    Challenge:
    Question 20
    When do page splits happen?

    1.When records from one memory page are moved to another page during changes to your table.
    2.When records from one memory page are collapsed into fewer pages from excessive deletes.
    3.When you insert records in order by the clustered index and you table needs to claim more memory space.

    Correct Answer:
    The correct answer is choice #1: When records from one memory page are moved to another page during changes to your table.

    Explanation:
    A Page Split occurs when a page in memory is full and a record on that memory page must be moved to another memory page to make room for a new record that has a primary key (clustered index) value less than the value of the record to be moved (presuming your clustered index is sorted in ascending order).

    Country:
    United States

    Thanks for the knowledge!

    Regards,

    Bill Pepping

    Reply
  • Garry Bargsley
    August 21, 2011 4:51 am

    I think the answer is #1.
    Garry Bargsley
    Arlington, TX, USA

    Reply
  • The correct answer is #1
    When records from one memory page are moved to another page during changes to your table.

    I am from USA

    Reply
  • @premchand

    If your EmpID field is an identity field, then it will make most sense to make this index to be clustered for the best performance, in my opinion

    Reply

Leave a Reply