Skip to main content
14 votes
Accepted

Index Pages (page type 2)

Index pages (type 2) hold the non-leaf level(s) of the clustered index b-tree. The leaf level of the clustered index is just the underlying object's data pages themselves. In the special case where ...
Paul White's user avatar
  • 88.1k
10 votes
Accepted

MS SQL Page split confusion

From Books Online (emphasis mine): FILLFACTOR =fillfactor Applies to: SQL Server 2008 through SQL Server 2016, SQL Database V12. Specifies a percentage that indicates how full the Database ...
Michael Green's user avatar
7 votes

Can lowering fill factor result in more page splits?

When you have lots of page splits caused by random middle-of-BTree inserts, your pages will naturally average around 65%* full. Split pages start at 50% full and any that fill up past 100% get split ...
David Browne - Microsoft's user avatar
5 votes

Updating rows in Azure SQL Server causing unexpected page splits

After a lot of testing, I believe that Accelerated Database Recovery is the cause. When editing a row, Accelerated Database Recovery will store the difference between the original row and the new row. ...
Andrew Marshall's user avatar
4 votes

Page split where existing rows are moved to different page occurs only for updates and non-sequential inserts?

For a SQL Server rowstore index, there are two kinds of page splits. Others have mentioned, as has the poster of the question, that updates or inserts in the interior of the logical order of the ...
sqL_handLe's user avatar
  • 1,511
3 votes

Finding reason for page splits

I'd suggest the first thing to determine is whether or not the server workload actually struggles during those spikes. Do you see for example IO being maxed out, or other queries being blocked (due to ...
T.H.'s user avatar
  • 913
3 votes
Accepted

Can lowering fill factor result in more page splits?

It's really not possible that changing the fill factor would cause more page splits, assuming that you are measuring the page split rate immediately after a 100% fill factor rebuild/reorg vs. an 85% ...
Tony Hinkle's user avatar
  • 7,974
3 votes

How to find if my innodb row uses overflow/off pages?

SHOW TABLE STATUS LIKE 'tablename'; -- There are 3 length columns (Data, Index, Free). These are in bytes; divide by 16KB to get pages. It is more complex to discover on-record vs off-record storage....
Rick James's user avatar
  • 78.9k
2 votes
Accepted

Can an InnoDB page contain data from different indexes?

No a page can only hold records from a single index. see: innodb page header docs long story short - you have a field PAGE_INDEX_ID which is an identifier of the index the page belongs to. Regards, ...
cohenjo's user avatar
  • 1,198
1 vote

Page split where existing rows are moved to different page occurs only for updates and non-sequential inserts?

If the row to be inserted has a key value greater than any on the target page then a page split occurs, but no rows are migrated to the new page. The new page is allocated, the forward and reverse ...
David Browne - Microsoft's user avatar
1 vote

Need some insights on 'index_page' variables in Innodb_Metrics Table

How big are the rows? I'm surprised that the "splits" numbers are similar. "Merge" probably refers to what may happen after DELETEing a row or UPDATEing a row such that the row is smaller. The ...
Rick James's user avatar
  • 78.9k
1 vote

How are page splits determined internally in MySQL?

The author is talking about PAGE_N_DIRECTION. This has nothing to do with triggering splitting, which is performed by page_dir_split_slot. Splitting/merging is determined by a MIN and MAX on the ...
Evan Carroll's user avatar
  • 64.1k
1 vote

Page splits on an empty table

if DB_ID(N'DB_NAME') returns null you will get object_id's from all databases. Try running from the target database: use db_name SELECT IOS.index_id, O.NAME AS ...
David Browne - Microsoft's user avatar
1 vote

Is it possible to get a "pages touched" statistic from PostgreSQL?

You can analyze your query with EXPLAIN (ANALYZE, BUFFERS) (BUFFERS being the essential option to see details about memory utilization). A "buffer" in RAM is the equivalent of a "block" on disk, 8 kb ...
Erwin Brandstetter's user avatar
1 vote

Is there a way to track page splits on an InnoDB table?

I don't think there is that specific metric. However, looking at SHOW STATUS LIKE 'Innodb%'; Some interesting things: Innodb_pages_written / Innodb_buffer_pool_write_requests -- over, say, 15% ...
Rick James's user avatar
  • 78.9k

Only top scored, non community-wiki answers of a minimum length are eligible