文件名称:日志归档线程-非线性规划——分析与方法
文件大小:4.79MB
文件格式:PDF
更新时间:2024-07-14 13:15:09
达梦数据库 DBA
4.4 调度线程 调度线程用于接管系统中所有需要定时调度的任务。调度线程每秒钟轮询一次,负责的 任务有以下一些: 1. 检查系统级的时间触发器,如果满足触发条件则生成任务加到工作线程的任务队列 由工作线程执行; 2. 清理 SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项; 3. 检查数据重演捕获持续时间是否到期,到期则自动停止捕获; 4. 执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池; 5. 自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据 INI 参数设置的自动检查点执行间隔定期执行检查点操作; 6. 会话超时检测。当客户连接设置了连接超时时,定期检测是否超时,如果超时则自 动断开连接; 7. 必要时执行数据更新页刷盘; 8. 唤醒等待的工作线程。 4.5 日志 FLUSH线程 任何数据库的修改,都会产生重做 REDO日志,为了保证数据故障恢复的一致性,REDO 日志的刷盘必须在数据页刷盘之前进行。事务运行时,会把生成的 REDO 日志保留在日志缓 冲区中,当事务提交或者执行检查点时,会通知 FLUSH 线程进行日志刷盘。由于日志具备 顺序写入的特点,比数据页分散 IO写入效率更高。日志 FLUSH线程和 IO线程分开,能获 得更快的响应速度,保证整体的性能。DM7 的日志 FLUSH 线程进行了优化,在刷盘之前, 对不同缓冲区内的日志进行合并,减少了 IO次数,进一步提高了性能。 如果系统配置了实时归档,在 FLUSH 线程日志刷盘前,会直接将日志通过网络发送到 实时备库。如果配置了本地归档,则生成归档任务,通过日志归档线程完成。 4.6 日志归档线程 日志归档线程包含异步归档线程,负责远程异步归档任务。如果配置了非实时归档,由 日志 FLUSH 线程产生的任务会分别加入日志归档线程,日志归档线程负责从任务队列中取 出任务,按照归档类型做相应归档处理。 将日志 FLUSH 线程和日志归档线程分开的目的是为了减少不必要的效率损失,除了远 程实时归档外,本地归档、远程异步归档都可以脱离 FLUSH线程来做,如果放在 FLUSH线 程中一起做会严重影响系统性能。 4.7 日志 APPLY线程 在配置了数据守护的系统中,创建了一个日志 APPLY 线程。当服务器作为备库时,每 次接收到主库的物理 REDO 日志生成一个 APPLY 任务加入到任务队列,APPLY 线程从任务 队列中取出一个任务在备库上将日志重做,并生成自己的日志,保持和主库数据的同步或一 55