Exchange 事务和Exchange 数据库回顾

原创
2016-06-07 15:23:51 956浏览

欢迎进入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]

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。