发新话题
打印

讨论,数据库真的只靠日志就能绝对保证一致性么?

本主题由 doit 于 2007-9-10 19:13 设置高亮
呵呵
http://space.doit.com.cn/35700
存储界的首本个性之作《大话存储-网络存储系统原理精解与最佳实践》,将于9月初由清华大学出版社隆重出版!敬请关注!

TOP

不一定,如果dbms调用write()的时候没有加flush immediate类似意思的参数,fs就会cache,然后return success,此时down机,这些cache的日志条目就丢失了,但是终端那边客户却认为100w已经存入了,你说一致不一致?
--------------------------------------------------------------------
数据库的几个关键进程中,日志进程是同步进程,而其他数据写进程都可以是异步;这已经足够说明问题了。而且只要返回写日志成功,就一定是写到了硬盘上,不可能在cache中.

TOP

引用:
原帖由 冬瓜头 于 2007-9-10 12:09 发表


是的,但是fs在dbms下面,他可没有哪一套(除非日志文件系统,比如jfs,这个和数据库日志思想一样,两层日志,也就充分保证了一致性),非日志fs,很有可能保证不了一致性。
对于数据库来说,有了日志文件系统,安全性可能高不到哪里;没有影响也不大,数据库自己带的东西足够保护自己了,数据库本身就是个特殊的文件系统。

TOP

引用:
原帖由 fengwy 于 2007-9-10 14:43 发表

数据库的几个关键进程中,日志进程是同步进程,而其他数据写进程都可以是异步;这已经足够说明问题了。而且只要返回写日志成功,就一定是写到了硬盘上,不可能在cache中
行,那么你得意思是log写入的时候是write through了。就算这样,你也说了,比如dirty data block writer,这个进程,如果他是异步的,某时刻,他向数据文件flush的一次,将dirty data写入文件,并得到success的提示,那么dbms会将lsn提高到当前未提交或者未flush的最小lsn号处,以前的lsn他认为已经得到落实了,但是此时dirty data还在fs的cache中,down机,这些数据将丢失,但是dbms认为这些事务已经落实到了磁盘上,这不就是不一致么。
还需要怎么解释呢?麻烦仔细想想,这是我最后一次解释了。
http://space.doit.com.cn/35700
存储界的首本个性之作《大话存储-网络存储系统原理精解与最佳实践》,将于9月初由清华大学出版社隆重出版!敬请关注!

TOP

引用:
原帖由 fengwy 于 2007-9-10 14:48 发表

对于数据库来说,有了日志文件系统,安全性可能高不到哪里;没有影响也不大,数据库自己带的东西足够保护自己了,数据库本身就是个特殊的文件系统。
呵呵,说了一大堆,还是白说了。
http://space.doit.com.cn/35700
存储界的首本个性之作《大话存储-网络存储系统原理精解与最佳实践》,将于9月初由清华大学出版社隆重出版!敬请关注!

TOP

引用:
原帖由 冬瓜头 于 2007-9-10 12:36 发表


他确实也记录日志,但是记录的做了什么,而不是做了哪些。所以他不能恢复数据,只能保证down机之后fs本身的一致性,却保证不了上层的一致性,因为不能恢复数据。那么也应该称ntfs为日志型文件系统了?这个就要看 ...
别自己主观臆断!谁说的ntfs不能恢复数据,也太小觑微软了,人家office有意外还能恢复,别说这么重要的文件系统;
ntfs也是基于事务日志原理的,只是他的日志写硬盘操作默认是异步的,这是为了换取性能,安全性查了点。

TOP

是么,那能否见识一下,以前一直认为ntfs不能恢复丢失的数据。官方网页有么?给个看看说明ntfs能自动重做丢失的数据。
http://space.doit.com.cn/35700
存储界的首本个性之作《大话存储-网络存储系统原理精解与最佳实践》,将于9月初由清华大学出版社隆重出版!敬请关注!

TOP

引用:
原帖由 冬瓜头 于 2007-9-10 06:50 发表


行,那么你得意思是log写入的时候是write through了。就算这样,你也说了,比如dirty data block writer,这个进程,如果他是异步的,某时刻,他向数据文件flush的一次,将dirty data写入文件,并得到success的提 ...
离开主机内存就已经认为落在硬盘上了
数据库哪知道你用啥硬盘

你们说数据库的吧
不要考虑 wb wt 的

TOP

引用:
原帖由 兔子爱松鼠 于 2007-9-10 15:26 发表


离开主机内存就已经认为落在硬盘上了
数据库哪知道你用啥硬盘

你们说数据库的吧
不要考虑 wb wt 的
可是没有离开啊,还在fs的cache中呢。是啊,数据库是认为已经硬盘了,可是下面管个P啊,就像¥¥¥¥说给所有职工涨工资,下面涨不涨,他知道个P啊,下面报告说涨了,上面和谐社会了,下面也和谐了么?
http://space.doit.com.cn/35700
存储界的首本个性之作《大话存储-网络存储系统原理精解与最佳实践》,将于9月初由清华大学出版社隆重出版!敬请关注!

TOP

我想日志更新了,控制文件也会跟着更新,down了之后,重新启动,mount控制文件,在mount数据文件的时候会检查文件scn号是否一直,由于数据文件没有更新,会使用日志做数据文件的恢复的;

TOP

发新话题