发新话题
打印

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

不同的数据库,考虑不一样的吧。如果DB2默认是use filesystem caching的,要保证极端情况,就把它关掉

TOP

不知道死机是不是极端情况。数据库整那么多保证一致性的机制,不就是预防极端情况么?如果永远不死机,就不用整这么多机制了。所以为何不写死了就是by pass掉fs的cahce呢?感觉有点自相矛盾。
敝人博客
《大话存储》预订链接:http://www.china-pub.com/301645

TOP

这个问题一定是存在的,只是不同平台不同产品应该会有一些差异而已。
流浪中

TOP

我知道硬盘的buffer 肯定是完全关闭的
起码我们的磁盘阵列是这样的

wb 和 wt 是对磁盘阵列的 cache 说的
双机应用之所以 wt 是因为两台主机用的是 RAID 卡
如果双机用 HBA 卡连接控制器的话wb 是没有问题的

数据库的一致性大学老师讲的时候是先写日志的么
一致性是能保证的
但丢数据是不可避免的
因为搞备份的都知道
一旦硬件等出现故障或掉电极有可能造成数据丢失

TOP

按照目前的技术实现,数据的一致性保证问题都不大。而至于数据丢失,几乎是不可能避免的,RPO永远是约等于0而不可能等于0(就现有技术来说)

TOP

呵呵,好的。有没有可能造成不一致,这个我保留意见。

但是为何raid卡就不能wb呢?
敝人博客
《大话存储》预订链接:http://www.china-pub.com/301645

TOP

去判断磁盘的cache是否是write through 或者是write back,
通常是通过发送SCSI的mode sense命令到存储设备,由返回的数据来判断;
记忆中,似乎有专门的接口来控制cache的策略。

TOP

是的,当初好像讨论过,一个参数,a开头的,记不清了。
就比如说sata磁盘吧,现在日立320G的买不到6百,16M的cache,肯定不会给禁用吧。关闭磁盘cache是不是实际上指的是调用接口的时候加一个参数使其成wt模式?而这个动作有控制器来完成。那么也就是说这个cache是打开的,但是用的wt模式而已。

[ 本帖最后由 冬瓜头 于 2007-9-9 17:22 编辑 ]
敝人博客
《大话存储》预订链接:http://www.china-pub.com/301645

TOP

对于文件系统来说,保证数据一致性是指metadata的一致性,fsck就是干这个事情;
它不是去保证里面的data都一致。

对于数据库来说,主要是处理各种表的记录,应该由事务来处理操作的原子性,以及用日志来纪律操作的历史记录,从而保证数据一直吧。
我不是很懂数据库,不确定.....

TOP

引用:
原帖由 冬瓜头 于 2007-9-7 15:38 发表
不管是否是极端,只要存在,就必须考虑。
正式因为就几K的io,所以cache不会改变多少,所以不会引发flush,更应该注意,更容易造成不一致,如果io size很大,反而不怕了。

软件测试工程师所想到的很多都是极端情 ...
楼主,io小是不会用到cache的,大文件存储才会经过cache以加快存储速度吧!
wb、wt是通过阵列控制器(或磁盘控制器)来控制的,每个厂家都会有不同的设置,也可用户自己选择那种模式。一般的有raid卡的设置成wt模式来提高数据的安全性,没有raid卡的用wb模式来提高存储速度。

TOP

发新话题