sql server是先写日志还是数据

王朝mssql·作者佚名  2006-11-24
宽屏版  字体: |||超大  

我们知道SQL是在内存缓存区中对日志和数进行操作,然后再写入物理介质上。内存中的日志缓冲区与数据缓冲区是独立管理的。那么日志和数据到底是谁先写入物理介质?还是写入顺序无关紧要呢?

一、什么是WAL

sql server2000与对没有提交的事务,在把数据写入物理介质之前,必须先把日志写和物理介质。这就是WAL(Write ahead Log),先写日志的原则。

二、为什么必须WAL

让我们假设一下先写入数据这种情况。如先把数据缓冲区的数据写入物理介质,数据已发生变化。但因为一些原因日志缓冲区的数据丢失了,则会造成数据的不一致。而日志缓冲的数据已补破坏,数据到底发生了那些变化也无从考究,这样的数据根本无从恢复。如果执行WAL原则,先把日志缓冲区中的数据写入物理介质,即使用日志缓冲区中的数据发生丢失或破坏,可以通过日志查出数据发生那些变化,从而可以执行REDO操作,从而保证数据的一致性。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有