|
|
|
SQL Server: Internals
The Anatomy of Row & Page Compressed Integers
How are integers stored on disk when using row or page compression?
The Anatomy of Vardecimals
How are vardecimals stored on disk? Here's a deep dive explanation.
Determining If Vardecimal Is Enabled For a Table Without Using OBJECTPROPERTY
How do we determine if vardecimal is enabled for a table, without using the OBJECTPROPERTY function?
Presenting a free preview of my SQL Server Storage Engine and MDF File Internals training day
Join me for a free preview of my SQL Server Storage Engine and MDF File Internals training day.
What is the size of the LOB pointer for (MAX) types like varchar, varbinary, etc?
Learn about the different pointer types & sizes for (MAX) LOB data types - BLOB Inline Data, BLOB Inline Root and Textpointer.
The garbage null bitmap and why you can’t rely on it solely
Don't trust bits in the null bitmap as they may contain garbage. Here's an example of how it may occur and why it doesn't matter.
The 8 byte record that was 9 bytes while making no sense
Sometimes record structures aren't straightforward. Here's an example of a record that doesn't make any immediate sense when parsing it.
The null bitmap is *not* always present in data records
Contrary to popular belief, the null bitmap is not always present in data records. Here's an example of a data record that doesn't contain a null bitmap due to using sparse columns.
Sparse column storage – the sparse vector
Sparse columns are stored entirely different from normal fixed length and variable length columns. This post demonstrates & parses the sparse vector structure which stores the sparse columns.
Identifying complex columns in records
How do we distinguish a normal variable length column value from one containing a complex value like a row-overflow pointer, back pointer or a sparse vector?
Exploring the sys.system_internals_partition_columns.ti field
Learn how the sys.system_internals_partition_columns view retrieves its values from the sysrscols base table column, ti.
Determining the uniquifier column ordinal for clustered and nonclustered indexes
Once you know what the uniquifier is, you may thirst for more details. This post outlines how to determine where the uniquifier is stored internally in records.
Getting bit by datetime rounding or why 23:59:59.999 > '23:59:59.999'
Why won't SQL Server store the datetime values you insert? Learn & understand why SQL Server will round any values of .998 or .999 to either .997 or .000 precision.
Anatomy of a forwarded record – the back pointer
Learn how a forwarded record in a heap stores a back pointer that refers to the original record from where it's forwarded.
Anatomy of a forwarded record – the forwarding stub
Learn the internals of how a record gets forwarded in a heap. Specifically we'll look at the forwarding stub that is left behind, pointing at the forwarded record.
Saving space by storing decimal values in integer data types
Learn how to effectively store decimal values in SQL Server while taking up as little space as possible.
Reverse engineering SQL Server page headers
Learn the internal format of a SQL Server page header as presented by DBCC PAGE. Using reverse engineering I'll show how to parse the header data.
Bridging the gap between smallint and int
Learn the difference between smallint and int, as well as how to mimic the MySQL mediumint data type in SQL Server.
Reading bits in OrcaMDF
Learn how bits are stored internally in SQL Server. In this post I'll also show how OrcaMDF parses bits from records.
Parsing dates in OrcaMDF
Learn how SQL Server data types like date, datetime and smalldatetime are stored internally. In this post I'll also show how OrcaMDF parses these types.
Introducing OrcaMDF
Learn about OrcaMDF, the open source library for parsing SQL Server MDF files, by Mark S. Rasmussen.
Converting page pointers into a human readable format
Learn how to convert the first_page, root_page, first_iam_page and general page pointers from hexadecimal to a human readable format.
Deciphering a SQL Server data page
Want to learn to dechiper a SQL Server data page? In this post I'll go through the contents of a data page using the SQL Server DBCC PAGE command.
|