达梦数据库逻辑结构学习

达梦数据库逻辑结构学习,全部参照官方文档。

  1. 当同时出现DM数据库和实例时,DM数据库指的是磁盘上存放在DM数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等;实例一般是由一组正在运行的DM后台进程/线程以及一个大型的共享内存组成,简单来说实例就是操作DM数据库的一种手段,是用来访问数据库的内存结构以及后台进程的集合。
  2. DM数据库存储在服务器的磁盘上,而DM实例则存储于服务器的内存中。在任何时候,一个实例只能与一个数据库进行关联。
  3. DM数据库为数据库中的所有对象分配逻辑空间,并保存在数据文件中。所有的数据文件组合在一起被划分到一个或多个表空间中。同时表空间被进一步划分为段、簇和页(块)。
  4. 存储的层次结构:数据库由一个或多个表空间组成(怎么能只有一个表空间呢?不是初始就有SYSTEM、MAIN、TEMP、HMAIN和ROLL表空间吗?);每个表空间由一个或多个数据文件组成;每个数据文件由一个或多个簇组成;段是簇的上级逻辑单元,一个段可以跨多个数据文件;簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;页是数据库中最小的分配单元(分配的时候不是直接分配一个或几个簇吗?),也是数据库中使用的最小的IO单元;
  5. 在DM数据库中,表空间由一个或多个数据文件组成。DM数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。
  6. 在创建数据库时,会自动创建5个表空间:SYSTEM、MAIN、TEMP、HMAIN和ROLL表空间。SYSTEM表空间存放了有关DM数据库的字典信息,用户不能在SYSTEM表空间创建表和索引;ROLL表空间完全由DM数据库自动维护,用户无需干预,该表空间用来存放事务运行过程中执行DML操作之前的值,从而为访问该表的其它用户提供表数据的读一致性视图(比如在执行update之前先把原来的值存放进ROLL表空间中,当该update操作未提交时,其它会话进行查询操作会读原来的值);TEMP表空间完全由DM数据库自动维护,当用户的sql语句需要磁盘来完成某个操作时,DM数据库会从TEMP表空间分配临时段,如创建索引、无法在内存中完成的排序操作、sql语句中间结果集以及用户创建的临时表等都会使用到TEMP表空间;
  7. 每一个用户都有一个默认的表空间,对于SYS、SYSSSO、SYSAUDITOR系统用户,默认表空间为SYSTEM。
  8. 表空间查看语句:SELECT * FROM V$TABLESPACE;  SELECT * FROM V$HUGE_TABLESPACE;
  9. 数据库表中的每一行就是一条记录。在DM中,除了HUGE表,其它的表都是在数据页中按记录存储数据的。即记录是存储在数据页中的,记录并不是数据库的存储单元,页才是。记录不能跨页存储,这样记录的长度就受到数据页大小的限制,数据页中还包含了页头控制信息等空间,因此DM规定每条记录的总长度不能超过页面大小的一半。(有时做数据迁移时会报错“记录超长”,这时就是记录超过页大小的一半导致的,解决方法有:重新建库,将初始参数“页大小”改大;或改变数据类型,如将varchar改为text;或开启超长记录(在表上右键、存储选项、启用超长记录,或创建表时指定STORAGE(USING LONG ROW))。
  10. 数据页(也称数据块),是DM数据库中最小的数据存储单元。页大小对应物理存储空间上特定数量的存储字节。可选值有4KB、8KB(默认)、16KB、32KB。一旦创建,无法改变。
  11. DM数据页的组成包含:页头控制信息(包含页类型、页地址等信息)、数据、空闲空间、行偏移数组(用于标识页上的空间占用情况以便管理数据页自身的空间)。
  12. DM提供了一个数据页级存储参数FILLFACTOR,用来指定数据页中可用空间百分比。用法:STORAGE(FILLFACTOR 80);该值在创建表/索引时可以指定。
  13. 簇是数据页的上级逻辑单元,由同一个数据文件中16(默认)或32个连续的数据页组成。当创建一个表/索引时,DM为表/索引的数据段分配至少一个簇(默认初始分配一个簇,由STORAGE(INITIAL n);控制,n表示初始分配簇大小),同时数据库会自动生成对应数量的空闲数据页,供后续操作使用。对于用户数据表空间,在用户将一个数据段对应的表/索引对象DROP之前,该表对应的数据段会保留至少1个簇不被回收到表空间中(由STORAGE(MINEXTENTS n);控制,n为最少保留簇数)。在删除表/索引对象中的记录时,DM数据库通过修改数据文件中的位图来释放簇,释放后的簇视为空闲簇,可供其它对象使用。若用户使用DROP语句来删除表/索引对象,则此表/索引对应的段及段中包含的簇全部收回。
  14. 对于临时表空间,DM数据库会自动释放在执行SQL过程中产生的临时段,并将属于此临时段的簇空间还给临时表空间。需要注意的是,临时表空间文件在磁盘所占大小并不会因此而缩减,用户可以通过系统函数SF_RESET_TEMP_TS来进行磁盘空间的清理(这个函数执行时会报错“临时表空间正在使用中,可以用SP_TRUNC_TS_FILE(TS_ID,FILE_ID,TO_SIZE)来缩减大小);对于回滚表空间,DM数据库将定期检查回滚段,并确定是否需要从回滚段中释放一个或多个簇。
  15. 段是簇的上级逻辑分区单元,由一组簇组成。在同一个表空间中,段可以包含来自不同文件的簇,即一个段可以跨越不同的文件。而一个簇以及该簇所包含的数据页则只能来自同一个文件。由于簇的数量是按需分配的,数据段中的不同簇在磁盘上不一定连续。
  16. 段分类:数据段(表数据段、索引数据段)、临时段、回滚段;

 

需要掌握的概念:数据库、实例、表空间、数据文件、记录、页、簇、段、ROLL、TEMP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值