【06】Camunda7-数据库配置

数据源配置

Camunda数据库配置方式主要包括2各部分。首先是定义数据库的 JDBC 属性,Camunda引擎在内部使用 Apache MyBatis 进行持久化。

  • jdbcUrl:数据库的JDBC URL。
  • jdbcDriver:特定数据库类型的驱动程序的实现。
  • jdbcUsername:连接数据库的用户名。
  • jdbcPassword:连接数据库的密码。

基于提供的 JDBC 属性构建的数据源将具有默认的 MyBatis 连接池设置。可以选择设置以下属性来调整该连接池:

  • jdbcMaxActiveConnections:连接池在任何给定时间可以包含的最大活动连接数。默认值为 10。
  • jdbcMaxIdleConnections:连接池在任何给定时间可以包含的最大空闲连接数。
  • jdbcMaxCheckoutTime:在强制返回连接之前,可以从连接池中“签出”连接的时间量(以毫秒为单位)。默认值为 20000(20 秒)。
  • jdbcMaxWaitTime:这是一个低级别的设置,它使池有机会打印日志状态,并在需要异常长时间的情况下重新尝试获取连接(以避免在池配置错误时永远以静默方式失败)。默认值为 20000(20 秒)。
  • jdbcStatementTimeout:JDBC 驱动程序等待数据库响应的时间(以秒为单位)。默认值为 null,表示没有超时。H2 数据库不支持此设置。

其次,另一种配置是jdbcBatchProcessing。用于设置在向数据库发送SQL语句时是否必须使用批处理模式。关闭时,语句将逐个执行,该参数值默认是。批处理存在一些已知问题:批处理不适用于早于 12 的 Oracle 版本;在 MariaDB 和 DB2 上使用批处理时,jdbcStatementTimeout 将被忽略。

下面是一些常见的数据库JDBC链接示例:

  • H2: jdbc:h2:tcp://localhost/camunda
  • MySQL:jdbc:mysql://localhost:3306/camunda?autoReconnect=true&sendFractionalSeconds=false
  • Oracle: jdbc:oracle:thin:@localhost:1521:xe
  • PostgreSQL: jdbc:postgresql://localhost:5432/camunda
  • DB2: jdbc:db2://localhost:50000/camunda
  • MSSQL: jdbc:sqlserver://localhost:1433/camunda
  • MariaDB: jdbc:mariadb://localhost:3306/camunda

数据库Schema配置

对于数据库Schema配置,还有以下可选配置项:

  • databaseType:通常不需要指定此属性,因为它是根据数据库连接元数据自动分析的。仅当自动检测失败时才应指定。可能的值:{h2, mysql, oracle, postgres, mssql, db2, mariadb},详情可参照前文camunda支持的数据库,或参考官方文档。此设置将确定将使用哪些创建/删除脚本和查询。
  • databaseSchemaUpdate:允许设置策略,以在流程引擎启动和关闭时处理数据库Schema。
    • true(默认值):在构建流程引擎时,将检查数据库中是否存在 Camunda表。如果表不存在,则会创建它们。必须确保数据库Schema的版本与流程引擎支持的数据库library的版本匹配。
    • false:不执行任何检查,并假定数据库中存在Camunda表。
    • create-drop:在创建流程引擎时创建数据库Schema,在关闭流程引擎时删除数据库Schema。

隔离级别

大多数数据库管理系统都提供四种不同的隔离级别来设置。例如,ANSI/USO SQL 定义的级别为(从低隔离到高隔离):

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READS
  • SERIALIZABLE

Camunda所需的隔离级别是 READ COMMITTED,根据数据库系统的不同,该级别的名称可能不同。已知将级别设置为REPEATABLE READS会导致死锁,因此在更改隔离级别时需要小心。

关于MySQL数据库的配置说明

此处对于使用MYSQL作为Camunda数据库的相关配置与注意事项进行说明。其他数据库的情况,请参考官方文档。

禁止为日期/时间值发送毫秒:Camunda引擎的MySQL 数据库架构不支持列类型TIMESTAMP和DATETIME 的毫秒精度:即,要存储的值四舍五入到下一秒或上一秒,例如,2021-01-01 15:00:46.731 四舍五入为 2021-01-01 15:00:47。将日期/时间值作为任何SQL语句的一部分发送到数据库时,MySQL  JDBC驱动(版本>= 5.1.23)会发送毫秒值。为确保流程引擎在发送日期/时间值时行为正确,需确保MySQL JDBC驱动程序更新到版本>= 5.1.37。也可以通过在JDBC 连接URL中设置 sendFractionalSeconds=false 来避免在这些版本中向 MySQL 服务器发送毫秒,详情可参阅MYSQL官方文档

可选的性能配置

为了执行透明访问检查,任务查询将联接授权表 (ACT_RU_AUTHORIZATION)。对于任何类型的与流程相关的筛选器,它都会联接流程定义表 (ACT_RE_PROCDEF)。默认情况下,查询对这些操作使用左联接。如果未使用 CMMN 和独立任务(既不与 BPMN 流程相关,也不与 CMMN 案例相关的任务),那么可以将引擎配置标志 cmmnEnabled 和 standaloneTasksEnabled 设置为 false。然后,左联接将替换为内部联接,这些联接在某些数据库上表现更好。有关这些设置的详细信息,请参阅配置属性参考

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值