Как СУБД обеспечивает многопользовательское взаимодействие с одним файлом базы данных?

Мне интересно как огромное количество соединений в итоге работают с одним файлом mdf в случае с sql server? За счет чего достигается параллельность работы с одним файлом? Посоветуйте книги с более детальным описанием работы СУБД.


Ответы (1 шт):

Автор решения: S.H.

Я думаю, что в случае с базой данных понимание того, как происходит работа с файлами, играет отрицательную роль.

Вам - автору вопроса - кажется, что работа с базой данных - это как работа с файлом, только пользователей много и она работают с файлом одновременно.

Но это не так.

База данных - это программа, которая "одной стороной" торчит в сторону пользователей, а внутри у себя поддерживает работу с файлом.

Когда пользователь делает запрос - он взаимодействует с программой. У программы в памяти есть набор данных. Если запрос относится к этому набору - программа (sql server) отвечает вообще без обращения к файлу.

Если набор данных нужно изменить - то это изменение сначала происходит в памяти, и только потом, в соовтествии с политикой записи в файл, это изменение будет записано. Эта политика может быть настроена так, что запись в файл может быть отложена.

Самое главное - что нет прямого соответствия между обращением к серверу и обращением к файлу.

Есть множество статей по тому, как работают базы данных. Я постарался найти такую, котрая без зубодробительной алгебры и алгоритмов в самом начале - вот вроде неплохая.

→ Ссылка