01.数据库和实例的概念
实例:一组用于访问和操作数据库文件的内存结构和后台进程的集合,是用户和数据库文件交互的媒介。
数据库:指物理上存储在磁盘上所有数据文件的集合,包括数据文件、控制文件、重做日志文件和临时文件等。
02.数据库的逻辑结构
数据库的逻辑存储结构由:表空间(Tablespace)段(Segment)簇(Extent)页(Data block)行(Row)列(Column)构成。
数据库的逻辑数据结构由:表(table)视图(view)序列(seq)存储过程(procedure)同义词(synonym)索引(index)簇(cluster)函数(function)构成。
其逻辑结构架构图
DM数据库中,表空间分为普通表空间和混合表空间,混合表空间可以存储HUGE表,普通表空间无法存储HUGE表。
创建数据库时,系统会自动创建五个表空间:SYSTEM | ROLL | MAIN | RLOG | TEMP。
SYSTEM表空间存放DM数据库的数据库字典信息;ROLL表空间存放事务运行过程中执行的DML操作之前的值;RLOG表空间用于存放重做日志,默认为两个,可添加日志文件和调整日志文件大小,通过LOG_SIZE控制;MAIN表空间为混合表空间,创建用户时如果不指定表空间,默认存放在此。TEMP表空间用于所有需要临时段的操作,比如sql执行,创建索引,无法在内存中完成的排序等。
相对应的sql
--所有表空间信息
SELECT * FROM v$tablespace;
--RLOG表空间信息
SELECT * FROM V$RLOG;
SELECT * FROM V$RLOGFILE;
--日志文件切换历史
SELECT * FROM V$LOG_HISTORY;
03 整体结构
数据文件:
每个表空间数据存放在磁盘的位置,一般为xxx.dbf文件。
控制文件:
二进制文件,创建数据库时按照CTL_PATH参数自动创建dm.ctl文件,主要记录数据库名称,唯一标识,数据文件版本,保存位置和表空间存储路径等。
参数文件:
DM数据库默认参数文件为dm.ini,用于修改数据库的参数信息,客户端的配置文件为dm_svc.conf,用于配置JDBC接口以及某些特定功能项。
归档日志:
DM数据库在归档模式下运行时,事务提交后,DM会通过归档线程,将变更记录到归档日志中。
在线日志:
数据库做的所有增删改和数据变更的操作都会记录在在线日志中,一般用于数据的备份和恢复。
跟踪日志:
需要在dm.ini配置SVR_LOG参数后,开启sql日志,格式为dmsql_实例名_模式_用户_日期时间.log。
默认生成在DM安装目录的log目录下,记录所有会话用户执行的sql语句,参数信息和错误信息,主要用于审计和调优。
共享内存池:
数据库实例启动时,从系统内申请的一大片内存保证实例的正常运行,相关参数为MEMORY_POOL,默认为500M,参数MEMORY_EXTENT_SIZE指定共享内存池每次拓展的大小,参数MEMORY_TARGET指定扩展超过改值后,会收缩到的大小。
缓冲区:
数据缓冲区是数据库在将数据页写入磁盘之前以及从磁盘上读取数据页之后,数据页所存储的地方。
日志缓冲区是存放重做日志的内存缓冲区,为了避免直接写入磁盘而使系统性能受到影响,数据会先放到日志缓冲区,满足条件后写入磁盘。相关参数RLOG_BUF_SIZE控制缓冲区大小。
字典缓冲区用于存储一些数据字典的信息,如模式信息,表信息,列信息,触发器信息等。相关参数DICT_BUF_SIZE控制其大小。
SQL缓冲区提供在执行sql语句过程中所需要的内存,包括执行计划、sql语句和结果集缓存。相关参数CACHE_POOL_SIZE控制其大小。
此外在DM数据库中客户端结果集也可以缓存,但需要在dm_svc.conf中设置参数:
ENABLE_RS_CACHE = (1) --表示启用缓存;
RS_CACHE_SIZE = (100) --表示缓存区的大小为100M;
RS_REFRESH_FREQ = (30) --表示每30秒检查缓存的有效性。
还需要在dm.ini中配置CLT_CACHE_TABLES参数设置哪些表需要缓存。FIRST_ROWS设置当查询的结果达到改行数时,就返回结果。
排序区提供数据排序所需要的内存空间,sql执行时对结果排序使用。参数SORT_BUF_SIZE指定其大小
哈希区提供了为哈希连接而设定的缓冲区,是一个虚拟区域,当哈希连接的数据量超过哈希值,会使用外存哈希的方式,实际上还是使用内存池来进行哈希操作。
通过参数HJ_BUF_SIZE控制大小,HAGR_HASH_SIZE控制创建hash表的个数,默认10000。
文章
阅读量
获赞
