数据库概念
数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;达梦数据库指的是磁盘上存放在达梦数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。
实例概念
实例是由一组正在运行的后台进程或线程以及一个大型的共享内存组成,用来访问数据库的内存结构以及后台进程的集合,数据库实例是程序,是位于用户和操作系统之间的一层数据管理软件,用户对数据库中的数据做任何的操作,包括数据定义、数据查询、数据维护、数据库运行控制等等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。
二者区别
数据库是由一个个的文件组成(一般来说都是二进制文件)的,要对这些文件进行SELECT、UPDATE、INSERT和DELETE这种数据库操作,不可能直接对这些二进制文件进行操作,来更新数据库中的数据,这个时候就需要数据库实例来完成对数据库的操作。
逻辑存储结构
数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 达梦数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。
表空间
表空间由一个或者多个数据文件组成,所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中
在创建达梦数据库时,会自动创建 5 个表空间:SYSTEM 表空间、ROLL表空间、MAIN表空间、TEMP表空间和HMAIN表空间。
SYSTEM表空间:存放了有关达梦数据库的字典信息,用户不能在 SYSTEM 表空间创建表和索引。
ROLL表空间:完全由达梦数据库自动维护,用户无需干预。该表空间用来存放事务运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。
MAIN表空间:在初始化库的时候,就会自动创建一个大小为 128M 的数据文件MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
TEMP表空间:完全由达梦数据库自动维护。当用户的 SQL 语句需要磁盘空间来完成某个操作时,达梦数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP表空间。
HMAIN 表空间:属于 HTS 表空间,完全由达梦数据库自动维护,用户无需干涉。当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下,充当默认 HTS 表空间。
用户可以通过执行如下语句来查看表空间相关信息。
SYSTEM、ROLL、MAIN 和 TEMP 表空间查看语句:
SELECT * FROM V$TABLESPACE;
HMAIN 表空间查看语句:
SELECT * FROM V$HUGE_TABLESPACE;
段
段是簇的上级逻辑分区单元,它由一组簇组成。在同一个表空间中,段可以包含来自不 同文件的簇,即一个段可以跨越不同的文件。而一个簇以及该簇所包含的数据页则只能来自一个文件,是连续的 16 或者 32 个数据页。由于簇的数量是按需分配的,数据段中的不同簇在磁盘上不一定连续。
簇
簇是数据页的上级逻辑单元,由同一个数据文件中16个或32个或64个连续的数据页组成。在达梦数据库中,簇的大小由用户在创建数据库时指定,默认大小为 16。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。
页
数据页(也称数据块)是达梦数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,在达梦数据库中,页大小可以为 4KB、8KB、16KB 或者 32KB,用户在创建数据库时可以指定,默认大小为 8KB,一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能够改变。
#FILLFACTOR参数:指定一个数据页初始化后插入数据时最大可以使用空间的百分比,值的大小,指定数据页中的可用空间百分比和可扩展空间百分比。可用空间用来执行更多的 INSERT 操作,可扩展空间用来为数据页保留一定的空间,以防止在今后的更新操作中增加列或者修改变长列长度时,引起数据页的频繁分裂,造成更多的I/O操作,从而影响性能。
记录
数据库表中的每一行是一条记录。在达梦数据库中,除了 Huge 表,其他的表都是在数据页中按记录存储数据的。记录是存储在数据页中的,页才是达梦数据库数据库的存储单位。由于记录不能跨页存储,这样记录的长度就受到数据页大小的限制。数据页中还包含了页头控制信息等空间,因此达梦数据库规定每条记录的总长度不能超过页面大小的一半。
物理存储结构
达梦数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据
配置文件
配置文件是数据库用来设置功能选项的一些文本文件的集合,配置文件以 ini 为扩展名,它们具有固定的格式,用户可以通过修改其中的某些参数取值来达成如下两个方面的目标:
- 启用/禁用特定功能项;
- 针对当前系统运行环境设置更优的参数值以提升系统性能。
dm.ini
dm.ini 是达梦数据库启动所必须的配置文件,通过配置该文件可以设置达梦数据库服务器的各种功能和性能选项,主要的配 置模块包括:控制文件相关、实例名、内存相关、线程相关等。
dmmal.ini
dmmal.ini 是 MAL 系统的配置文件,需要用到 MAL 环境的实例,所有站点 dmmal.ini 需要保证严格一致。
dmarch.ini
dmarch.ini 用于本地归档和远程归档。
dm_svc.conf
dm_svc.conf 是一个客户端配置文件,它包含了数据库各接口和客户端工具所需要配置的一些参数,dm_svc.conf 的工作目录是固定的,不能改变。用户如果需要将其修改并拷贝到其他客户端机器上,也必须位于相同的目录中。dm_svc.conf 工作的目录就是初始dm_svc.conf 文件生成的目录
初始 dm_svc.conf 文件由达梦安装时自动生成,在 Linux 平台下,此文件位于/etc 目录。
sqllog.ini
sqllog.ini用于sql日志的配置,当且仅当INI参数SVR_LOG=1时使用。
如果在服务器启动过程中,修改了sqllog.ini文件。修改之后的文件,只要调用过程 SP_REFRESH_SVR_LOG_CONFIG() 就会生效。
控制文件
每个达梦数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件。
注意:
在修改 dm.ctl 之前,先执行一次备份,确定 dm.ctl 修改成功后,再将备份删除,如果 dm.ctl 修改失败或中途出现故障,则保留备份文件。
数据文件
数据文件以 dbf 为扩展名,它是数据库中最重要的文件类型,一个达梦数据文件对应磁盘上的一个物理文件或者达梦分布式数据库中的一个逻辑文件,数据文件是真实数据存储的地方,每个数据库至少有一个与之相关的数据文件。
数据文件空间用完时,它可以自动扩展。可以在创建数据文件时通过MAXSIZE参数限制其扩展量,数据文件的大小最终会受物理磁盘大小的限制一般不建议使用单个巨大的数据文件,为一个表空间创建多个较小的数据文件是更好的选择。
重做日志文件
重做日志( REDO 日志指):在达梦数据库中添加、删除、修改对象,或者改变数据,达梦都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文件以 log 为扩展名。每个达梦数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为 DAMENG01.log、DAMENG02.log,这两个文件循环使用。