Протокол Write-Ahead и потеря лога


Недавно на форуме Russian SQL Server User Group был задан вопрос, который, я уверен, возникает у многих при изучении работы сервера баз данных, но обычно его стесняются спрашивать, полагая, что раз вопрос очевиден, то и ответ должен лежать где-то на поверхности, а раз я его не вижу, значит, дело во мне 🙂 Во всяком случае у меня такой вопрос в свое время возникал. Протокол Write-Ahead гарантирует, что транзакция не будет зафиксирована, прежде чем изменения из кэша не будут записаны на диск в журнал транзакций. Сами модифицированные страницы данных в буфер пуле (они называются грязными) скидываются на диск не мгновенно, а постепенно в асинхронном режиме. Следовательно, возможна ситуация, когда, например, диск с журналом транзакций вышел из строя, а грязные страницы из буфер пула еще не успели записаться в файл базы. Что произойдет с транзакционной целостностью в этом разе? Читайте http://sqlclub.ru/forum/viewtopic.php?f=6&t=1447


Skip to main content