基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
数据库连接规范
更新时间:2024-12-29 23:00:00
本文介绍在 OceanBase 中进行数据库连接的规范。
使用连接池的时候需要设置一个连接最大的空闲时间。
前端程序连接数据库或者数据库代理层,对于 jdbc 建议连接超时设置为 1 秒,要具备失败重连机制,且失败重连必须有间隔时间。
程序端日志必须记录连接数据库的标准 OceanBase 错误码以及所连接的数据库信息(比如 IP 和 PORT,数据库用户名),用于 DBA 排查错误
对于有连接池的前端程序,必须根据业务需要配置初始、最小、最大连接数,建议超时时间设置为 30 秒,且要设置连接检测或空闲超时,以及连接回收机制(最大 3600 秒)。
程序端使用的连接数据库的 so 库包、jar 库包以及客户端数据库版本,必须与线上数据库服务器的版本兼容。
切换 DB,不推荐执行
use <dbname>,推荐使用Connection.setCatalog(dbname)接口。设置 ReadOnly,不推荐执行
set session transaction readonly,推荐使用Connection.setReadOnly(xx)接口。执行单个事务语句(无论是单 SQL 事务语句,还是多 SQL 的事务语句)之前,必须重新
getConnection,执行完后必须close connection。不能在一个过程中执行多个事务,即需按照以下方式使用:getConnection,执行单事务语句,close connection。需要特殊说明的原因是,OceanBase 当前限制单个事务只能在单个 server上 完成整个生命周期,即在单个 server上开始事务,执行事务,结束事务。不保证在 A server 上开启的事务,在 B server上同样有效。具体影响到 JAVA Connector 中, 就是当前连接处于事务中时, 下一条 SQL 只能路由到上一个 server 上,不能路由切换到其它 server,当前连接不在事务中时,可以根据下一条SQL路由到最佳 server 上。