DM8的内存和线程

模式:数据库对象的集合

表空间数据

  • 表空间:是数据库的 “大文件夹”,逻辑上分组数据。隔离数据,方便管理和备份。
  • :是硬盘上的 “小册子”,物理上连续存储一组页。固定大小,简化硬盘读写操作。
  • :是数据的 “集装箱”,固定大小,存储实际记录。优化物理存储,让经常一起访问的数据更快被找到

比如:

  • 你在数据库里创建了一个 用户表,存了 1000 条记录:
    1. 这个表属于某个 表空间(比如 <font style="color:rgb(0, 0, 0);">USERS</font>)。
    2. 表的数据被拆分成 10 个 (每页存 100 条记录)。
    3. 这 10 个页被分配到 2 个 中(每个簇 8 页,其中一个簇只用了 2 页)。

重点:BUFFER9会修改,sql缓冲区

如何查看

内存结构

内存结构

共享内存池

其它缓冲区不够用时调用,可以一直扩充

查看内存池情况

数据缓冲区(buffer)

缓冲区就是数据页,参数是buffer,单位是MB

执行一条sql,在buffer里去找有没有对应的记录,有的话就返回客户端,

没有的通过IO线程将磁盘对应的数据页加载到buffer里再返回给客户端

通过三条链表管理数据页

内存满了不会找共享内存池申请内存,会淘汰lru链未使用的数据页

数据库4个类型

noraml:满了就淘汰很少使用的数据页

keep(管理表空间):表放某个表空间,表空间放在buffer里,就不会被淘汰

中间两个,自动管理

大小建议:

交易型系统:物理内存的40-60%

分析型:60-80%

修改缓冲区内存大小(重点)

修改数据缓冲区大小为800M,修改参数命令(重启生效)

重启数据库,重新连接实例

重做日志缓冲区

单位是页,缓存的是重做日志的信息

满了会向服务器申请内存

当事务提交和执行检查点时,会触发缓冲区的内容写到日志文件中

+磁盘区满,触发缓冲区中的页更新到磁盘的数据文件中

当DML语句执行后,先写进缓冲区,当提交后会写到磁盘的文件中

SQL缓冲区

单位是MB,用来存储包信息(PKG),执行计划和结果缓存的区域

3条路径,内存不够时会找内存池申请内存

查看方式

字典缓冲区

字典:数据库的运行信息,单位MB

查看方式

其它内存池,HASH区

从操作系统来申请内存使用,需要时创建,用完就销毁

考点:参数,兼容模式,密码策略,缓冲区大小

线程结构

单进程多线程

监听线程

查看全部线程列表

IO线程

处理缓冲区的数据页,当执行查询语句时,先在缓冲区找,如果没有找到对应数据页,那就通过IO线程去磁盘的数据文件的数据页上找,然后通过IO线程加载到缓冲区返回客户端。

修改后,数据页不一致,那就是脏页,那需要IO线程把缓冲区的脏页更新到磁盘的数据文件

1、当缓冲区满了

2、当正常关闭的时候

3、到检查点的时候

日志刷新线程

缓冲区的记录更新到重做日志中(也叫刷盘)

当事务提交和执行检查点,缓冲区的内容会更新到磁盘的重做日志中

日志归档线程

redo日志在覆盖前,拷贝实时的redo日志到归档路径下

日志重做线程

异常关闭时,再次启动时,系统自动进行实例恢复,通过redo和undo信息恢复到一致性的状态,事务提交了通过redo信息前滚重新做一遍,事务没提交,事务在undo日志中。

如果自动无效,则需要手动来备份恢复

调度线程

工作线程

社区链接:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值