- 博客(51)
- 收藏
- 关注
原创 达梦数据库 Hint 使用与 Hint 注入实战
本文通过一组可复现的执行计划实验,介绍达梦数据库 Hint 的基本用法,并重点验证 9 个优化参数在不同取值下对执行计划的影响。最后再演示如何通过 Hint 注入,在不修改应用 SQL 的情况下改变执行计划。先给出本文的实验结论:Hint 是写在 SQL 中的优化器提示,用来影响优化器的计划生成过程。常见写法如下:一条 SQL 可以同时包含多个 Hint:达梦支持的 Hint 不只有 、 等固定提示,也允许将部分 INI 参数临时写入 SQL。可以通过以下视图确认参数是否支持 Hint: 常见值包括
2026-07-28 17:26:36
314
原创 达梦数据库 Redo 文件损坏修复:替换联机日志,临时抢救数据
Redo 文件损坏修复最容易误解的地方,是把“启动成功”当成“数据库修好了”。Redo 完整时,数据库可以进行正常实例恢复;Redo 丢失或损坏时,优先选择备份加归档恢复;没有正规恢复条件时,替换 Redo 只是临时抢救数据;新 Redo 不能恢复原 Redo 中已经丢失的历史记录;db_magic匹配只是第一层检查通过,不代表 Redo 包一定能解析;不是修复 Redo,而是高风险跳过事务恢复步骤;本次起到了继续启动的作用,是否需要处理则取决于版本和dmmdf输出,本次没有修改;
2026-07-20 16:10:34
380
原创 达梦数据库 Core 文件分析入门:从 GDB 堆栈到 dmrdc SQL 提取
Core 保存的是进程异常时的现场;GDB 负责把现场里的线程和调用栈展示出来;dmrdc可以从达梦 Core 中提取活动 SQL;SQL 出现在 Core 里,只说明它和现场有关,不等于它就是根因;人为kill -11生成的 Core,适合学习分析流程,不适合直接推导数据库缺陷。数据库日志告诉我们故障前发生了什么,Core 告诉我们故障时停在哪里。把日志、GDB 堆栈和dmrdc输出放在一起看,才是达梦 Core 分析比较稳妥的方式。
2026-07-19 22:09:39
332
原创 单机 DM8 两节点实时主备部署与性能验证
本文档用于在一台提交机 VM 上复刻部署规范里的 2 节点 Data Watch 实时主备集群。核心做法是:同一台机器上放两个实例目录,实例名不同,所有服务端口错开,用本机 IP 模拟两台机器。
2026-07-17 19:07:40
218
原创 单提交机 DM8 两节点实时主备部署与性能验证
本文档用于在一台提交机 VM 上复刻部署规范里的 2 节点 Data Watch 实时主备集群。核心做法是:同一台机器上放两个实例目录,实例名不同,所有服务端口错开,用本机 IP 模拟两台机器。
2026-07-17 19:03:46
193
原创 简单sql与dm功能实验记录
实验说明:PL/SQL 编程基础。包括如何通过FUNCTION返回计算值,以及如何通过PROCEDURE结合游标(CURSOR)遍历特定条件的数据行并执行批量更新。-- 创建函数:生成指定长度的随机字符串(用作密码)BEGINEND;-- 预查 102 部门符合条件的员工-- 创建存储过程:使用游标遍历数据,为符合条件的员工涨薪 15%) ASBEGINEND IF;END LOOP;COMMIT;END;-- 执行存储过程BEGINEND;
2026-07-09 18:12:24
267
原创 达梦数据库对象管理
达梦数据库的对象管理,表面上看是各种CREATEALTERDROP语句,真正学起来要把它看成一个体系。模式负责组织对象,表空间负责承载数据。表是核心对象,索引、视图、触发器、序列、同义词大多围绕表展开。权限决定对象能否被访问,角色让权限管理更容易维护。改名、删除、迁移对象前,要先考虑依赖、授权、统计信息和数据字典。对象依赖和对象失效后的重编译机制。大表、分区表、HUGE 表的空间和索引管理。结合执行计划分析索引和统计信息是否真正生效。
2026-06-24 18:07:27
366
原创 【无标题】
(3) 为数据库创建用户 EXAM,密码为 Dameng123,默认数据表空间为 EXDATA,默认索引表空间为 EXIDX,使用资源限制 PRO_EXAM 管理 EXAM 用户的资源限制,使用角色 ROLE_EXAM 管理用户的权限。b) 创建视图V_STUSCORE,查询展示平均分数 85 以上的学生及该学生各科成绩,展示学生姓名、课程名称、课程分数、平均分数,按平均分倒序排序 (平均分最大的排在最前面)。在 EXAM 用户下创建表 COURSES、STUDENTS、SCORES。
2026-06-10 11:03:34
261
原创 达梦 SQL 执行计划操作符与 TRACE、ET 学习笔记
今天这部分学习可以归纳成一句话:先会看计划树,再会找真实耗时,最后再追问优化器为什么这样选。用EXPLAIN快速看 SQL 的访问路径和计划形状。用执行一次,确认实际计划和统计信息。记录执行号,用找最耗时的操作符。如果问题集中在排序、哈希、扫描、索引连接,再结合统计信息、索引、SQL 写法继续分析。这套方法比单独背操作符更有用。操作符名称只是入口,真正要培养的是把 SQL 文本、执行计划和监控数据串起来判断的能力。
2026-06-08 17:41:45
288
原创 DCA 考试重点初版
用途:本文只写 DCA 考试实操内容。流程按“考试准备 -> 环境检查 -> 挂载安装 -> 建库启停 -> 对象管理 -> 备份接口 -> 最后检查”整理。说明:笔记中的 SQL 都是基础语句,不包含复杂操作,也不一定完全符合考试题目要求。考试时建议优先使用 Manager 等图形化工具完成题目要求,命令和 SQL 主要用于理解原理、查看 DDL、排错和图形化失败时兜底。
2026-06-05 19:02:45
247
原创 DM8 目录结构与常用排查入口梳理
返回对象的 DDL 文本,适合做迁移对比、问题复现和留存证据。它比直接查系统表更接近“建表语句”的形式。查询其他用户对象定义需要相应权限。大对象或复杂对象的 DDL 可能很长,排查时可以先确认是否能取到,再按需导出。启动失败,先看 systemd 状态、服务日志、dm.ini和控制文件路径。连接失败,先看进程、端口、PORT_NUM和客户端连接配置。空间问题,先看文件系统使用率,再看数据文件、归档、备份和 trace。对象问题,先看模式和对象名,再看字段、索引、定义和依赖。
2026-05-29 19:29:24
252
原创 达梦数据库安全管理与访问控制
DM 数据库安装后会预设若干管理用户。安全机制不同,管理员职责划分也不同。SYSDBA:数据库管理员,负责数据库建设、维护、备份恢复、性能管理等。SYSSSO:数据库安全员,负责安全策略和强制访问控制相关管理。SYSAUDITOR:数据库审计员,负责设置审计策略、查看和分析审计记录。四权分立在三权分立基础上增加SYSDBO,即数据库对象操作员。四权分立下,SYSDBA更偏向系统管理与维护,数据对象的创建和数据操作职责会进一步拆给SYSDBO。《DM8 安全管理》2.1 DM 的管理用户。
2026-05-28 21:06:38
440
原创 Oracle 到达梦 DTS 迁移实验记录
本次实验把 Oracle 容器作为源端,通过达梦 DTS 将 Oracle 侧对象迁移到达梦数据库。实验素材来自已解压的导出日志中可以看到参数,说明该 dump 只包含用户、表、索引、视图、过程等元数据信息,不包含表内业务数据。因此本实验更适合验证 Oracle 结构导入和 DTS 结构迁移流程;如果需要验证真实数据迁移,还需要准备包含数据的 full 或 data_only 类型 dump。
2026-05-27 10:34:35
490
原创 从本地达梦迁移数据到 Docker Oracle
本次实验从本地 DM 迁移一张测试表到 Docker Oracle,并通过 Oracle 查询验证迁移结果。整个过程不需要深入学习 Oracle,只要能启动容器、连上服务、查到目标表即可。对 DTS 的学习重点可以放在三个地方:连接配置是否正确、对象选择是否准确、类型映射是否符合预期。先把这个小闭环跑通,再继续扩展到多表、约束、索引、视图和数据对比,学习路径会更清楚。
2026-05-26 18:26:44
465
4
原创 DM8 数据共享集群 DSC 学习总结:共享存储、集群组件与常见误区
确认 DMSERVER 实例状态、归档状态、客户端连接配置和业务访问现象。如果只是客户端连不上,还要区分是服务名问题、端口问题、实例状态问题,还是集群状态问题。节点无法加入:优先看节点序号、DCR 配置、CSS 状态、网络和共享存储。ASM 起不来:优先看裸设备路径、磁盘组、ASM MAL 配置和权限。DB 实例异常:优先看 ASM 是否正常、实例配置路径、归档和 DCR 信息。运行卡顿:关注缓存交换、热点页、全局锁等待、MAL 网络和共享存储 IO。
2026-05-25 19:24:05
343
原创 DM8 读写分离集群学习总结:从部署规划到扩容排查
本文基于已有的 1 主 1 备 1 监视器实验环境整理,前面给出整体认识和部署规划,中间梳理部署重点与关键配置,后面补充节点扩容思路和典型问题排查方法。DM 数据守护的基础链路是:主库产生 Redo 日志,Redo 通过 MAL 系统传输到备库,备库接收后重演 Redo,以此保持主备数据同步。读写分离集群是在数据守护基础上进一步利用备库资源:主库承担写操作,备库承担部分只读操作,客户端接口根据服务名和读写分离参数完成自动分流。读写分离的核心流程可以拆成五步:从技术支持视角看,读写分离集群至少有三条主线:环境
2026-05-22 19:34:55
436
原创 达梦数据库备份还原:物理备份、逻辑备份
结论说明物理备份是灾难恢复底座没有物理备份,介质故障时很难可靠恢复逻辑备份是对象级恢复利器单表、模式、跨库迁移更灵活归档连续性决定恢复上限归档断链会直接影响时间点恢复备份成功不等于可恢复必须校验、演练、异地保存DBA 要优先恢复到临时库降低生产二次破坏风险。
2026-05-15 19:03:13
476
原创 Linux 磁盘管理全攻略:从物理硬件到在线扩容
SWAP(交换空间)是 Linux 在物理内存不足时使用的磁盘区域,作为内存的"溢出区",防止系统因内存耗尽(OOM,Out Of Memory)而崩溃杀死进程。物理内存 (RAM)↕ 当 RAM 不足时,内核将"不活跃的内存页"换出到 SWAPSWAP 空间(磁盘)范围:0 ~ 100,默认通常为 60。值越高:内核越积极将数据换出到 SWAP(对数据库有害,频繁磁盘 IO)。值越低:内核尽量用物理内存,SWAP 作为最后手段。达梦/Oracle 等数据库推荐设置为10。# 查看当前值。
2026-05-13 18:35:45
422
原创 DM8 数据库安装实战:从零搭建达梦数据库环境(附全套工具链接)
本文记录我从零搭建 DM8 完整环境的全过程,包括 VMware 虚拟机准备、麒麟系统 Linux 前置配置、DM8 软件安装、dbca 建库、服务注册,每一步都附带命令和截图。文末提供全套工具的网盘下载链接,拿来即用。本文完整走通了从零搭建 DM8 数据库环境的全流程:准备工具 → 创建虚拟机 → 安装麒麟系统 → Linux 前置配置 → 安装 DM8 → dbca 建库 → 注册服务 → 验证连接核心要点回顾前置配置不能省:关防火墙、关 SELinux、改文件描述符,三步缺一不可。
2026-04-11 13:50:20
542
原创 达梦数据库的体系架构
达梦数据库(DM)是武汉达梦数据库股份有限公司自主研发的大型通用关系型数据库管理系统。理解 DM8 的体系架构,是掌握数据库管理、性能优化和故障排查的基石。本文从数据库与实例的关系存储结构内存结构线程结构以及实例状态管理五个维度,系统剖析 DM8 的体系架构。DM8 的体系架构核心脉络:实例 (Instance) = 内存结构 + 线程结构││ 内存结构: 数据缓冲区 / 日志缓冲区 / 字典缓冲区 / SQL缓冲区 / 排序区 / 哈希区。
2026-04-10 19:23:15
520
原创 19.2 说说 TCP 的三次握手?
的一来一回半,用最小的通信代价,解决了连接的有效性验证和初始序列号同步两大核心问题,为后续可靠的数据传输打下了坚实的基础。我们可以把这个过程想象成客户端(发起方)和服务器(接收方)之间的一次精确“对表”。TCP 的三次握手是 TCP 协议建立一个可靠连接时必须执行的标准化流程。面试官通常会追问,为什么不是两次或四次?三次握手是保证可靠连接的。至此,一个可靠的、双向的 TCP 连接就建立完成了。这个过程由三个步骤组成,涉及到。
2025-10-13 18:01:22
462
原创 19.1 TCP 和 UDP 有什么区别?
TCP 和 UDP 是传输层最核心的两个协议,它们为应用程序提供了两种截然不同的数据传输服务。总而言之,TCP 和 UDP 的选择,是一个经典的。这是两者最本质的区别,也是由第一点决定的。TCP 的所有可靠性保障,都是有代价的。
2025-10-13 17:58:46
522
原创 面试冲刺 13.3 Redis 数据过期后的删除策略是什么?
Redis 在正常情况下对过期键的处理就是惰性删除 + 定期删除一起使用,主动删除(内存回收)其实属于异常的兜底处理了。当 Redis 内存使用达到设置的 maxmemory 限制时,会触发内存回收机制。此时会主动删除一些过期键和其他不需要的键,以释放内存。主要有两种删除策略,定期删除和惰性删除两种。
2025-10-07 21:56:14
387
原创 面试冲刺 13.2 Redis 主从复制的实现原理是什么?
Redis的主从复制是指通过一个Redis实例可以将数据复制到多个节点,从节点获取数据保持同步。
2025-10-07 21:44:43
956
原创 面试冲刺 13.1 Redis 的持久化机制有哪些?
AOF 文件记录了 Redis 在内存中的操作过程,只要在 Redis 重启后重新执行 AOF 文件中的写命令即可将数据恢复到内存中。AOF 重写并不是对现有的 AOF 文件进行修改,而是根据当前每个键的最新值转换为对应的写命令,写入新的 AOF 文件,形成一个新文件。no:操作系统来决定,通常操作系统在一定时间或缓冲区满时同步磁盘,最高性能,数据安全性最低,redis崩溃,丢失较多数据。everysec:每秒调用fsync,最多丢失一秒的数据,性能和安全折中。
2025-10-07 21:19:39
1005
原创 面试冲刺 12.1 Redis 中如何实现分布式锁?
在 Redis 中实现分布式锁的常见方法是通过 命令 + lua 脚本组合使用。确保多个客户端不会获得同一个资源锁的同时,也保证了安全解锁和意外情况下锁的自动释放。一个健壮的 Redis 分布式锁,其标准的生命周期如下:
2025-10-06 20:40:28
239
原创 面试冲刺 12.2 Redis 的 Red Lock 是什么?你了解吗?
从半数节点成功获取到锁,记录时间T2,时间差小于锁超时时间,加锁,反之失败。红锁成本不低,依次加锁(性能不高),极端环境有问题。顺序set命令加锁操作,同时设置超时时间。加锁成功,执行逻辑;一般情况,主从+哨兵实现。
2025-10-06 20:39:30
315
原创 leetcode hot100_226. 翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9]树中节点数目范围在 [0, 100] 内。输出:[4,7,2,9,6,3,1]输入:root = [2,1,3]输入:root = []输出:[2,3,1]
2025-10-05 21:06:16
235
原创 面试冲刺 12.1 Redis 中如何保证缓存与数据库的数据一致性?
之前,不会产生脏数据。只有在极特殊的网络延迟等情况下,才可能出现这种“写比读快”的罕见 race condition。并不能 100% 保证一致性,但它能极大地降低数据不一致的风险,因此是工程实践中的标准方案。使用Redis做缓存时,请求先访问Redis,而不是Mysql。先删除缓存,再写数据库,过一段时间再删除缓存,避免旧数据被回种。两种方法在并发时,都会存在缓存和数据库数据不一致的问题。:这种情况要发生,必须满足一个。(先更新数据库,在删除缓存)的“写缓存”操作会发生在。
2025-10-05 17:48:32
360
原创 面试冲刺 11.1 Redis 中跳表的实现原理是什么?
Redis 增强特性标准跳表设计目的与带来的好处对应 Redis 命令score可重复通常要求 key 唯一通过复合排序,支持更灵活的业务场景ZADDbackward指针只有forward指针将底层变为双向链表,实现高效的逆序遍历和范围查询ZREVRANGEZREVRANKspan(跨度)没有此概念无需遍历底层链表,实现 O(log n) 的快速排名计算ZRANK。
2025-10-04 17:58:09
755
原创 面试冲刺 10.1 Redis 为什么这么快?
Redis提供丰富的数据结构,这些数据结构大多操作时间复杂度为O(1)的原因,分别是存储方式、优秀的线程模型以及IO模型、高效的数据结构。Redis 4.0:引入Unlink命令,用于异步操作。除了持久化等场景,Redis不需要与磁盘交互,访问。Redia 6.0:引入多线程并发处理网络IO,,传统硬盘时间更长,可能1-10ms。
2025-10-03 18:08:09
397
原创 面试冲刺 9.2 如何处理 MySQL 的主从同步延迟?
从库找不到数据,去主库查询第二次。故意查询查不到的数据会对主库造成冲击。代码写死,将写入后立刻读的操作与主库绑定。延迟必然存在,只能优化减少,无法避免。MySQL主从延迟原因及优化方案。
2025-10-02 20:54:34
165
原创 面试冲刺 9.1 什么是 MySQL 的主从同步机制?它是如何实现的?
如果有两个事务 A 和 B 存在锁冲突(比如都要修改同一行数据),那么其中一个事务必然会被阻塞,无法进入。此时,客户端认为数据已成功修改,并可以继续执行后续操作。事件,便读取它,解析成 SQL 语句,然后在从库自己的数据库上执行,完成数据的修改。在 InnoDB 的两阶段提交中,一个事务必须先成功获取它需要的所有锁,才能进入。成功写入磁盘后,对于主库自身而言,这个事务就已经圆满完成了。主库有多个数据库,从库有多个进程,一对一执行。等,执行数据修改,并准备提交事务。阶段,直到另一个事务释放锁。
2025-10-02 18:59:45
497
原创 面试冲刺 8.3 MySQL 事务的二阶段提交是什么?
作者gitee地址(https://gitee.com/HsxM/projects),由于csdn每天投稿上限为3,leetcode hot 100 和其他内容在gitee更新
2025-10-01 21:30:06
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅