Spring Boot'ta Database Connection Pool Ayarı: HikariCP ile Performans

Veri tabanına her bağlantı kurmak maliyetli bir işlemdir. Connection pool, önceden açılmış bağlantıları saklar ve tekrar kullanır. Bu sayede uygulamanız çok daha hızlı çalışır ve sunucu kaynakları verimli kullanılır.

Spring Boot, varsayılan olarak HikariCP adlı connection pool kütüphanesini kullanır. Uygulamanızın ihtiyacına göre bu ayarları yapılandırabilirsiniz.

En basit şekilde başlayalım. Proje kökündeki `application.properties` dosyasını açın ve şu satırları ekleyin:

1spring.datasource.url=jdbc:mysql://localhost:3306/mydb
2spring.datasource.username=root
3spring.datasource.password=1234
4spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
5
6# HikariCP Ayarları
7spring.datasource.hikari.maximum-pool-size=20
8spring.datasource.hikari.minimum-idle=5
9spring.datasource.hikari.connection-timeout=30000
10spring.datasource.hikari.idle-timeout=600000
11spring.datasource.hikari.max-lifetime=1800000

- maximum-pool-size: Aynı anda açılabilecek maksimum bağlantı sayısı (varsayılan: 10)
- minimum-idle: Boşta bekleyen minimum bağlantı sayısı (varsayılan: 10)
- connection-timeout: Yeni bağlantı bekleme süresi milisaniye cinsinden
- idle-timeout: Boşta bağlantının kapatılmasına kadar geçen süre
- max-lifetime: Bir bağlantının maksimum yaşam süresi

Eğer `application.yml` kullanıyorsanız:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1spring:
2datasource:
3url: jdbc:mysql://localhost:3306/mydb
4username: root
5password: 1234
6driver-class-name: com.mysql.cj.jdbc.Driver
7hikari:
8maximum-pool-size: 20
9minimum-idle: 5
10connection-timeout: 30000
11idle-timeout: 600000
12max-lifetime: 1800000

Daha ileri kontrol için Java sınıfında yapılandırayabilirsiniz:

1import com.zaxxer.hikari.HikariConfig;
2import com.zaxxer.hikari.HikariDataSource;
3import org.springframework.context.annotation.Bean;
4import org.springframework.context.annotation.Configuration;
5
6@Configuration
7public class DataSourceConfig {
8@Bean
9public HikariDataSource dataSource() {
10HikariConfig config = new HikariConfig();
11config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
12config.setUsername("root");
13config.setPassword("1234");
14config.setMaximumPoolSize(20);
15config.setMinimumIdle(5);
16config.setConnectionTimeout(30000);
17config.setIdleTimeout(600000);
18config.setMaxLifetime(1800000);
19return new HikariDataSource(config);
20}
21}

Uygulamanız başlatıldığında HikariCP loglarını göreceksiniz:

12024-01-15 10:30:45.123 INFO - HikariPool-1 - Starting pool
22024-01-15 10:30:45.456 INFO - HikariPool-1 - Added connection conn1
32024-01-15 10:30:45.789 INFO - HikariPool-1 - Pool is ready

Bu loglar connection pool'un başarıyla oluşturulduğunu gösterir.

Çoğu uygulamada `maximum-pool-size: 20` ve `minimum-idle: 5` yeterlidir. Eğer uygulamanız yüksek trafik alıyorsa pool size'ı artırabilirsiniz. Ancak sunucu kaynakları sınırlıysa çok yüksek bir değer kullanmayın, çünkü bu bellek tüketimini artırır.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz