《3-DM体系结构-V2.4-新修正版》由会员分享,可在线阅读,更多相关《3-DM体系结构-V2.4-新修正版(29页珍藏版)》请在金锄头文库上搜索。
1、DM体系结构,课程目标,完成本课程的学习后,您应该能够: 掌握DM7的存储结构 掌握DM7的内存结构 掌握DM7的线程结构,2,目录,体系结构概览 DM存储结构 DM内存结构 DM线程,3,DM7数据库的组成,DM7数据库是由数据库和实例构成 数据库 DM 数据库指的是磁盘上存放在DM 数据库中的数据的集合 实例 实例一般是由一组正在运行的DM 后台进程/线程以及一个大型的共享内存组成,4,DM总体架构,5,目录,体系结构概览 DM存储结构 DM内存结构 DM线程,6,逻辑结构和物理结构,7,DM物理结构,8,表空间和数据文件,一个表空间中包括一个或多个数据文件。 一个数据文件仅归属于一个表空
2、间,9,段、簇和块,段存在于表空间。 段由区的集合构成。 簇是数据块的集合。 数据块会映射到磁盘块,10,目录,体系结构概览 DM存储结构 DM内存结构 DM线程,11,DM内存结构,12,公用内存池,公用内存池: 不依赖于操作系统的内存管理 用于: - 维护系统内部内存空间的分配与释放 - 减少对操作系统内存的系统调用 - 其大小由MEMORY_POOL参数确定,13,系统缓冲区,14,字典缓冲区,字典缓冲区: 快速访问表,视图等对象的描述 系统表到内存对象的映射 仅保留活动的数据库对象 采用LRU算法淘汰 大小由DICT_BUF_SIZE参数决定,15,日志缓冲区,日志缓冲区: 用于 -存
3、放重做日志的内存缓冲区 大小由LOG_BUF_SIZE参数决定 -单位为页数量,默认为256页 -大小必须为2 的N 次方,16,排序/散列缓冲区,排序缓冲区: 用于 -数据排序的内存缓冲区 -大小由SORT_BUF_SIZE参数决定 散列缓冲区: 用于 -哈希连接的内存缓冲区 -大小由HJ_BUF_SIZE参数决定,17,SQL缓冲区,SQL缓冲区: 用于 -缓存执行计划、SQL语句、SQL结果集 USE_PLN_POOL参数为1或2时启用 大小由CACHE_POOL_SIZE参数决定,18,目录,体系结构概览 DM存储结构 DM内存结构 DM线程,19,DM线程结构,20,监听线程,监听线
4、程: 用于在服务器端口上进行循环监听,有来自客户的连接请求,监听线程被唤醒并生成一个会话申请任务,加入工作线程的任务队列,等待工作线程进行处理,21,IO线程,IO线程: 主要用于做以下几个方面的工作: 需要处理的数据块不在缓冲区中,此时需要将相关数据块读入缓冲区 缓冲区满或系统关闭时,此时需要将部分脏数据块写入磁盘 检查点到来时,需要将所有脏数据块写入磁盘,系统缓冲区,IO线程,数据文件,22,日志FLUSH线程,日志FLUSH线程: 主要用于事务提交或检查点时将日志缓冲区中的REDO日志写入到日志文件中。 如果系统配置了实时归档,在 FLUSH线程日志刷盘前,会直接将日志通过网络发送到实时
5、备机。 如果配置了本地归档或者远程同步归档,则生成归档任务,通过日志归档线程完成,重做日志缓冲区,日志FLUSH线程,重做日志,23,日志归档线程,日志归档线程: 包含同步归档线程和异步归档线程,前者负责本地归档和远程同步归档任务,后者负责远程异步归档任务。如果配置了非实时归档,由日志 FLUSH线程产生的任务会分别加入日志归档线程,日志归档线程负责从任务队列中取出任务,按照归档类型做相应归档处理,日志归档 线程,归档目录,拷贝REDO日志,24,工作线程,工作线程: DM7内核的工作线程机制包括普通内核线程和用户态线程两种,普通内核线程的切换完全由操作系统决定,但操作系统无法了解进程内部的运
6、行机制,只能采取通用的调度策略来管理各个内核线程;用户态线程在内核线程内部自主调度,有效减少上下文切换;同时,由于内核线程数的减少,进一步降低了冲突产生的概率,提升了系统性能,非常适合高并发的应用场景,25,调度线程,调度线程: 检查系统级的时间触发器; 清理 SQL 缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项; 动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池; 自动执行检查点。 会话超时检测。 必要时执行数据更新页刷盘; 唤醒等待的工作线程,26,日志重做线程,日志重做线程: 主要用于系统故障恢复,日志重做线程根据REDO日志进行并行的故障恢复,日志重做线程,不一致状态的实例,REDO,27,总结,DM7物理结构 DM7逻辑结构 DM7内存结构 DM7线程结构,28,29,Thank you