Exchange 事务和Exchange 数据库回顾
欢迎进入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]

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

Hibernate多态映射可映射继承类到数据库,提供以下映射类型:joined-subclass:为子类创建单独表,包含父类所有列。table-per-class:为子类创建单独表,仅包含子类特有列。union-subclass:类似joined-subclass,但父类表联合所有子类列。

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

HTML无法直接读取数据库,但可以通过JavaScript和AJAX实现。其步骤包括建立数据库连接、发送查询、处理响应和更新页面。本文提供了利用JavaScript、AJAX和PHP来从MySQL数据库读取数据的实战示例,展示了如何在HTML页面中动态显示查询结果。该示例使用XMLHttpRequest建立数据库连接,发送查询并处理响应,从而将数据填充到页面元素中,实现了HTML读取数据库的功能。

事务确保数据库数据完整性,包括原子性、一致性、隔离性和持久性。JDBC使用Connection接口提供事务控制(setAutoCommit、commit、rollback)。并发控制机制协调并发操作,使用锁或乐观/悲观并发控制来实现事务隔离性,以防止数据不一致。

通过Go标准库database/sql包,可以连接到MySQL、PostgreSQL或SQLite等远程数据库:创建包含数据库连接信息的连接字符串。使用sql.Open()函数打开数据库连接。执行SQL查询和插入操作等数据库操作。使用defer关闭数据库连接以释放资源。

在Golang中使用数据库回调函数可以实现:在指定数据库操作完成后执行自定义代码。通过单独的函数添加自定义行为,无需编写额外代码。回调函数可用于插入、更新、删除和查询操作。必须使用sql.Exec、sql.QueryRow或sql.Query函数才能使用回调函数。
