As a rule, the use of large blocks is of little use.
Suppose your operating system is super-scientific, and each read or write operation will corrupt the hard drive (in practice, you will often find that writes are queued and read with read-forward buffering, which reduces the advantage of using large buffers in your application code) .
Then each block costs you (say) 2x10ms for two requests (one for reading and one for writing), and a small dot increases the size of your block as soon as the time for actual reading and writing is significantly longer. Really fast HD can read and write at a speed of 150 MB / s, in which case 10 ms will correspond to 1.5 MB read / write, and you will get little to lock beyond 15 MB.
In practice (1) your search time is likely to be less, (2) your read and write bandwidth is likely to be longer, and (3) your OS and disk hardware are likely to cache and operate things for you ; you will probably see little or no use of blocks larger than 100 KB.
(You should probably compare the different locks and see what you get on your own system.)
Gareth mccaughan
source share