本周主要从以下几个方面进行本人对达梦数据库学习的分享,学习进度和学习情况因人而异,仅供参考。
一、达梦数据库的体系架构
二、达梦数据库的安装
三、达梦数据库的数据类型
四、达梦数据库的DDL、DML、DCL语句
五、达梦数据库登录、创建用户、角色等非模式对象的基本操作,以及权限的管理
六、达梦数据库的客户端工具MNAGER和DTS
一、达梦数据库的体系架构
了解一个数据库的体系架构才能更好的使用它,所以先从达梦数据库的体系架构来进行介绍。
达梦数据库在架构上主要分为四部分:逻辑存储机构,物理存储结构,内存结构,和线程。
逻辑存储结构;
1. 数据库由一个或多个表空间组成;
2. 每个表空间由一个或多个数据文件组成;
3. 每个数据文件由一个或多个簇组成;
4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。
物理存储结构:
物理存储结构一般为保存在磁盘上的物理文件:
典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等
这里简单介绍以下dm.ini,以后会详细介绍,
每创建一个 DM 数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项,里面有很多重要的参数,通过有经验的数据库管理人员设置不同的参数可以达到不同的效果。
内存结构:
DM 数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。根据系统中子模块的不同功能,对内存进行了上述划分,并采用了不同的管理模式。
接下来简单介绍其中的几种:内存池则可一次向操作系统申请一片较大内存,当系统在运行过程中需要申请内存时,可在共享内存池内进行申请,当用完该内存时,再释放掉,即归还给共享内存池。
数据缓冲区是DM Server 在将数据页写入磁盘之前以及从磁盘上读取数据页之后,数据页所存储的地方,基于LRU算法,可以将经长访问的数据保留,提高I/O效率。
排序缓冲区提供数据排序所需要的内存空间。当用户执行 SQL 语句时,常常需要进行排序,所使用的内存就是排序缓冲区提供的。在每次排序过程中,都首先申请内存,排序结束后再释放内存。
DM线程:
DM 服务器使用“对称服务器构架”的单进程、多线程结构。这种对称服务器构架在有效 地利用了系统资源的同时又提供了较高的可伸缩性能
DM 进程中主要包括监听线程、IO 线程、工作线程、调度线程、日志线程等,下面简单介绍几个:
监听线程主要的任务是在服务器端口上进行循环监听,一旦有来自客户的连接请求,监 听线程被唤醒并生成一个会话申请任务,加入工作线程的任务队列,等待工作线程进行处理。 它在系统启动完成后才启动,并且在系统关闭时首先被关闭。为了保证在处理大量客户连接 时系统具有较短的响应时间,监听线程比普通线程优先级更高。
工作线程是 DM 服务器的核心线程,它从任务队列中取出任务,并根据任务的类型进
IO 线程的职责就是处理这些 IO 操作。通常情况下,DM Server 需要进行 IO 操作的时机主要有以下三种: 1. 需要处理的数据页不在缓冲区中,此时需要将相关数据页读入缓冲区; 2. 缓冲区满或系统关闭时,此时需要将部分脏数据页写入磁盘; 3. 检查点到来时,需要将所有脏数据页写入磁盘。 IO 线程在启动后,通常都处于睡眠状态,当系统需要进行 IO 时,只需要发出一个 IO请求,此时 IO 线程被唤醒以处理该请求,在完成该 IO 操作后继续进入睡眠状态。
调度线程用于接管系统中所有需要定时调度的任务。调度线程每秒钟轮询一次,负责的 任务有以下一些: 1. 检查系统级的时间触发器,如果满足触发条件则生成任务加到工作线程的任务队列 由工作线程执行; 2. 清理 SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项; 3. 检查数据重演捕获持续时间是否到期,到期则自动停止捕获; 4. 执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池; 5. 自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据 INI 参数设置的自动检查点执行间隔定期执行检查点操作; 6. 会话超时检测。当客户连接设置了连接超时,定期检测是否超时,如果超时则自 动断开连接; 7. 必要时执行数据更新页刷盘; 8. 唤醒等待的工作线程。
二、达梦数据库的安装
达梦数据库在Windows上的安装很简单,下载安装包,根据提示就可以完成安装,我在Linux上安装遇到了几个问题,我还没有解决,下周我会把这个问题解决然后进行更新。
三、达梦数据库的数据类型
DM数据类型可以分为四大类:常规数据类型(字符和数值型),位串数据类型,日期时间数据类型,多媒体数据类型;
达梦数据库DM8我目前练习了48种数据类型,下面附上测试SQL;
建表包括目前的所有数据类型:
1 create table tmp_lj_1(a_1 char(32),a_2 character(32),a_3 varchar(32),a_4 varchar2(32),a_5 numeric (4,1),
2 a_6 decimal(4,1),a_7 dec(4,1),a_8 number(4,1),a_9 integer,a_10 int,a_11 bigint,a_12 tinyint,a_13 byte,
3 a_14 smallint,a_15 binary,a_16 varbinary,a_17 float,a_18 double,a_19 real,a_20 double precision,
4 a_21 bit,
5 a_22 date,a_23 time,a_24 timestamp,a_25 interval year to month,a_26 interval year,a_27 interval month,
6 a_28 interval day,a_29 interval day to hour,a_30 interval day to minute,a_31 interval day to second,
7 a_32 interval hour,a_33 interval hour to minute,a_34 interval hour to second,a_35 interval minute,a_36 interval minute to second,a_37 interval second,
8 a_38 time with time zone,a_39 timestamp with time zone,a_40 timestamp with local time zone,
9 a_41 text,a_42 long,a_43 longvarchar,a_44 image,a_45 longvarbinary,a_46 blob,a_47 clob,a_48 bfile);
插入数据并验证:
1 insert into tmp_lj_1 values('a1','a2','a3','a4',10.5,10.6,10.7,10.8,9,10,-11,-12,-13,-14,0xF,0x10,1.17,1.18,1.19,1.20,
2 0,
3 '2021.5.20','12:10:32','2021-5-20 12:10:32.000000','21-5','21','05',
4 '20','20 9','20 12:30','20 12:30:30.000000',
5 '18','18:20','18:20:30.000000','22','22:30.000000','22.000000',
6 '18:26:32 +8:00','2021-5-20 18:30:30 +8:00','2021-5-20 18:36:30 +8:00',
7 'AA','AA','AA','0X2F','0X2F','0X2F','AA',NULL)
8
9 SELECT * from tmp_lj_1 --查看数据
四、达梦数据库的DDL、DML、DCL语句
1. DDL语句,用户、模式、基表、视图、索引、序列、全文索引、存储过程、触发器等数据库对象的定义和删除语句
2. DML查询(含全文检索)、插入、删除、修改语句;
3. DCL:授权语句、回收权限语句
这些语句和目前主流的SQL语句基本类似,下面会对部分语句进行测试,大家也可以自行探索。
五、达梦数据库登录、创建用户、角色等非模式对象的基本操作,以及权限的管理
数据库登录输入主机名(本机一般为LOCALHOST或者输入本机IP地址)通信端口号和对应的用户密码即可
创建用户
1 CREATE USER LOGIN_001 IDENTIFIED BY LOGIN_001; --创建用户
授权DBA
1 grant DBA to LOGIN_001 --授权DBA
删除用户
1 drop user LOGIN_001 cascade; --删除用户
创建模式
这里解释以下模式:
在 DM 中,一个用户可以创建多个模式,一个模式中的对象(表、视图)可以被多个用户使用。 系统为每一个用户自动建立了一个与用户名同名的模式作为默认模式,相当于一个存储文件的文件夹。
1 CREATE SCHEMA SCHE_001 --创建模式
2
3 SET SCHEMA SCHE_001; --切换SCHE——001模式
4
5 CREATE TABLE SCHE_T(A INT); --创建SCHE_T表
将表SCHE_T的表级SELECT、INSERT权限授予用户USER_001
1 grant select,insert on sche_t to user_001 --对应授权
六、达梦数据库的客户端工具MNAGER和DTS
MANAGER: DM管理工具
新建连接
创建连接数据库的对象导航,不进行保存,下次开启后需重新连接。
注册连接
创建连接数据库的对象导航,进行保存,下次开启后对象导航存在,可直接进行连接。
连接时选择对应的主机名,端口,用户名和密码即可
工具栏可以新建SQL窗口,保存和打开SQL脚本到本地,还可以打开主页查看文档和工具导航,也可以打开SQL调试。
对象导航:可以查看当前连接信息,包括模式,表空间,用户等等,右键对应模块,可以进行创建或者删除操作。
SQL窗口:进行SQL脚本的编写包括查询,函数,存储过程等等。
脚本管理:保存常用或需要记忆的脚本,可以很方便打开
函数:系统函数以及使用说明
日志:查看执行日志
代理环境:配置作业自动执行,包括定时备份,每日建表以及更新等操作。
DTS:
DM 数据迁移工具 DM DTS 提供了主流大型数据库迁移到 DM、DM 到 DM、文件迁移到 DM 以及 DM 迁移到文件等功能。
以MySQL到达梦为例:
打开工具,新建工程,输入工程名字入MySQL_dm,会出现一个工程。
展开新建的工程,右键迁移选择新建迁移,输入迁移名称,进入下一步
会介绍达梦支持的迁移类型,下一步:
选择MySQL到DM:
输入源数据库和目的数据库的对应信息:
选择对应的模式和需要迁移的表,视图等
查看迁移任务:
完成迁移,并再DM中查看数据: