无论开发应用程序还是做ETL研发,都离不开连接池的应用,如下是kettle中mysql 连接池设置界面,今天重点讲解下连接池中的参数配置。

defaultAutoCommit

当 defaultAutoCommit 参数设置为 true 时,表示连接会自动提交每个单独的SQL语句,这意味着每个语句都将被当作一个独立的事务自动提交到数据库中。

当 defaultAutoCommit 参数设置为 false 时,表示连接不会自动提交事务,需要手动调用 commit() 方法来提交事务。

defaultReadOnly

连接池中的参数 defaultReadOnly 用来设置数据库连接的默认只读(read-only)模式。当 defaultReadOnly 参数设置为 true 时,表示连接将以只读模式进行操作;当设置为 false 时,表示连接可以进行读写操作。

在只读模式下,数据库连接只能执行查询操作,而对于更新、插入和删除等写操作将会被拒绝。这对于一些特定的场景非常有用,例如在某些情况下你可能希望明确地限制连接只能用于执行查询操作,以防止意外的数据修改。

defaultTransactionlsolation

连接池中的参数 defaultTransactionIsolation 用来设置数据库连接的默认事务隔离级别。事务隔离级别是数据库管理系统中用来控制并发访问的一个重要概念,它决定了在并发环境下不同事务之间的可见性和影响。

设置 defaultTransactionIsolation 参数可以影响数据库连接的默认事务隔离级别,其中包括以下常见的四个级别:

  1. TRANSACTION_NONE:表示不支持事务。
  2. TRANSACTION_READ_UNCOMMITTED:表示一个事务可以读取另一个事务修改但还没有提交的数据。这可以导致脏读、不可重复读和幻读的问题。
  3. TRANSACTION_READ_COMMITTED:表示一个事务只能读取另一个事务已经提交的数据,可以避免脏读,但是不可重复读和幻读仍然可能发生。
  4. TRANSACTION_REPEATABLE_READ:表示一个事务在整个过程中都可以看到同样的数据记录。可以避免脏读和不可重复读,但是仍可能出现幻读问题。
  5. TRANSACTION_SERIALIZABLE:表示事务串行执行,可以避免脏读、不可重复读和幻读,但会影响性能。

根据业务需求和数据库的支持情况,你可以在连接池参数中设置 defaultTransactionIsolation 参数,以控制不同连接的默认事务隔离级别。需要注意的是,并非所有的数据库都支持所有的事务隔离级别,因此在设置该参数时需要注意对应数据库的支持情况。

defaultCatalog

通过设置 defaultCatalog 参数,你可以指定连接在没有明确指定目录的情况下,默认使用的数据库目录。这对于需要在多个数据库目录中进行操作的场景非常有用。

需要注意的是,并非所有的数据库系统都使用 Catalog 的概念,因此在使用 defaultCatalog 参数时需要确保你所连接的数据库系统支持该功能。一些常见的数据库系统如 MySQL、PostgreSQL、SQL Server 等都支持 Catalog 的概念,而像 SQLite 这样的数据库则不需要设置 defaultCatalog 参数。

initialSize

参数 initialSize 用于设置连接池的初始大小。具体来说,initialSize 参数表示在连接池初始化时一次性创建并准备好的数据库连接的数量。

通过设置 initialSize 参数,可以在应用启动时预先创建一定数量的数据库连接,以便在应用程序需要时能够快速获取数据库连接,减少连接获取的延迟时间,提高系统的响应速度。

maxActive

参数 maxActive 用于设置连接池中允许的最大活动连接数。换句话说,maxActive 参数指定了在同时向数据库请求连接时连接池可以拥有的最大连接数目限制。

通过设置 maxActive 参数,可以对数据库连接的并发数量进行限制,防止系统因为过多的连接请求而导致资源耗尽、性能下降甚至崩溃。这项设置对于控制系统对数据库的并发访问非常重要,能够保护数据库不受过载而导致的性能问题。

maxldle

参数maxIdle用于设置连接池中允许的最大空闲连接数。换句话说,maxIdle参数指定了在连接池中保持的最大空闲连接数的限制。

通过设置maxIdle参数,可以对连接池中连接的空闲数量进行限制,以便及时释放闲置的数据库连接而不会占用过多的系统资源。这个设置对于控制系统对数据库连接的管理非常重要,可以有效地避免过多的闲置连接造成资源浪费和性能下降。

minldle

连接池中的参数 minIdle 用于设置连接池中保持的最小空闲连接数。换句话说,minIdle 参数指定了在连接池中保持的最小空闲连接数的限制。

通过设置 minIdle 参数,可以确保连接池中始终保持一定数量的空闲连接可供使用。这对于在系统空闲或低负载时能够快速响应新的数据库连接请求非常重要,从而减少连接创建和销毁的开销,提高系统的响应速度。

maxWait

参数maxWait用于设置获取数据库连接的最大等待时间。当连接池中的所有连接都被占用,且达到了最大活动连接数(maxActive)的限制时,新的连接申请会被阻塞,并等待maxWait指定的时间。

如果在maxWait指定的时间内没有可用的连接,那么连接申请将会抛出异常或者超时,返回连接请求失败的信息。通过设置maxWait参数,可以对连接获取的等待时间进行限制,确保系统能够在合理的时间内获得数据库连接,避免长时间的无效等待造成系统性能问题。

validationQuery

连接池中的参数validationQuery用于设置用于验证连接是否有效的SQL查询语句。当连接从连接池中取出后,连接池会通过执行validationQuery来检验该连接是否有效,即是否可以正常地进行数据库操作。

通过配置validationQuery,连接池可以在提供连接给应用程序之前先对连接的有效性进行验证,确保应用程序获得的连接都是可用的,从而避免应用程序因使用无效连接而产生的异常和错误。

testOnBorrow

连接池中的参数testOnBorrow用于指定在从连接池中获取连接时,是否执行连接的可用性检测。如果设置为true,每次从连接池中获取连接时,都会通过执行validationQuery或者通过验证连接的方式来检测连接是否可用。

testOnReturn

参数testOnReturn用于指定在将连接返回到连接池时,是否执行连接的可用性检测。如果设置为true,每次归还连接到连接池时都会通过执行validationQuery或验证连接的方式来检测连接的可用性。

testWhileldle

连接池中的参数testWhileIdle用于指定连接在空闲时是否执行可用性检测。如果设置为true,连接池会定期对连接进行可用性检测,以确保连接在空闲时依然可用。

通过配置testWhileIdle参数,可以避免连接在长时间空闲后失效的情况,从而提高连接的可靠性和稳定性。

timeBetweenEvictionRunsMillis

连接池中的参数timeBetweenEvictionRunsMillis用于指定两次空闲连接检测之间的时间间隔。这个参数主要用于控制连接池对空闲连接的检测频率。

具体来说,timeBetweenEvictionRunsMillis参数可以设置一个时间间隔,连接池会在这个时间间隔内定期对连接进行空闲性检测,保证连接在长时间空闲后不会失效或变得不可用。这样可以有效避免由于长时间空闲导致的连接失效问题,提高连接池的可靠性和稳定性。

poolPrenaredStatements

连接池中的参数poolPreparedStatements用于指定是否缓存预编译的SQL语句。当该参数设置为true时,连接池会缓存预编译的SQL语句,以提高数据库操作的性能和效率。

通过开启poolPreparedStatements参数,连接池在执行SQL语句时会先进行预编译并缓存起来,下次执行相同的SQL语句时就可以直接使用缓存的预编译语句,而不需要重新进行编译,从而减少了数据库的工作量,提高了数据库操作的执行效率。

maxOpenPreparedStatements

连接池中的参数 maxOpenPreparedStatements 用于指定在连接池中可以缓存的预编译的语句的最大数量。当开启了 poolPreparedStatements 参数并且需要缓存预编译的 SQL 语句时,maxOpenPreparedStatements 参数就会起到限制连接池中缓存的预编译语句数量的作用。

accessToUnderlyingConnectionAllowed

连接池中的参数 accessToUnderlyingConnectionAllowed 用于指定是否允许从连接池中获取底层数据库连接。当该参数设置为true时,允许从连接池中获取底层数据库连接;设置为false时,禁止从连接池中获取底层数据库连接。

允许访问底层数据库连接可以给开发人员提供更多的灵活性,他们可以直接操作底层数据库连接来执行一些特定的、连接池无法满足的操作,但这也增加了对数据库连接的直接控制,需谨慎操作以避免对连接池的稳定性和性能造成影响。

removeAbandoned

参数 removeAbandoned 用于指定是否开启自动移除被抛弃(abandoned)但未关闭的连接。当该参数设置为true时,连接池会自动检测并移除被抛弃的连接;设置为false时,连接池不会进行自动移除被抛弃的连接。

“被抛弃的连接”是指一个连接被借用后,在一定时间内没有被归还到连接池,连接池会将其识别为被抛弃的连接。这种情况可能发生在开发人员在使用连接后没有正确的归还连接到连接池,导致连接被长时间占用而没有释放回连接池。

removeAbandonedTimeout

参数 removeAbandonedTimeout 用于指定连接被认为是被抛弃(abandoned)的超时时间。如果连接在连接池中被借用后未在指定的时间内归还,连接池会将其视为被抛弃的连接,并可能会根据配置移除该连接。

logAbandoned

连接池中的参数 logAbandoned 用于指定是否记录被抛弃的连接的堆栈跟踪信息。当该参数设置为true时,连接池会记录被抛弃的连接的堆栈跟踪信息;设置为false时,连接池不会记录被抛弃的连接的堆栈跟踪信息。

kettle从入门到精通 第三十一课 mysql 数据连接连接池配置的更多相关文章

  1. SaltStack 入门到精通第三篇:Salt-Minion配置文件详解

    SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 作者:ArlenJ  发布日期:2014-06-09 17:52:16   ##### 主要配置设置 ##### 配置 默认值 ...

  2. GPU 编程入门到精通(三)之 第一个 GPU 程序

    博主因为工作其中的须要.開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...

  3. NeHe OpenGL教程 第三十一课:加载模型

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. python第三十一课--递归(2.遍历某个路径下面的所有内容)

    需求:遍历某个路径下面的所有内容(文件和目录,多层级的) import os #自定义函数(递归函数):遍历目录层级(多级) def printDirs(path): dirs=os.listdir( ...

  5. Hibernate从入门到精通(三)Hibernate配置文件

    在上次的博文Hibernate从入门到精通(二)Hibernate实例演示我们已经通过一个实例的演示对Hibernate的基本使用有了一个简单的认识,这里我们在此简单回顾一下Hibernate框架的使 ...

  6. 【PHP】最详细PHP从入门到精通(三)——PHP中的数组

     PHP从入门到精通 之PHP中的数组 各位开发者朋友大家好,链接上次更新,我们PHP的学习也更深了一层,本次博主给大家带来PHP数组的数组实例详解的相关资料.数组分为数组数值数值,关联数组,多维数组 ...

  7. 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总

     PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...

  8. Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)

    1.简介 在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,上一篇文章宏哥主要介绍了jmeter连接和创建数据库测试计划的过程,宏哥在文中通过示例和代码非常 ...

  9. linux学习之centos(三):mysql数据库的安装和配置

    前言:mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库, ...

  10. kettle从入门到精通 第十一课 kettle javascript 解析json数组

    1.json步骤虽然可以解析json数组,但是不够灵活.通过javascript步骤来解析json数组比较灵活,且可以按照需要组装数据流转到下个步骤. 1)步骤名称:可以自定义 2)Transform ...

随机推荐

  1. 【笔记】Oracle 窗口函数

    Oracle 窗口函数 简单来说,窗口函数是分析函数的一种,通常可以理解成over()函数 构成:函数名①() over(partition by 分组的列名 order by 排序的列名 XXX) ...

  2. 一个 Blink 小白的成长之路

    写在前面 写过blink sql的同学应该都有体会,明明写的时候就很顺滑,小手一抖,洋洋洒洒三百行代码,一气呵成.结果跑的时候,吞吐量就是上不去.导致数据延迟高,消息严重积压,被业务方疯狂吐槽.这时候 ...

  3. Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航

    简介: 通过引入MaxCompute和Quick BI,大东解决了以往数据查询即刻导致数据库闪崩的状况,还搭建起完善的报表体系,稳定应对高频.高并发的数据分析. 大东鞋业一季大约有500款的新品.大区 ...

  4. 庖丁解InnoDB之REDO LOG

    ​简介: 数据库故障恢复机制的前世今生一文中提到,今生磁盘数据库为了在保证数据库的原子性(A, Atomic) 和持久性(D, Durability)的同时,还能以灵活的刷盘策略来充分利用磁盘顺序写的 ...

  5. [GPT] gradio-chatbot 原理及代码解析

      GradioChatBot 是一个基于 Gradio 的聊天机器人,它可以与不同的 URL 进行对话.其原理是通过将用户输入的文本发送到指定的 URL,然后接收并解析 URL 返回的响应,然后将响 ...

  6. [ML] 科学编程语言 Octave 简单操作

    octave 是和 matlab 类似的软件,可以方便的进行矩阵计算.图形绘图. matlab 收费,octave 是 gnu 开源软件. Mac 安装: $ brew install octave ...

  7. [Gin] gin.H{} 与 map[string]interface{}

    gin.H 中的 H 是对 map[string]interface{} 定义的新类型,用来简化生成 map 数据时的书写. // H is a shortcut for map[string]int ...

  8. openpyxl模块操作Excel

    1.openpyxl模块了解 1.excel版本问题 03版本之前的excel文件后缀名xls 03版本之后的excel文件后缀名xlsx 2.python操作excel表格的模块 openpyxl ...

  9. LabView之MQTT协议使用

    一.MQTT概述 MQTT协议是一种消息列队传输协议,采用订阅.发布机制,订阅者只接收自己已经订阅的数据,非订阅数据则不接收,既保证了必要的数据的交换,又避免了无效数据造成的储存与处理.因此在工业物联 ...

  10. vue项目(cli-3)替换浏览器logo

    思路: 根html文件的 <link rel="icon" href="<%= BASE_URL %>favicon.ico">是引入i ...