TGViewer
Linux Books Linux Books @linux_read · 16.1K subscribers
Post #616 3.18K
`O_DIRECT`: когда база данных обходит page cache

В Linux флаг O_DIRECT позволяет читать и писать файл почти напрямую, минуя page cache ядра.

Зачем это нужно базам данных?

У PostgreSQL, MySQL, RocksDB и других систем часто уже есть свой buffer pool.
Если ещё и ядро будет кэшировать те же страницы, получится двойное кэширование и лишняя трата памяти.

Но у O_DIRECT есть неприятное условие: всё должно быть выровнено по блоку.

• buffer
• file offset
• размер чтения / записи

Например, под 4 KB блоки нельзя просто так прочитать 123 байта в любой `malloc`-буфер.
Промахнулся с alignment — read() вернёт EINVAL.

Именно поэтому низкоуровневый I/O в базах выглядит таким странным: там важны не только данные, но и то, как они лежат в памяти.
  • ❤ 3
  • 🔥 2
  • 👍 1
More from @linux_read
  1. Sep 11, 2026🐧 Управление пакетами в Linux через yum На старых системах семейства RHEL для установки и…
  2. Sep 4, 2026⚡️ AI-агенты научились автономно разрабатывать софт несколько дней подряд В новой работе п…
  3. Sep 4, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  4. Sep 4, 2026💡 Продвинутый Linux Совет - файл удалён, а место на диске не освободилось Иногда rm удаля…
  5. Aug 25, 2026Ядру Linux исполнилось 35 лет 25 августа 1991 года после пяти месяцев разработки 21-летний…
  6. Aug 23, 2026Бесплатная книга, после которой компиляторы перестают казаться магией По ходу книги вы соб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →