• INNOCENT GUMBO - Saturday, May 6, 2017 11:18 AM

    Hi Hugo;

    I am sorry to get into this late. SQL Server 2016 became smarter with regards to Segment reading. Have a look at this below. I know you have already observed this but SQL Server 2014 and 2012 do not specify Segments read and those skipped but only dwell on Logical reads for you to determine if there are skipped Segments:

    (1 row(s) affected)
    Table 'FactOnlineSales'. Scan count 8, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 8468, lob physical reads 1, lob read-ahead reads 0.
    Table 'FactOnlineSales'. Segment reads 9, segment skipped 6.
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

    (1 row(s) affected)
    Table 'FactOnlineSales'. Scan count 8, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 4282, lob physical reads 0, lob read-ahead reads 0.
    Table 'FactOnlineSales'. Segment reads 5, segment skipped 10.
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
     

    Yes, that is a 100% correct observation. Version over version things improved with the columnstore. This series (with the exception of the last level, which is now in final edit stage) focuses on 2012 and 2014 only, because that was the scope when we started (we added the last level later).
    Being able to see rowgroups read and skipped from the STATISTICS IO was a huge step forward. (Although I am not happy that they used the term "segments" to show the number of rowgroups)


    Hugo Kornelis, SQL Server/Data Platform MVP (2006-2016)
    Visit my SQL Server blog: https://sqlserverfast.com/blog/
    SQL Server Execution Plan Reference: https://sqlserverfast.com/epr/