热门搜索
分布式
数据库一体机
云数据库
建设银行
保险核心
密集交易
登录
注册
JDBC、数据库实例、数据库(磁盘文件)三者之间的联系
评 论
技术分享
/
文章详情
/
JDBC、数据库实例、数据库(磁盘文件)三者之间的联系
雾岛听风
2026/08/07
164
0
0
JDBC、数据库实例、数据库(磁盘文件)三者之间的联系
极简分层模型
Java应用
↓
达梦JDBC驱动(网络通信层)
↓ TCP端口
达梦数据库实例(内存+后台进程,运行时服务)
↓ IO读写
达梦磁盘文件(dbf/ctl/log/ini,持久化静态存储)
磁盘文件:数据持久化的底层载体
→存放在服务器硬盘(物理保存),数据库关机不丢失,包括:
.dbf(数据文件:表空间,表,索引等真实数据)、
.ctl(控制文件:实例名、文件路径、库模式)、
.log(日志文件:重做日志、归档日志、保证事务ACID、故障修复)、
dm.ini(配置文件:内存参数、端口等)
数据库实例:运行时内存+进程服务
实例=一组后台进程+内存缓冲区
实例与磁盘关系:
1、启动:读取dm.ini→加载控制文件→挂载所有的dbf数据文件→分配内存→、拉起后台进程→实例就绪,对外提供端口服务
2、读写逻辑:客户端SQL请求先操作实例内存缓存,定期由后台进程刷写到磁盘文件
3、关闭:执行检查点,把内存中没有写入磁盘的文件全部写入磁盘文件,再销毁内存、停止进程、实例消失,只剩磁盘文件
一套磁盘文件只能同时被一个实例挂载||多实例集群(DMDSC)是多进程实例共享一套磁盘文件
JDBC:外部客户端访问实例的标准通信接口
JDBC作用:java程序不直接读写磁盘文件,也不直接操作OS进程,是通过JDBC驱动建立TCP连接和在运行的达梦实例端口通信,发送SQL、接受执行结果
三者交互完整链路:
1、Java 应用加载达梦 JDBC 驱动,编写连接串:
jdbc:dm://127.0.0.1:5236
2、JDBC 驱动通过 TCP 连接服务器 5236 端口(达梦实例监听端口)
3、达梦实例接收连接,创建会话,解析 SQL
4、实例先在内存缓冲区查找目标表数据:
缓存命中:直接返回数据给 JDBC → Java 应用;
缓存未命中:实例后台进程读取磁盘上的
.dbf
数据文件,载入内存,再返回结果
5、DML 修改操作:先修改内存缓存,事务提交后,日志写入重做日志文件,后台检查点进程异步将脏数据持久化到 dbf 磁盘文件
6、Java 执行 close 关闭连接,JDBC 断开和实例的 TCP 会话
7、若停止达梦实例:内存全部释放,所有数据永久保存在磁盘文件;下次启动实例重新加载文件
场景演示:执行SQL:select id,name from user_info where id =1;
第一层:应用程序(Java代码)
一、加载驱动,建立连接
JVM加载达梦驱动类,注册驱动到java标准JDBC驱动管理器;
封装IP、端口、账号密码、库名参数、交给JDBC底层建立网络连接
二、封装SQL语句,下发请求
应用只负责组装业务SQL,传入参数
不处理网络、数据库内存、磁盘IO,全部交给JDBC驱动处理
第二层:JDBC驱动(中间桥梁)
一、建立TCp socket连接
驱动解析URL中的192.168.1.100:5236,发起TCP三次握手,和达梦实例监听端口建立长连接通道
二、身份认证报文交互
驱动把用户名、密码、数据库模式等信息封装成协议包,通过TCP发给实例;实例校验账号权限,返回认证成功/失败的报文
三、封装SQL请求报文
把预处理SQL、参数、执行类型(查询)序列化为达梦私有协议数据包,发送给实例进程
四、阻塞等待实例返回结果报文
发送完成后,驱动线程阻塞监听TCP输入流,等待实例返回结果集
五、解析返回报文,转换成JDBC标准对象
收到实例返回的数据包后:解析二进制数据:字段名、字段类型、行数据;封装成 Java 标准
ResultSet
结果集对象,返回给上层应用;
六、关闭资源时断开TCP
conn.close()时驱动发送断开会话报文,关闭Socket连接,释放客户端网络资源
第三层:达梦数据库实例进程
一、监听进程接收网络请求
二、SQL解析,权限校验、生成执行计划
三、内存缓冲区查找数据
根据主键id=1 生成数据页地址
缓存命中:内存直接拿到行数据,worker进程把数据打包成协议报文原路通过TCP发给JDBC驱动
缓存未命中:触发IO读取进程执行磁盘读操作,进入第四层磁盘文件读取
四、读写磁盘上的达梦数据文件(在缓存未命中时触发读)
IO进程根据.ctl文件记录的表空间映射关系,定位user_info表所在的表空间以及对应.dbf数据文件
通过OS文件IO接口 从磁盘读取对应数据页二进制块
OS把磁盘数据加载到服务器物理内存,交给达梦实例缓冲区
https://eco.dameng.com
赞
上一篇:
达梦数据库 dminit 初始化工具常用参数详解
下一篇:
达梦数据库主备集群原理与实践
评论
登 录
后发表回复
提 交
作者
文章
阅读量
获赞
扫一扫
联系客服