欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入 事务发生了哪些变化? 下面五个ese子组件一共工作,来移动数据到数据库中和它自己的静态表格中。对正确排除像灾难恢复这样的事件来说,理解数据流经过ese的方式是相当重要的。 日志缓冲器 当ese开始
欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入
事务发生了哪些变化?
下面五个ese子组件一共工作,来移动数据到数据库中和它自己的静态表格中。对正确排除像灾难恢复这样的事件来说,理解数据流经过ese的方式是相当重要的。
日志缓冲器 当ese开始接收一个事务的时候,把它存储在日志缓冲器。这些日志缓冲器用来保存内存中的信息在被写进事务日志中之前。在缺省情况下,每个缓冲器单元是一个磁盘扇区大小,它意味是512字节大小。jet做一些卫生工作来确保缓冲器的数量最小是128个扇区,最大10240个扇区,并对齐它们,最大的边界为64kb。因此,对于exchange 2000 服务器(和所有服务包)的日志缓冲器缺省数量是84,jet用掉128,因此实际的缓冲区域是64k字节。对于exchange 2003,日志缓冲器缺省数量是500,jet用掉384,因此实际的缓冲区域是192k字节。
注意:
microsoft 建议,在exchange 2000 和exchange 2003服务器,手动调整缺省值到512字节,它不要求干净,并导致256kb区域。在磁盘性能很慢的情况下,microsoft 建议缓冲应该调整到9000(也就是大于4mb)。
日志记录器 当缓冲区填满后,ese将数据从缓冲区移动到磁盘上和日志文件中。在该操作过程中,这些事务以同步的方式提交到磁盘的日志中。该过程很快,因为将数据从内存中迅速移动到事务日志中是很关键的,以防系统出现故障。
is 缓冲区 将事务转化为实际的数据的第一步是is或高速缓冲区。is缓冲区是一组从内存中分配4kb的页面,exchange 使用它的目的是缓存数据库页面在它们被写入磁盘之前。当第一被创建的时候,这些页面是干净的,因为它们还没有任何事务要写入。接着ese将播放事务从日志到内存中这些空的页面,因此更改它们的状态为不干净的。在exchange 2000 server sp3 中,这些缓冲器缺省的最大值能达到900mb。
存储版本 ese写多个不同的事务到内存中的单个页面中。存储一直跟踪和管理这些事务。它也组织这些页面当事务发生的时候。
lazy writer 在该点上,aese必须更新内存中的不干净页面。lazy writer 承担将页面从缓冲器移动到磁盘的任务。因为有很多事务进来,因此有很多页面变成不干净的,lazy writer 的任务就是排列它们的优先级,并随后处理移动它们在不加重磁盘i/o子系统的负担的情况下。这是最后的阶段和时间点,在这点上事务正式变成静态数据。也是在这点上不干净的页面变成干净的并准备再次使用。
在在线备份期间,该过程如何发生?
与前面提到的相比,在在线备份期间,没有多少不同的。当备份一开始,检查点就停止增加。因为备份进程需要备份所有的日志文件在冻住检查点后,尽管事务仍然通过ese的五个阶段来移动。接着,在备份进程完成拷贝数据库文件和必要的日志文件到磁带后,检查点文件将允许被赶上。
在一些案例中,备份停止响应尽管事务继被ese处理。exchange 2000 server sp3 和以后的都采用硬编码来限制检查点深度到大约1000左右。如果发生这样情况,有足够多的事务需要处理,大约只有1000个日志文件被临时创建,exchange 将卸载该特定存储组的数据库。该错误将被记录为jet_errcheckpointdepthtoodeep。
.edb 文件
.edb 文件主要用来存储邮箱数据。.edb文件的基础架构是b-tree 结构,它只存在于该文件中,不存在于.stm 文件中。b-tree 被设计用来同时快速访问很多页面。.edb 文件设计允许一个最顶级的节点和许多子节点。
在一个b-tree 中,每个子节点只能有一个父节点。尽管通常b-tree 允许没有限制的深度,microsoft在大多数应用中限制b-tree 的深度,来促进快速访问能够和引擎一起工作,不管引擎发生什么。通过允许像这样高速和低树深度,exchange 和ese能保证用户在四个i/o内,能够访问数据的任何页面,也称为一个叶节点。
树的深度对性能有很大的影响。跨整个结构的统一树深度,每个叶节点或者数据页面到根节点的距离是相等的,意味着数据库性能是连续和可预知的。通过这种方式,ese 4kb 页面被安排到表格,形成一个包含exchange 数据的大的数据库文件。
数据库实际上由多个b-tree组成。这些其他辅助树持有与主树一起工作的索引和视图。
.edb 文件被ese直接访问。
[1] [2] [3]