所有数据库内部对象存放在表空间中。表空间进一步划分为段、簇、页(块)。细分使得DM数据库高效控制磁盘空间利用率。
分为普通表空间和混合表空间。
5个自动创建的表空间:
当表空间不足时,参考以下三种方式进行处理。
1.扩展数据文件
alter tablespace "TEST" resize datafile 'TEST01.DBF' to 2000;
2.增加数据文件
alter tablespace "TEST" add datafile '/dm8/data/DAMENG/TEST02.DBF' size 100 autoextend on next 1 maxsize 2000;
3.开启自动增长
alter tablespace "TEST" datafile 'TEST01.DBF' autoextend on next 1 maxsize 2000;
1、数据段(create语句建表或者索引的时候分配)
2、回滚段(在回滚表空间中)
3、临时段(在临时表空间中,分配和释放完全由系统自动控制)
簇是页的上级逻辑单元,由一个数据文件中16个或32个或64个连续的数据页组成,簇的大小由用户在创建数据库时指定,默认大小为16。
数据文件大小 ➗ 页大小 ➗簇包含的页数=数据文件包含的簇的数量
建表或者索引时,会分配至少一个簇,同时自动生成对应数量的空闲数据页。
当初始分配空间耗尽时,DM数据库会自动扩展。
drop之前会至少保留一个簇不被回收。drop语句会回收段中包含的全部簇。
页是DM数据库中最小的数据存储单元,大小可以为4、8、16、32KB,默认是8KB。页在数据库的整个生命周期中无法修改。
DM数据库使用了大量的物理存储结构来保存和管理用户数据。
DM数据库启动所必须的配置文件,可以直接查看,用来配置数据库服务器的各种功能和性能选项。
参数属性分为三种:手动、静态和动态。
每个DM数据库包含两个控制文件,dm.ctl和dmtemp.ctl。均为二进制文件,无法直接查看。但是可以通过dmctlcvt转换成文本查看。
dmctlcvt type=1 src=dm.ctl dest=ctl.txt
其中type=1,意思是将ctl转换成txt。
dm.ctl用于记录数据库必要的初始信息。
dmtemp.ctl用于记录临时表空间相关信息,主要包括临时表空间名以及临时表空间物理文件路径等。
数据文件以DBF为扩展名。
DM数据库中添加、删除、修改对象,或者改变数据, DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。默认是log作为扩展名。可以通过RLOG_POSTFIX_NAME参数自定义扩展名。每个DM数据库实例至少有2个重做日志文件。默认dbname01.log、dbname02.log。
特点:
在归档模式下, 数据库会同时将重做日志写入联机日志文件(REDO日志也叫联机日志文件)和归档日志文件中分别进行存储。
内存结构分为内存池、缓冲区、排序区、哈希区
不依赖操作系统内存管理,减少对操作系统内存的调用。
分为数据缓冲区、日志缓冲区、字典缓冲区、SQL缓冲区。
磁盘数据页在内存中的镜像(读取和写入)
存放重做日志内容的缓冲区
存储一些数据字典信息,如模式、表、列、触发器等信息。
提供SQL执行时所需要的内存,包括执行计划、SQL语句和结果集缓存
提供数据排序所需要的内存空间
为哈希连接而设定的缓冲区
DM服务器使用单进程、多线程结构。
DM进程中主要包括监听线程、IO线程、工作线程、调度线程、日志线程等。
在服务器端口上监听,当有客户端的连接请求时,监听线程会生成一个会话申请任务,加入工作线程的任务队列。监听线程在系统启动完成后才启动,在系统关闭时首先关闭。
核心线程,负责各种类型任务的处理,以及所有实际的数据相关操作。工作线程包括任务工作线程和会话工作线程等。
负责处理服务器内部生成并加入任务队列的各项任务,初始个数由TASK_THREADS 指定。当任务队列中的任务堆积时,系统 会增加任务工作线程数量以减少任务堆积。
负责处理会话的请求任务,分为非线程池模式和线程池模式。由STHD_FLAG控制。
下每一个会话对应一个会话工作线程,一个会话上的任务 全部由同一个工作线程完成,这样减少了线程切换的代价,提高了系统效率。
初始工作线程个数由参数WORKER_THREADS*STHD_THREAD_NUM 指定,由会话轮询 线程接收所有用户请求,加入会话任务队列,会话工作线程从会话任务队列依次摘取请求任 务进行处理。
IO操作相对耗时,把IO操作从工作线程中分离出来。IO线程负责处理这些IO操作。
IO线程只有在系统需要进行IO时,被唤醒并处理请求,处理完成进入睡眠状态。
IO线程个数可以配置,dm.ini文件中的IO_THR_GROUPS参数,默认是8个。
接管系统中所有需要定时调度的任务,每秒轮询一次。
用于把保留在日志缓冲区的REDO日志进行刷盘。
日志归档包含异步归档线程,负责远程异步归档任务。如果配置了非实时归档,由 日志FLUSH线程产生的任务会分别加入日志归档线程。
当服务器作为备库时,每次接收到主库的物理REDO日志生成一个APPLY任务加入到任务队列,APPLY线程从任务队列 中取出一个任务在备库上将日志重做,并生成自己的日志,保持和主库数据的同步或一致
某个时间点开始进行的操作,或者某个时间段内反复进行某种操作。
文章
阅读量
获赞
