![][1]
Сегодня буду рассказывать про внутренности базы данных, про внутренности ОС и о том, что происходит на стыке. Когда я говорю про базу данных, я имею в виду в основном ввод/вывод, управление памятью и обработку транзакций. Это совершенно не про SQL, не про индексы, не про блокировки и т.д. Только ввод/вывод, управление памятью и транзакции.
В тех местах, когда я буду упоминать про базы данных, я буду ссылаться на InnoDB, которая мне наиболее знакома.
![][3]
Если мы посмотрим на движок транзакционной базы, мы увидим примерно такую же картинку. У нас есть буфер pool, в нем живут странички индекса, странички данных. Все эти странички выводятся через транзакционный лог, когда они изменились, проходит это все через планировщик ввода/вывода и в ту, и в другую сторону. Планировщик ввода/вывода, когда он считывает что-то с диска, он делает read ahead. Все это проходит через файловую систему, но это дальше, на диске.
[Читать дальше →][4]
[1]:
https://habrastorage.org/getpro/habr/post_images/d5d/cc2/f98/d5dcc2f98b2d349f3ba80cf9622bcb85.jpg
[2]:
https://habrahabr.ru/users/krizhanovsky/
[3]:
https://habrastorage.org/getpro/habr/post_images/457/bca/6c2/457bca6c2b8181cfe5b1203c0417b4d7.png
[4]:
https://habrahabr.ru/post/335260/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut