SQL Server 2005 事务日志之逻辑结构(二)
2011-11-26 22:14 Echo. 阅读(1573) 评论(0) 收藏 举报事务日志逻辑体系结构:
SQL Server 2005 事务日志按逻辑运行,就好像事务日志是一串日志记录一样。每条日志记录由一个日志序列号 (LSN) 标识。每条新日志记录均写入日志的逻辑结尾处,并使用一个比前面记
录的 LSN 更高的 LSN。
打个比喻:假如我有一张信用卡,额度为10000RMB。我去商场买了件衣服刷了1200RMB,逛街渴了又用信用卡买了杯饮料花了10RMB。回到家里后上网银查了一下信用卡交易记录,发现今天有2
笔记录
2011-11-01 12:00:00 支出1200 RMB
2011-11-01 12:30:00 支出10 RMB
这个时候信用卡内会剩下8799RMB,因为支付的金额会实时的反应在卡片上。可以把日志记录理解为信用卡里的交易记录,信用卡交易记录有个交易时间,以区别卡内金额变动的先后顺序,同
样SQL Server 2005日志文件内也有个维护日志记录先后的机制,LSN(日志序列标示), 每个日志记录都有一个唯一的LSN,每条新写入的日志记录都会使用一个比前面记录更高的LSN。
数据修改的日志记录或者记录所执行的逻辑操作,或者记录已修改数据的前像和后像。前像是执行操作前的数据副本;后像是执行操作后的数据副本。
操作的恢复步骤取决于日志记录的类型:
记录逻辑操作
若要前滚逻辑操作,请再次执行该操作。
若要回滚逻辑操作,请执行相反的逻辑操作。
记录前像和后像
若要前滚操作,请应用后像。
若要回滚操作,请应用前像。
许多类型的操作都记录在事务日志中,这些比较好理解:
每个事务的开始和结束。
每次数据修改(插入、更新或删除)。这包括系统存储过程或数据定义语言 (DDL) 语句对系统表所做的更改。
每次分配或释放区和页。
创建或删除表或索引。
回滚操作也记录在日志中。每个事务都在事务日志中保留空间,以确保存在足够的日志空间来支持由显式回滚语句或遇到错误引起的回滚。保留的空间量取决于在事务中执行的操作,但通常等
于用于记录每个操作的空间量。事务完成后将释放此保留空间。
日志文件中从必须存在以确保数据库范围内成功回滚的第一条日志记录到最后写入的日志记录之间的部分称为日志的活动部分,即“活动日志”。这是进行数据库完整恢复所需的日志部分。永
远不能截断活动日志的任何部分。
个人理解"活动日志"就是日志中所有的未完成的事务,而且这些未完成的事务日志所包含的所有日志记录必须完整,比如一个事务包含10条记录,如果少了其中一个,那么就导致数据恢复失败
。
关于红色字体部分,理解得不够,希望高手补充。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步