无论开发应用程序还是做ETL研发,都离不开连接池的应用,如下是kettle中mysql 连接池设置界面,今天重点讲解下连接池中的参数配置。
defaultAutoCommit
当 defaultAutoCommit 参数设置为 true 时,表示连接会自动提交每个单独的SQL语句,这意味着每个语句都将被当作一个独立的事务自动提交到数据库中。
当 defaultAutoCommit 参数设置为 false 时,表示连接不会自动提交事务,需要手动调用 commit() 方法来提交事务。
defaultReadOnly
连接池中的参数 defaultReadOnly 用来设置数据库连接的默认只读(read-only)模式。当 defaultReadOnly 参数设置为 true 时,表示连接将以只读模式进行操作;当设置为 false 时,表示连接可以进行读写操作。
在只读模式下,数据库连接只能执行查询操作,而对于更新、插入和删除等写操作将会被拒绝。这对于一些特定的场景非常有用,例如在某些情况下你可能希望明确地限制连接只能用于执行查询操作,以防止意外的数据修改。
defaultTransactionlsolation
连接池中的参数 defaultTransactionIsolation 用来设置数据库连接的默认事务隔离级别。事务隔离级别是数据库管理系统中用来控制并发访问的一个重要概念,它决定了在并发环境下不同事务之间的可见性和影响。
设置 defaultTransactionIsolation 参数可以影响数据库连接的默认事务隔离级别,其中包括以下常见的四个级别:
- TRANSACTION_NONE:表示不支持事务。
- TRANSACTION_READ_UNCOMMITTED:表示一个事务可以读取另一个事务修改但还没有提交的数据。这可以导致脏读、不可重复读和幻读的问题。
- TRANSACTION_READ_COMMITTED:表示一个事务只能读取另一个事务已经提交的数据,可以避免脏读,但是不可重复读和幻读仍然可能发生。
- TRANSACTION_REPEATABLE_READ:表示一个事务在整个过程中都可以看到同样的数据记录。可以避免脏读和不可重复读,但是仍可能出现幻读问题。
- 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,连接,连接池 From: https://www.cnblogs.com/zjBoy/p/17963621