关于并行服务器的疑问?

[复制链接]
查看11 | 回复4 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
并行服务器的疑问????
首先问第一个疑问:
对于单实例当一个事务对一个是数据块进行更新时,提交后,事务在回滚段数据缓冲区被标记为结束,这时如果有另一个事务要修改这个数据块中的某条记录,那么它应该直接在DATABUFFER中找到这个数据块并进行更新。
那么对于并行服务器,多实例的情况下,如果一个数据块被实例A修改并提交后,这时这个数据块存在于实例A的DATABUFFER中,但可能并没有写入数据文件,这时如果实例B也要修改这个数据块,那么B是从A的DATABUFFER中读,还是从数据文件中读?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
如果是ops(8i)是从文件中读取的,rac(9i)中是从别的机器的内存中构造一个最新的BLOCK,通过心跳线传过来。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
谢谢老乡呵呵。
那么接着问第二个疑问:
对于OPS,既然是从数据文件中读取那么如果实例A突然崩溃,那么那些完成了提交,但没有从DATABUFFER中写回数据文件的数据块,将丢失,如果是单实例在下次实例A启动的时候将应用联机日志进行前滚这些已被提交但没写回的数据块。对于OPS,当一个实例A崩溃了,好象说是有另一实例实施恢复,此处存在疑问:
1,另一实例如何启用实例A的线程来应用由实例A的线程生成的联机日志进行恢复?
2,如果发现DATABUFFER中数据块中的版本比数据文件中的老,那么DATABUFFER中的数据块是否还被用来更新数据文件中的相应块呢?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
如果OPS是读取数据文件的,那么如果这个被修改但没写回数据文件的块,又被B请求修改,那么B读的不就不是该数据块的最新状态了吗?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
如果需要读取的数据没有被写回,那么在可以被b访问之前,一定会写回数据文件,所以ops性能比较差,rac是直接在内存中构建块副本的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行