2026/4/14 4:51:37
网站建设
项目流程
做短视频网站有流量吗,学做网站的视频教学,软件开发和网站建设,WordPress使用微博外链好的#xff0c;这是一篇关于达梦数据库的学习心得报告#xff0c;包含文字说明和代码示例#xff0c;内容丰富#xff0c;并附有目录。达梦数据库学习心得报告目录概述1.1 国产数据库的崛起1.2 达梦数据库简介1.3 学习初衷与目标初识达梦#xff1a;安装与基本配置2.1 环…好的这是一篇关于达梦数据库的学习心得报告包含文字说明和代码示例内容丰富并附有目录。达梦数据库学习心得报告目录概述1.1 国产数据库的崛起1.2 达梦数据库简介1.3 学习初衷与目标初识达梦安装与基本配置2.1 环境准备与安装2.2 达梦管理工具 (DM Management Tool) 初探2.3 创建第一个数据库与用户2.4 基本连接与操作 (示例代码)核心功能探索SQL语言与对象管理3.1 兼容性与标准 SQL3.2 DDL库、表空间、用户、表、视图 (示例代码)3.3 DML增删改查 (示例代码)3.4 事务控制COMMIT,ROLLBACK, 隔离级别深入特性高级功能与实践4.1 存储过程与函数 (示例代码)4.2 触发器应用场景 (示例代码)4.3 索引策略与查询优化 (执行计划分析思路)4.4 分区表设计与应用4.5 备份与恢复机制概览性能调优与问题排查5.1 常见性能瓶颈点5.2 SQL 优化技巧 (示例改写低效查询)5.3 利用系统视图监控状态5.4 日志分析与问题定位思路总结与展望6.1 学习收获总结6.2 达梦数据库的优势与特点6.3 国产数据库的挑战与未来6.4 后续学习建议1. 概述1.1 国产数据库的崛起近年来在信息技术应用创新信创战略的推动下国产基础软件迎来了前所未有的发展机遇。数据库作为信息系统的核心组件其国产化替代需求日益迫切。在这一背景下武汉达梦数据库股份有限公司简称“达梦数据”作为国产数据库的领军企业之一其产品达梦数据库管理系统DMDBMS凭借多年的技术积累和持续的创新在政府、金融、能源、电信等关键领域得到了广泛应用。1.2 达梦数据库简介达梦数据库DMDBMS是一款具有完全自主知识产权的大型通用关系型数据库管理系统。它支持 SQL 标准提供 ACID 事务保证具备高可用性、高性能、高安全性等特点。达梦数据库兼容多种主流数据库的语法和接口如 Oracle, MySQL 的部分兼容降低了用户迁移和学习的成本。其核心特性包括高可用架构支持数据守护集群DMDSC、读写分离集群等保障业务连续性。高性能优化的存储引擎、高效的锁机制、多种索引技术如 B-Tree, 位图索引等。高安全性提供三权分立管理、强制访问控制、审计、数据加密等多层次安全防护。易用性提供图形化管理工具DM Management Tool、命令行工具disql、多种开发接口JDBC, ODBC, .NET Data Provider 等。兼容性对 SQL 标准、主流数据库语法/数据类型/函数等有较好的兼容支持。1.3 学习初衷与目标作为一名数据库学习者或从业者掌握国产数据库技术是顺应时代发展和满足工作需求的必然选择。学习达梦数据库的目标在于了解国产主流数据库的核心架构与设计理念。掌握达梦数据库的基本操作、SQL 语法及对象管理。熟悉其高级特性如存储过程、分区、集群的使用方法。具备基础的性能调优和问题排查能力。为未来在国产化项目中应用达梦数据库打下坚实基础。2. 初识达梦安装与基本配置2.1 环境准备与安装达梦数据库支持多种操作系统平台如 Windows、LinuxCentOS, RedHat, Ubuntu, Kirin, UOS 等。安装过程相对清晰获取安装包从达梦官网或授权渠道获取对应版本的安装介质ISO 或压缩包。环境检查确认操作系统版本、内核参数如ulimit设置、磁盘空间、内存等满足要求。运行安装程序在图形界面或命令行模式下运行安装程序。安装过程会提示选择安装路径、数据库实例类型单实例、集群、端口号默认 5236等。初始化数据库实例安装完成后通常需要初始化一个数据库实例dminit工具设置系统管理员SYSDBA的密码、数据库参数文件dm.ini位置、控制文件路径等。2.2 达梦管理工具 (DM Management Tool) 初探达梦数据库自带一个功能强大的图形化管理工具——DM Management Tool简称 DM Tool。这是管理达梦数据库的主要入口之一类似于 Oracle 的 SQL Developer 或 MySQL Workbench。通过它我们可以连接本地或远程的达梦数据库实例。浏览和管理数据库对象用户、表空间、表、视图、索引、存储过程等。执行 SQL 语句和脚本。监控数据库运行状态会话、锁、资源使用等。进行用户权限管理。导入导出数据。查看数据库日志。 初次使用 DM Tool需要配置数据库连接信息主机、端口、用户名、密码。2.3 创建第一个数据库与用户严格来说达梦的一个实例通常管理一个主要的数据库。更常见的操作是创建表空间和用户。系统用户安装后默认存在SYSDBA系统管理员、SYSAUDITOR审计员、SYSSSO安全员遵循三权分立原则。创建表空间表空间是存储数据库对象的物理容器。建议为不同应用或模块创建独立的表空间。-- 使用 SYSDBA 登录 (在 DM Tool 或 disql 中执行) -- 创建表空间 CREATE TABLESPACE MYAPP_DATA DATAFILE MYAPP_DATA01.dbf SIZE 256;创建用户为特定应用创建专属用户并关联到相应的表空间。CREATE USER APP_USER IDENTIFIED BY StrongPassword123 DEFAULT TABLESPACE MYAPP_DATA; -- 授予基本权限 GRANT CREATE TABLE, CREATE VIEW TO APP_USER; GRANT RESOURCE TO APP_USER; -- 包含更多权限如创建索引、过程等2.4 基本连接与操作 (示例代码)可以使用 DM Tool 图形化操作也可以使用命令行工具disql或编程语言接口如 JDBC连接。使用 disql 连接disql APP_USER/StrongPassword123localhost:5236连接成功后会进入 SQL 提示符 (SQL)。简单查询系统信息 (在 disql 或 DM Tool SQL 窗口)SELECT * FROM V$INSTANCE; -- 查看实例信息 SELECT * FROM V$VERSION; -- 查看数据库版本3. 核心功能探索SQL语言与对象管理3.1 兼容性与标准 SQL达梦 SQL 高度兼容 SQL 标准如 SQL92, SQL99和主流数据库特别是 Oracle的常用语法、数据类型VARCHAR2,NUMBER,DATE,CLOB,BLOB等、内置函数TO_CHAR,TO_DATE,NVL等。这使得从其他数据库迁移到或开发基于达梦的应用相对顺畅。但仍需注意一些细微差异建议查阅官方文档。3.2 DDL库、表空间、用户、表、视图 (示例代码)前面已展示创建表空间和用户。下面展示创建表和视图。-- 以 APP_USER 身份登录 -- 创建一张员工表 CREATE TABLE EMPLOYEE ( EMP_ID NUMBER(10) PRIMARY KEY, EMP_NAME VARCHAR2(50) NOT NULL, DEPT_ID NUMBER(5), SALARY NUMBER(10, 2), HIRE_DATE DATE DEFAULT SYSDATE ) TABLESPACE MYAPP_DATA; -- 创建一个部门表 CREATE TABLE DEPARTMENT ( DEPT_ID NUMBER(5) PRIMARY KEY, DEPT_NAME VARCHAR2(50) NOT NULL, LOCATION VARCHAR2(100) ) TABLESPACE MYAPP_DATA; -- 创建视图显示员工及其部门信息 CREATE OR REPLACE VIEW V_EMP_DEPT AS SELECT e.EMP_ID, e.EMP_NAME, e.SALARY, d.DEPT_NAME, d.LOCATION FROM EMPLOYEE e JOIN DEPARTMENT d ON e.DEPT_ID d.DEPT_ID;3.3 DML增删改查 (示例代码)基本的增删改查操作与标准 SQL 一致。-- 插入数据到部门表 INSERT INTO DEPARTMENT (DEPT_ID, DEPT_NAME, LOCATION) VALUES (10, 技术部, 北京); INSERT INTO DEPARTMENT (DEPT_ID, DEPT_NAME, LOCATION) VALUES (20, 销售部, 上海); COMMIT; -- 提交事务 -- 插入数据到员工表 INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, DEPT_ID, SALARY) VALUES (1001, 张三, 10, 15000); INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, DEPT_ID, SALARY) VALUES (1002, 李四, 20, 12000); COMMIT; -- 查询所有员工信息 SELECT * FROM EMPLOYEE; -- 查询技术部员工姓名和工资 SELECT e.EMP_NAME, e.SALARY FROM EMPLOYEE e WHERE e.DEPT_ID (SELECT DEPT_ID FROM DEPARTMENT WHERE DEPT_NAME 技术部); -- 更新给张三涨薪 10% UPDATE EMPLOYEE SET SALARY SALARY * 1.1 WHERE EMP_NAME 张三; COMMIT; -- 删除删除 ID 为 1002 的员工 (假设李四离职) DELETE FROM EMPLOYEE WHERE EMP_ID 1002; COMMIT;3.4 事务控制COMMIT,ROLLBACK, 隔离级别达梦数据库支持标准的事务控制语句BEGIN(或START TRANSACTION),COMMIT,ROLLBACK。它提供了多种事务隔离级别在dm.ini或会话级别设置如READ COMMITTED读已提交默认级别。SERIALIZABLE可串行化。READ UNCOMMITTED读未提交较少用。 理解不同隔离级别对并发操作脏读、不可重复读、幻读的影响至关重要。4. 深入特性高级功能与实践4.1 存储过程与函数 (示例代码)存储过程和函数用于封装复杂的业务逻辑提高代码复用性和执行效率。达梦的 PL/SQL 语言称为 DMSQL语法与 Oracle PL/SQL 高度相似。-- 示例创建一个存储过程根据部门名称计算该部门平均工资 CREATE OR REPLACE PROCEDURE GET_DEPT_AVG_SALARY ( p_dept_name IN VARCHAR2, p_avg_salary OUT NUMBER ) AS BEGIN SELECT AVG(e.SALARY) INTO p_avg_salary FROM EMPLOYEE e JOIN DEPARTMENT d ON e.DEPT_ID d.DEPT_ID WHERE d.DEPT_NAME p_dept_name; -- 处理可能没有数据的情况 (NO_DATA_FOUND 异常) EXCEPTION WHEN NO_DATA_FOUND THEN p_avg_salary : 0; END; / -- 调用存储过程示例 (在另一个块或工具中) DECLARE v_avg NUMBER; BEGIN GET_DEPT_AVG_SALARY(技术部, v_avg); DBMS_OUTPUT.PUT_LINE(技术部平均工资: || TO_CHAR(v_avg)); END; / -- 示例创建一个函数根据员工ID返回其部门名称 CREATE OR REPLACE FUNCTION GET_EMP_DEPT_NAME ( p_emp_id IN NUMBER ) RETURN VARCHAR2 AS v_dept_name VARCHAR2(50); BEGIN SELECT d.DEPT_NAME INTO v_dept_name FROM EMPLOYEE e JOIN DEPARTMENT d ON e.DEPT_ID d.DEPT_ID WHERE e.EMP_ID p_emp_id; RETURN v_dept_name; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 未知部门; END; /4.2 触发器应用场景 (示例代码)触发器用于在特定数据库事件INSERT, UPDATE, DELETE发生前后自动执行代码常用于审计、数据校验、维护衍生数据等。-- 示例创建一个审计触发器记录对 EMPLOYEE 表的工资变更 CREATE TABLE SALARY_CHANGE_LOG ( LOG_ID NUMBER PRIMARY KEY, EMP_ID NUMBER, OLD_SALARY NUMBER(10, 2), NEW_SALARY NUMBER(10, 2), CHANGE_TIME TIMESTAMP DEFAULT SYSTIMESTAMP, CHANGE_USER VARCHAR2(50) ); CREATE SEQUENCE SEQ_SALARY_LOG; CREATE OR REPLACE TRIGGER TRG_AUDIT_SALARY_CHANGE BEFORE UPDATE OF SALARY ON EMPLOYEE FOR EACH ROW BEGIN IF :OLD.SALARY :NEW.SALARY THEN INSERT INTO SALARY_CHANGE_LOG (LOG_ID, EMP_ID, OLD_SALARY, NEW_SALARY, CHANGE_USER) VALUES (SEQ_SALARY_LOG.NEXTVAL, :OLD.EMP_ID, :OLD.SALARY, :NEW.SALARY, USER); END IF; END; /4.3 索引策略与查询优化 (执行计划分析思路)合理的索引是查询性能的关键。达梦支持多种索引类型B-Tree, 位图索引, 函数索引等。分析执行计划使用EXPLAIN或 DM Tool 的“执行计划”功能查看 SQL 语句的执行路径。关注全表扫描 (TABLE SCAN)、索引扫描 (INDEX SCAN)、连接方式 (NESTED LOOP,HASH JOIN,MERGE JOIN) 等。优化建议为频繁出现在WHERE子句和连接条件中的列创建索引。避免在索引列上使用函数或计算。使用复合索引时注意列的顺序。定期分析表统计信息 (ANALYZE TABLE ... COMPUTE STATISTICS;) 以便优化器做出更优选择。示例分析查询计划EXPLAIN SELECT * FROM EMPLOYEE WHERE DEPT_ID 10; -- 查看输出确认是否使用了索引4.4 分区表设计与应用分区表将大表物理上分割成更小的、更易管理的部分分区提高查询性能分区裁剪、管理效率和可用性。达梦支持多种分区策略范围分区、列表分区、哈希分区、组合分区等。-- 示例创建一个按入职年份范围分区的员工表 CREATE TABLE EMPLOYEE_PART ( EMP_ID NUMBER(10) PRIMARY KEY, EMP_NAME VARCHAR2(50) NOT NULL, DEPT_ID NUMBER(5), SALARY NUMBER(10, 2), HIRE_DATE DATE ) PARTITION BY RANGE (HIRE_DATE) ( PARTITION PART_2010 VALUES LESS THAN (TO_DATE(2011-01-01, YYYY-MM-DD)), PARTITION PART_2011 VALUES LESS THAN (TO_DATE(2012-01-01, YYYY-MM-DD)), PARTITION PART_2012 VALUES LESS THAN (TO_DATE(2013-01-01, YYYY-MM-DD)), PARTITION PART_OTHER VALUES LESS THAN (MAXVALUE) ) TABLESPACE MYAPP_DATA; -- 查询 2011 年入职的员工时数据库只会扫描 PART_2011 分区4.5 备份与恢复机制概览保障数据安全是 DBA 的核心职责。达梦提供多种备份恢复方式联机备份使用BACKUP DATABASE命令进行热备份不影响业务运行需配置归档模式ARCHIVELOG。脱机备份关闭数据库后直接复制数据文件和控制文件冷备份。逻辑备份使用dexp(导出) 和dimp(导入) 工具进行表级、用户级或全库级的逻辑备份与恢复。恢复使用RMAN(Recovery Manager) 工具进行基于备份集的恢复操作支持时间点恢复PITR。 制定完善的备份策略全备增量备/差量备日志备份和定期恢复演练至关重要。5. 性能调优与问题排查5.1 常见性能瓶颈点SQL 效率低下全表扫描、未使用索引、复杂的连接或子查询、函数滥用。锁争用长时间持有锁导致其他会话阻塞。资源不足CPU、内存特别是 SGA/PGA、磁盘 I/O 瓶颈。配置不当内存参数 (MEMORY_POOL,BUFFER)、连接数 (MAX_SESSIONS) 等设置不合理。设计缺陷表结构设计不合理缺少必要的约束或索引。5.2 SQL 优化技巧 (示例改写低效查询)避免SELECT *只选择需要的列。使用绑定变量减少 SQL 解析开销提高共享池利用率。优化连接确保连接条件有索引考虑连接顺序。减少子查询尝试改写为JOIN。利用分析函数代替复杂的自连接或多次扫描。示例改写低效子查询原查询 (可能低效)SELECT e.EMP_NAME FROM EMPLOYEE e WHERE e.DEPT_ID IN (SELECT DEPT_ID FROM DEPARTMENT WHERE LOCATION 北京);改写为JOIN(通常更优)SELECT e.EMP_NAME FROM EMPLOYEE e JOIN DEPARTMENT d ON e.DEPT_ID d.DEPT_ID WHERE d.LOCATION 北京;并确保d.LOCATION和e.DEPT_ID上有合适的索引。5.3 利用系统视图监控状态达梦提供了丰富的动态性能视图 (V$开头)用于实时监控数据库状态V$SESSIONS: 查看当前所有会话信息用户、状态、SQL 语句等。V$LOCKS: 查看当前锁信息。V$SYSTEMSTAT: 查看系统统计信息逻辑读、物理读、提交次数等。V$SQL_AREA: 查看共享池中的 SQL 语句及其执行统计。V$BUFFERPOOL: 查看缓冲区池状态。 熟练使用这些视图是诊断性能问题和排查故障的基础。5.4 日志分析与问题定位思路达梦运行日志 (dm_xxx.log)记录数据库启动、关闭、检查点、错误信息等。是排查启动失败、崩溃等问题的主要依据。跟踪文件 (trc文件)当发生严重错误如 ORA-600 类时生成包含详细的堆栈信息需结合技术支持分析。审计日志如果启用了审计功能会记录用户的关键操作。排查思路明确问题现象和发生时间。检查相关日志文件搜索错误号 ([ERROR]) 或警告 ([WARNING])。结合当时的操作执行的 SQL、管理命令进行分析。利用监控视图确认资源状态和会话阻塞情况。尝试在测试环境复现问题。查阅官方文档和知识库寻求解决方案。6. 总结与展望6.1 学习收获总结通过系统学习达梦数据库掌握了以下核心知识和技能理解了达梦数据库的基本架构、安装配置和管理工具使用。熟练运用达梦 SQL 进行数据库对象管理DDL和数据操作DML。深入了解了事务控制、存储过程、函数、触发器等高级编程对象的开发与应用。学习了索引优化、分区表设计等提升性能和可管理性的关键技术。了解了备份恢复策略和性能监控、问题排查的基本方法。体会到达梦数据库对主流标准SQL和产品Oracle的兼容性设计降低了学习迁移成本。6.2 达梦数据库的优势与特点自主可控核心代码自主开发满足信创要求。高兼容性降低迁移和学习难度。稳定可靠经过众多关键行业项目验证。功能完备覆盖了大型数据库所需的核心功能和高级特性。生态完善提供丰富的管理工具、开发接口和社区支持。6.3 国产数据库的挑战与未来尽管发展迅速国产数据库包括达梦仍面临挑战生态成熟度相比 Oracle, MySQL 等第三方工具、中间件、应用适配的广度深度有待加强。极致性能优化在超大规模、超高并发场景下的性能调优经验积累。人才储备熟悉国产数据库的专业 DBA 和开发人员相对稀缺。 未来随着国家政策的持续支持和技术的不断迭代国产数据库将在性能、功能、易用性、生态建设等方面持续进步市场份额有望进一步扩大。6.4 后续学习建议深入实践在测试环境或实际项目中多动手操作巩固基础知识。探索集群学习达梦数据守护集群 (DMDSC)、读写分离集群等高可用架构的配置与管理。性能调优进阶深入研究执行计划、锁机制、内存管理、I/O 调优等高级主题。安全加固学习三权分立、审计、加密等安全功能的详细配置。关注新版本持续关注达梦新版本发布的新特性和改进。参与社区加入达梦技术社区交流学习经验获取帮助。达梦数据库的学习是一个持续的过程。通过不断实践、探索和总结相信能够熟练掌握这款强大的国产数据库为未来的工作和国产化信息化建设贡献力量。