达梦体系结构学习
1. 数据库由一个或多个表空间组成;
2. 每个表空间由一个或多个数据文件组成;
3. 每个数据文件由一个或多个簇组成;
4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
6. 页是数据库中最小的分配单元,也是数据库中使用的最小的IO单元。
页
数据页也称为数据块,默认8k
页头 |
页类型、页地址 |
数据
|
存放数据
|
空闲空间 |
空闲空间 |
行偏移数组 |
空间占用情况 |
FILLFACTOR参数:指定一个数 据页初始化后插入数据时最大可以使用空间的百分比 (表/索引)。
目的:设置 FILLFACTOR 参数的值,是为了指定数据页中的可用空间百分比(FILLFACTOR) 和可扩展空间百分比(100-FILLFACTOR) ,保留一定的空间,以防止在今后的更新操作中增加列或者修改变长列的 长度时,引起数据页的频繁分裂 。
簇
簇由同一个数据文件中 16 个(默认)或 32 个连续的数据页组成 。
页的默认大小为8k,簇的默认大小为8k*16=128k
分配簇:
当创建一个表/索引的时候,DM 为表/索引的数据段分配至少一个 簇 ,同时数据库会自动生成对应数量的空闲数据页,当初始分配的空间用完时DM数据库会自动扩展。当DM数据库的表空间为新的簇分配空闲空间时,首先
1.在表空间按文件从小到大(文件号还是文件大小?)的顺序在各数据文件中查找可用的空闲簇进行分配,
2.如果没有空闲簇,则在各数据文件中查找可用的空闲空间,格式化后分配,
3.如果没有空闲空间,则扩充数据文件
释放簇:
数据表空间:在drop对象前,数据段至少有1个簇不会被回收,删除时也会保留至少1个簇。
drop语句会回收全部簇被其他对象使用
临时表空间:dm数据库会自动释放临时段,但是临时表空间所占磁盘不会减少。SF_RESET_TEMP_TS清理临时表空间磁盘占用
回滚表空间:定期检查
段
段由簇组从,段不一定来自一个数据文件,簇一定来自一个数据文件。与oracle段类似
表空间
1. SYSTEM表空间存放了有关DM数据库的字典信息,用户不能在SYSTEM表空间创 建表和索引。
2. ROLL表空间完全由DM数据库自动维护,用户无需干预。该表空间用来存放事务运 行过程中执行DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致 性视图。
3. MAIN表空间在初始化库的时候,就会自动创建一个大小为128M的数据文件MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定MAIN 表 空间为用户默认的表空间。
4. TEMP表空间完全由DM数据库自动维护。当用户的SQL语句需要磁盘空间来完成 某个操作时,DM 数据库会从TEMP 表空间分配临时段。如创建索引、无法在内存中 完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到TEMP 表空间。
5. HMAIN表空间属于HTS表空间,完全由DM数据库自动维护,用户无需干涉。当用 户在创建HUGE 表时,未指定HTS 表空间的情况下,充当默认HTS 表空间。
表空间总结:
达梦表空间管理与oracle类似
System=system Roll=undo main=users temp=temp hmain=?
sysdba默认表空间为main(users)
达梦数据库跟oracle太像了,命令基本都是一模一样的
再往下看感觉没啥意思
参考文档:
《DM7系统管理员手册》