关于内存映射和事务处理的原理!有研究的说来听听(100分)

  • 主题发起人 主题发起人 诸葛白痴
  • 开始时间 开始时间

诸葛白痴

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在“研究”内存映射,发现速度真的很快,我想事务处理也是用这个原理来完成的,
但也发现一个问题,在执行UnmapViewOfFile时,30多M的文件花了7s多,如果在这7s中间
发生文件断电现象,那么文件不是有些页就会坏了,那这不是空难性的问题吗?那么像
SQL Server及oracle的事务处理对百万条修改的事务已是什么原则处理的呢,当然他
们在此中用了很多压缩,可能也很少数据,但总有可能会上30M以上吧,会不会他会将30M
分成n个页同时写入呢,那也是用同一个CPU时间啊,有谁有研究的说来听听
 
异想天开,30M分多个页面写入?
估计采用直接写块的方法,不通过常规路径而已
 
为什么你认为UnmapViewOfFile中途断电会损坏文件呢?
 
sql server就是这样啊,他每次开始一个事务的时候创建一个开始点,
事务完成后创建一个结束点,如果中途掉电,那么结束点就没有创建。
sql server启动的时候会判断这些点啊。

写入的速度收到磁盘传输速率的限制,所以server不使用ide硬盘.
或者可以考虑使用Raid磁盘矩阵。
 
经过对SQl Server处理的跟踪,发现他的文件是一直增大的,日志比主文件增大还快,
我想它的原理可能是建立一个存储表,表中存入各个表及存储过程的起台页及地址,终止
页及地址,平时操作只是不断添加主文件和日志,如果有事务时就在事务提交时改变处理表
的终止页及地址的原理

谢谢大家的讨论
 
后退
顶部