Протокол Write-Ahead и потеря лога
Недавно на форуме Russian SQL Server User Group был задан вопрос, который, я уверен, возникает у многих при изучении работы сервера баз данных, но обычно его стесняются спрашивать, полагая, что раз вопрос очевиден, то и ответ должен лежать где-то на поверхности, а раз я его не вижу, значит, дело во мне :) Во всяком случае у меня такой вопрос в свое время возникал. Протокол Write-Ahead гарантирует, что транзакция не будет зафиксирована, прежде чем изменения из кэша не будут записаны на диск в журнал транзакций. Сами модифицированные страницы данных в буфер пуле (они называются грязными) скидываются на диск не мгновенно, а постепенно в асинхронном режиме. Следовательно, возможна ситуация, когда, например, диск с журналом транзакций вышел из строя, а грязные страницы из буфер пула еще не успели записаться в файл базы. Что произойдет с транзакционной целостностью в этом разе? Читайте https://sqlclub.ru/forum/viewtopic.php?f=6&t=1447
Comments
- Anonymous
November 09, 2008
PingBack from http://mstechnews.info/2008/11/%d0%bf%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb-write-ahead-%d0%b8-%d0%bf%d0%be%d1%82%d0%b5%d1%80%d1%8f-%d0%bb%d0%be%d0%b3%d0%b0/