Файловые системы, которые поддерживают отложенное размещение, не создают новые файлы в любом месте на диске.Многие новые файловые системы поддерживают упаковку очень маленьких файлов на свои собственные страницы или совместное использование их с метаданными (например, reiser помещает очень маленькие файлы в inode?).Но для больших файлов, в основном, да.
Вы можете сделать это, но кэш страницы ОС всегда будет считывать весь блок и просто копировать запрошенные вами биты в память вашего приложения..
Это зависит от того, используете ли вы прямой или не прямой ввод-вывод.
Если вы используете прямой ввод-вывод, который обходит кеш ОС, вы не используете mmap.Большинство баз данных не используют mmap и используют прямой ввод-вывод.
Прямой ввод-вывод означает, что страницы не проходят через кеш страниц ОС, они вообще не кэшируются ОС и не проталкивают другиеблокирует из кеша ОС.Это также означает, что все операции чтения и записи должны выполняться на границах блоков.Границы блоков иногда могут быть определены с помощью вызова statfs в файловой системе.
Большинство баз данных, похоже, придерживаются мнения, что им следует самим управлять собственным кэшем страниц и использовать ОС только для физических операций чтения / записи.Поэтому они обычно используют прямой и синхронный ввод-вывод.
Линус Торвальдс, как известно, не согласен с таким подходом.Я думаю, что производители действительно делают это, чтобы добиться лучшей согласованности поведения в разных ОС.