From 58fde3e7aa7a1cc622556a93bc7259f9cdec736f Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Wed, 20 Jul 2022 10:08:25 +0800 Subject: [PATCH] perf: database connection pooling --- .../komga/infrastructure/configuration/KomgaProperties.kt | 3 +++ .../infrastructure/datasource/DataSourcesConfiguration.kt | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/configuration/KomgaProperties.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/configuration/KomgaProperties.kt index 96431fb10..03abfae36 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/configuration/KomgaProperties.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/configuration/KomgaProperties.kt @@ -70,6 +70,9 @@ class KomgaProperties { @get:Positive var batchChunkSize: Int = 1000 + + @get:Positive + var maxPoolSize: Int = 8 } class Lucene { diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/datasource/DataSourcesConfiguration.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/datasource/DataSourcesConfiguration.kt index 1f8207712..72d050785 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/datasource/DataSourcesConfiguration.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/datasource/DataSourcesConfiguration.kt @@ -24,11 +24,15 @@ class DataSourcesConfiguration( .type(SqliteUdfDataSource::class.java) .build() + val poolSize = + if (komgaProperties.database.file.contains(":memory:")) 1 + else Runtime.getRuntime().availableProcessors().coerceAtMost(komgaProperties.database.maxPoolSize) + return HikariDataSource( HikariConfig().apply { dataSource = sqliteUdfDataSource poolName = "SqliteUdfPool" - maximumPoolSize = 1 + maximumPoolSize = poolSize }, ) }