1体系结构概览

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_SQL

2YashanDB基础概念

2.1内存管理

包括共享内存区域和私有内存区域。

共享内存是在数据库实例启动时向操作系统内核申请的内存资源,主要完成将数据文件的数据加载到数据缓冲区和数据字典和SQL等加载到内存共享池的功能,作用是提升数据库的访问效率。

私有内存在每个客户端连接到数据库实例时分配的内存区域,是每个连接独享的内存区域,主要完成从数据缓存区搜索和复制数据,返回执行结果等功能。

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_SQL_02

2.2线程管理

包括工作线程和后台线程。

⚫ 工作线程是指每个客户端连接到数据库实例所创建的线程。

⚫ 后台线程是数据库实例为实现各项工作机制和保证数据一致性等所衍生的一系列线程。

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_数据_03

2.3物理存储

主要包括控制文件,Redo日志文件,数据文件和归档日志文件等文件。

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_数据_04

3内存管理详解

3.1共享内存区域

共享内存区域包括内存共享池(SHARE POOL)、数据缓存(DATA BUFFER)和有界加速缓存等部分。

⚫ 内存共享池(SHARE POOL)的各部分描述如下:

➢ SQL缓存(SQL POOL):SQL解析树和执行计划保存在这里,用于同一SQL再次被调用时避免硬解析,节省开销。

➢ 日志缓存(REDO BUFFER):Redo日志的缓存区,日志并发写入缓存区,批量刷盘。

➢ PL/SQL池:存储过程、包、触发器等对象第一次执行时加载到这里,以提高后续再次执行的效率。

➢ 数据字典缓存(DICTIONARY CACHE POOL):数据字典是极为频繁使用的信息,缓存于此可以极大提升访问效率。

➢ 大对象池(LARGE POOL):分配大对象的区域,例如超大SQL文本。

⚫ 数据缓存(DATA BUFFER)用于当磁盘上的一个Block被访问时,将其事先装载到此区域,且当此区域空间快满时,通过一定算法淘汰不经常使用的Block。

⚫ 有界加速缓存是基于有界理论的访问约束对象缓存。

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_SQL_05

3.2私有内存区域

私有内存区域是各工作线程运行时分配释放内存的区域,与共享内存区域不同,此区域的内存一旦分配给特定工作线程后就是私有的,释放后才能再次分配给其他线程。

◼ 各部分描述如下:

⚫ SQL执行区:SQL执行期使用的堆栈空间。

⚫ 虚拟内存:即Materialize zone,虚拟内存主要为需要物化数据的SQL算子使用,且在物化对象过大时将磁盘作为虚拟内存使用。

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_数据_06

◼ 修改内存参数范例

SQL> ALTER SYSTEM SET DATA_BUFFER_SIZE = 2G SCOPE = SPFILE ;

SQL> ALTER SYSTEM SET SHARE_POOL_SIZE = 500M SCOPE = SPFILE ;

SQL> ALTER SYSTEM SET REDO_BUFFER_SIZE = 500M SCOPE = SPFILE ;

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_SQL_07

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_数据_08

4线程详解

4.1工作线程(worker)

工作线程由数据库自身创建,用于处理连接到 数据库实例的用户所提出的请求。

◼ 工作线程(worker)主要完成以下任务:

⚫ 解析并执行用户提交的SQL语句和PL/SQL 程序。

⚫ 在数据缓存中搜索工作线程所要访问的数 据,如果数据不在数据缓存中,则需要从硬盘数据文件中读取所需的数据,再将它们复制到数据缓存中。

⚫ 将用户改变数据库的操作写入日志缓存中。

⚫ 将查询或执行后的结果数据返回给工作线程。

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_数据_09

4.2后台线程(主要的线程)

⚫ 写日志

写日志线程负责把日志缓存记录顺序写入Redo日志文件。

⚫ 写数据

写数据进程负责把数据缓存中的数据写到数据文件。

⚫ Checkpoint

Checkpoint检查点是当负责把已经改变的数据缓存中的数据写到数据文件上时产生。

所有到检查点为止的变化的数据都已经写入数据文件中,在实例恢复时检查点之前的重做日志记录就不再需要,实例的恢复速度就加快了。

⚫ 数据转换线程

LSC表中数据分为两部分:可变和稳态部分。当热数据经过一段时间达到稳态时候,会进行冷热数据转换。

【YashanDB培训心得】--国产崖山数据库YCA认证培训 第四章 YashanDB体系结构_数据_10

YCA官方报名链接:https://www.yashandb.com/YCA_courses