暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES事务介绍

数据猿 2023-08-30
271

关键字:

JDBC、语句处理、协议查询

1.JDBC及其工作流程

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java A
PI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。通过JDBC,我们可以对多种不同的数据库进行连接与操作。
整个JDBC连接并对数据库进行操作的流程如下:

首先会加载特定数据库驱动器实现类DriverManager,并将驱动器Driver注册到DriverManager中,之后通过class.forName(‘URL’)函数,根据特定的URL返回可以接受此URL的数据库驱动对象Driver。接着使用数据库驱动 Driver 通过getConnection()函数创建数据库连接Connection会话。至此,我们就完成了与数据库之间的通信连接,之后就可以对数据库进行操作了。

使用 Connection对象创建用于操作SQL语句的对象Statement ,statement对象 执行 sql语句并将返回结果存储到ResultSet 对象中。由于ResultSet中的结果是进行了封装,因此我们需要用迭代器将结果逐条取出。数据库操作完成之后关闭连接,释放资源。

至此我们就完成了一次JDBC与数据库之间的资源连接与释放。其中在statement对象处理SQL语句的过程中,有两种处理方式,分别是简单协议查询和扩展协议查询,下面就详细来分析一下这两种不同的处理方式。

2.简单协议查询

当客户端启动连接到服务器时,几乎所有发送的SQL命令都会被视为简单查询。简单查询自动遵循标准的查询处理流程,包括以下几个阶段:

  • parser:把SQL命令转换为parse tree
  • analyzer:执行语义分析,产生query tree
  • rewriter:重写器,使用规则系统重写query tree
  • planner:优化器,把重写之后的query tree转换为执行效率较高的plan tree
  • executor:执行器,按照plan tree给定的计划,按顺序执行表和索引的访问

一个简单查询由前端发起,发送一个查询报文到后端,查询报文中包含着SQL命令文本。后端随后发送一个或多个相应报文。如果有结果集,则返回:RowDescription()->DataRow()->CommandComplete()->ReadyForQuery(),否则返回CommandComplete()->ReadyForQuery(),具体如下:

  • RowDescription:由select、fetch等返回的行,描述了列布局,跟随DataRow报文。
  • DataRow:由select、fetch等返回的行集合
  • CommandComplete:一个SQL命令正常结束,但并不是整个字符串命令的结束。
  • ReadyForQuery:查询过程结束,标志着整个查询字符串都处理完成,并可以接受新的查询字符串。

3.扩展协议查询

扩展协议查询是另一种查询方式,将简单协议查询分解为不同的步骤,客户端要确保这些步骤能够执行。

  • Parse: 采用通用查询字符串,数据值替换为$1之类的占位符,该字符串会经历简单查询过程中的parser、analyzer、rewriter阶段。在阶段成功后,会创建一个prepared statement,是输入查询的一种表示,还不能执行。

  • Bind: 把Parse阶段创建的prepared statement中的占位符用用户提供的值替换掉并获得一个完整的查询语句,之后又Planner生成一个执行计划并生成一个portal,这是一个对象,表示如何执行特定查询。

  • Description: 是扩展查询的可选消息。Description报文与服务端交互,服务端根据前端发送的D报文,判断是否是预处理语句入口,如果是预处理语句入口,后端返回前端参数描述信息,如果不是,判断是否有数据,如果有数据,返回前端行描述信息。

  • Execute: 真正执行Bind阶段生成的portal对象。生成结果行并发送给客户端

  • Sync: 在一条语句的最后,客户端必须向服务发送该报文以指示扩展查询结束。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论