Following is a SQL Server I/O block size reference table. Given its ability to adjust the block size based on operation, how does formatting disk using 64KB vs 4KB allocation units help a read query?
For example, read ahead scans have block size of 128KB to 512KB, this means SQL Sever will fetch a 128-512KB block from disk. How does the disk format of 4KB vs 64KB affect the read query?
The above table is from What is SQL Server’s IO Block Size? by Argenis Fernandez
I have benchmarked by creating two databases with one database on 4KB and the other on 64KB formatted drives. I ran a select query on a large table separately and don't see any significant difference.
Understanding SQL Server IO Size by Anthony Nocentino concludes:
SQL Server performs IOs in variable size based on the type of IO performed and that IO size is independent of NTFS Allocation Unit Size.
My thoughts:
I think that the 64K recommendation helps optimize reads because: Sql server inserts data into extents. An extent consists of 8*8KB pages. So when disk is formatted with 64KB allocation unit then those pages will sit next to each other on disk.
This helps read query maybe because when it will fetch Unit of size 128-512KB, is will possibly be a contiguous set of 64KB with 8*8KB extents sitting close to each other. Hence optimizing read query performance. However this maybe relevant and useful only when 1 drive is assigned to 1 db, and less relevant when multiple dbs share a drive and irrelevant when using a SAN based drive?