[DB]接続プールとHikariCP

3873 ワード

何が連絡を解除しますか? 接続プールの利点 DataSource DataSourceの例 HikariCP

サーバの開発には、データベースの使用が必要です.私のサーバーがDBとどのように接続するか知りたいです.
要求されるたびにデータベースに接続する方法があり、サーバがデータベースに接続してから接続された接続をデータベースに接続する方法があります.
次に、2つ目の方法を見てみましょう.接続を解放する方法を見てみましょう.

1.ネットの意味とは?


データベース接続を格納するコネクタ(Webサーバなど)の場所を「接続プール」と呼びます.
デフォルトでは、コネクタは作成後に消えますが、コネクタプールに接続されたコネクタを作成すると、リクエストを受信したときに一致することができます.

2.接続解除のメリット

  • パフォーマンス
    インタフェースを事前に作成することで、パフォーマンスを向上させることができます.

  • スタックオーバーフローの答えを引用するには、皿を使用して捨てるか、茶碗を洗ってから再使用するかに例えます.コネクタを接続するコストは、新しい皿を購入するコストと同じです.😂

  • あんていせい
    信頼できる方法は、複数のコネクタを作成し、指定したコネクタに配布することです.

  • n/a.費用
    新しく作成した接続は、約6 MBから10 MBのメモリを使用します.
  • 3. DataSource (JDBC)


    JDBCは、接続プールを作成するためのDataSourceと呼ばれる良いインタフェースを提供しています.
    DataSourceインタフェースを表示するには、次の3つの方法で実行できます.
  • 基本インプリメンテーション-標準接続オブジェクトを作成します.
  • 接続プールの実装-接続プールに自動的に関与する接続オブジェクトを作成します.このインプリメンテーションは、中間層接続プールマネージャとともに動作します.
  • 分散トランザクションの実装」--分散トランザクションに使用でき、接続プールにほぼ常に関与する接続オブジェクトを作成します.中間層トランザクションマネージャと動作し、ほとんどが接続プールマネージャと動作します.
  • 4.データソースの例


    接続(Spring)

    	@Autowired
        private DataSource dataSource;
    
        @GetMapping("/")
        public String test() throws SQLException {
            System.out.println("getConnection...");
            Connection connection = dataSource.getConnection();
    
            System.out.println("disconnect!");
            connection.close();
    
            return "ok";
        }
    上記のコードを実行すると、


    DataSourceを使用して接続を確立できます.

    接続の設定(HikariCP)


    HikariCPを使用して、データソースを空中登録することができます.
    @Configuration
    public class DataSourceConfig {
    
        @Bean
        DataSource dataSource() {
            HikariConfig config = new HikariConfig();
            config.setJdbcUrl("jdbc:mysql://localhost:3306/connectionpool?serverTimezone=UTC");
            config.setUsername(" db 이름 ");
            config.setPassword(" db 비밀번호 ");
            config.setDriverClassName("com.mysql.cj.jdbc.Driver");
            config.setMaximumPoolSize(20);
            config.setMinimumIdle(10);
    
            DataSource dataSource = new HikariDataSource(config);
    
            return dataSource;
        }
    }
    setMaximumPoolSize:最大サイズ.
    setMinimumIdle:HikariCPコントロールプールで保持する有効な接続の最小数.

    5. HikariCP


    JDBC接続プールの1つで、高速で簡単な利点があります.
    独身は日本語では明るいという意味です.2012年頃にBrettWoldridgeが開発したHikariCP github
    次の図は、HikariCPのパフォーマンスを、c 3 p 0、dbcp 2、Tomcat、viburなどの他のプールフレームワークと比較したものです.

    コメントリンク
    https://stackoverflow.com/questions/457287/what-is-the-benefit-of-connection-and-statement-pooling
    https://medium.com/@rajchandak1993/understanding-hikaricps-connection-pooling-behaviour-467c5a1a1506
    https://www.javadoc.io/doc/com.zaxxer/HikariCP/2.6.3/com/zaxxer/hikari/HikariConfig.html