新兴的分布式数据库OceanBase声称是金融级的分布式关系型数
数据库在读数据的时候,会将数据所在块读入到数据库内部的缓存中。如Oracle里称为Buffer Cache,MyS
新兴的分布式数据库OceanBase声称是金融级的分布式关系型数据库,强一致,绝对不丢数据 数据库在读数据的时候,会将数据所在块读入到数据库内部的缓存中。如Oracle里称为Buffer Cache,MySQL称为Buffer Pool。当数据修改后,这些缓存中的块就被称为脏块(Dirty Block)。为了性能考虑,数据库(DBWn进程)并不会立即把这些脏块写回到磁盘上。这个有个风险,当数据库进程宕掉时,磁盘上的数据并不是最新的数据。即使数据库进程恢复了,也找不回原来的数据修改。所以,数据库在修改数据之前,都会先在日志缓冲区记录块修改的日志(即事务日志),并把这个日志先写回磁盘上。有个例外如Oracle的direct load。 这个技术就是Write Ahead Logging技术。有了这个事务日志mssql数据库,数据库就有能力维持缓存和磁盘上数据最终一致,即使数据库宕机。对于一个数据库软件来说,发生异常的时候只要事务日志没有丢失,它就敢承诺数据库服务恢复后,数据绝对不丢。即RPO为0。或者说事务日志是安全可靠的,那么数据就是安全可靠的。当然,严格的说还有一个前提是数据文件没有损坏,或者有数据文件的备份可以还原。否则会比较麻烦。比如说从第一个事务日志开始恢复到最新的状态。时间太久意义不大。 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |