TGViewer
Linux Education Linux Education @linux_education · 11.1K subscribers
Post #2577 1.25K
`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 в базах выглядит таким странным: там важны не только данные, но и то, как они лежат в памяти.

@linux_education
  • 👍 4
More from @linux_education
  1. Oct 15, 2026🖥 Линус Торвальдс ответил противникам ИИ: тогда и компилятором не пользуйтесь Торвальдс в…
  2. Oct 14, 2026Post #2854
  3. Oct 14, 2026@linux_education
  4. Oct 13, 2026‍🚨 ИИ-черви могут научиться размножаться без дата-центров Anthropic проверила, достаточно…
  5. Oct 12, 2026🐧 Линус Торвальдс использует Claude Code для ускорения ядра Linux. Он опубликовал экспери…
  6. Oct 11, 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 →