KES 存储结构介绍
关键字:
KingbaseES、存储结构、人大金仓、KingbaseES
1. KES逻辑结构
- KES数据库逻辑结构可以分为、数据库集群、数据库 、模式(数据对象的集合)、数据对象(包括表、索引、视图等)
- 其中一个模式是一个数据库对象的集合(被一个用户所使用),数据对象是直接引用数据库数据的逻辑结构
- 默认的用户模式: PUBLIC
- 数据库对象分为: 模式对象(表、索引、序列、视图、函数等)、非模式对象(用户、数据库)
2. 系统初始化
创建全局数据库(GLOBAL) :全局数据库中存储与数据库集群相关的信息,用户不能连接全局数据库,全局数据库中的数据操作由DBMS自动完成
创建临时数据库(TEMPDB) :临时数据库用于存储DBMS在运行过程中产生的临时信息,用户不能连接临时数据库,临时数据库中的数据操作由DBMS自动完成
创建模板数据库(TEMPLATE0和TEMPLATE1) :模板数据库中存储了每个数据库的系统表信息,它是创建一个新数据库的样板
Template0:最原始的模板库,不允许建立数据库连接
Template1:创建其他数据库使用的模板数据库,可以进行定制
创建样例数据库(SAMPLE)
创建用户数据库(TEMPLATE2):工具使用的数据库
3.KingbaseES的存储结构
分为逻辑存储结构和物理存储结构两个部分 ,分别进行管理
3.1 逻辑存储结构:
KingbaseES内部的组织和管理数据的方式 ,适用于不要的操作系统和硬件平台
KingbaseES在逻辑上将数据划分为一个个小单元来进行存储和维护 :
数据库
表空间:数据库在逻辑上分成多个存储单元,把逻辑上相关的结构放在一起
数据库对象逻辑上是存储在表空间中,物理上是存储在与表空间相关联的数据文件中。
若表空间对应多个数据文件,KingbaseES可以将一个对象的数据存储在任意数据文件中,甚至同一个对象的数据可以分布在多个数据文件中
多个表空间的优势:
能够将数据字典与用户数据分离开来,避免由于字典对象与用户对象保存在同一个数据文件中而产生I/O冲突
能够将表空间的数据文件分散保存在不同的硬盘上,平均分布物理I/O操作
能够将某个表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份或恢复
能够将某个表空间设置为只读状态
段
区:区是KingbaseES中空间分配的最小单元,连续的8 个页面组成一个区(extent)
块(页):数据块(data block、page)是KingbaseES管理存储空间的最基本单元,数据库的操作都是以块为单位进行的 ,数据文件中的数据是以块(页)为单位进行组织的。
数据页面分为两种:
数据页面是用来存储对象的数据
控制页面用来管理这些数据页面:空间如何组织和分配
GAM(Global Allocation Map)用来记录 区的分配情况:GAM页面内会使用 1 bit 来代表一个区的分配情况(1: 分配, 0 : 未分配)
PFS页用来记录数据文件中页面的空间使用情况,对文件中的每个页面,每个页面可能有三种状态:
PFS_FREE:该页面已被物理分配,但尚未分配给任何对象或控制页面;
PFS_DATA:该对象被分配作为数据页使用;
PFS_CTRL:该对象被分配作为控制页使用
IAM(Index Allocation Map)页被用来记录其所覆盖的范围内有哪些Extent被分配给了其所隶属的数据库对象。 每个IAM页面都隶属于一个数据库对象,但一个数据库对象可以有多个IAM页。 与GAM页和PFS页不同的是,IAM页的位置是不固定的(因为IAM页总是在创建对象或为对象分配空间时才根据需要进行分配的)。 sys_class 中的 relfilenode 指向这个对象的第一个 IAM 页面的偏移。 在访问表时,先通过 relfilenode 找到其 IAM 页面,再通过 IAM 页面来查找到相应的数据。 创建数据库对象时,分配一个IAM ,插入数据时,以区为单位进行空间分配 ,删除数据库对象时,根据IAM的记录,回收该数据库对象所占用的空间 。
3.2 物理存储结构:操作系统中组织和管理数据的方式
数据文件
日志文件:
KingbaseES 利用日志文件来防止断电之类的故障导致的数据丢失。
对每个修改数据库内容的操作,KingbaseES 都会自动为其生成一条日志记录,并将其记录到日志文件中。
系统默认有三个日志文件,默认名字为 REDOLOG0.ldf,REDOLOG1.ldf,REDOLOG02.ldf
KingbaseES以循环方式来使用重做日志文件
在日志文件被覆盖之前,KingbaseES能够将已经写满的日志文件通过复制操作系统文件的方式保存到指定位置,称为“归档” ,归档操作由后台进程自动完成
控制文件:
用来记录数据库集群的状态信息,控制文件是系统自动维护的,KingbaseES 不允许用户增加、删除或修改控制文件。
数据库启动必须访问的控制文件: Sys_control 、Sys_datafile/Sys_redolog
参数文件:
KingbaseES 的系统参数配置文件为服务器数据目录中的 kingbase.conf。 用户可以通过修改参数设置,来调整系统运行时配置及优化系统性能。
按照参数的设置方式,系统参数可以分为:
固定级
系统级
全局级
会话级
参数文件实例:
Kingbase.conf 数据库配置文件 、
Sys_hba.conf 基于主机的认证配置文件
Sys_ident.conf 基于身份的认证配置文件
参数设置:
Alter system set:修改系统级和全局级参数并修改系统配置文件 kingbase.conf 的参数设置。 调用该命令的用户必须具有超级用户权限 。修改系统配置文件kingbase.conf ,通过系统信号,重新加载该配置文件
Alter database set:修改数据库的默认参数。
在该数据库上启动的每个新会话(数据库连接)中,该参数的缺省值使用命令中的设定值并覆盖 kingbase.conf 的设定或 KingbaseES 启动命令行的设置。
调用该命令的用户必须具有超级用户权限或为该数据库的所有者。
set:使用SET命令设置的系统参数只对当前连接有效
系统初始化时需要指定: 数据目录 、日志目录