注册
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

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服