Database (ConnectionとConnection Pool)
初めまして、Junior Back-end Developer、SIMOKITAZAWAです。
色々と足りないところがあるかと思いますがよろしくお願い致します。
私がZENNを始めた理由は、
- 私が勉強したことをまとめたい
- 勉強の内容を共有して一緒に成長したい
- 私が間違って理解している部分について先輩たちに教えてもらいたい
このような理由で始めることになりました。
たくさんの教えをお願いします。
Connection
ServerとDatabaseを連結する時にTCP/IPを利用してConnection生産します。
生産したConnectionにDatabaseのIDとPasswordを入れてDatabaseに伝達します。
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:springmvc
spring.datasource.username=sa
spring.datasource.password=
これはH2Databaseです。
UsernameとPasswordを入力するとH2のDatabaseに入れます。
Passwordを設定してなかったらPasswordを入力しなくても入れます。
H2のDatabaseに入ったImageです。
このようにTCP/IP接続をする時、DatabaseのIDとPASSWORDを伝達し、DatabaseでConnection オブジェクトを生成してServer返却してくれます。DatabaseとConnectionをする度に過程も複雑で時間も多く消耗されます。
Connection Pool
このような問題を解決するために、Connectionをあらかじめ生成し、生成されたConnectionをConnection Poolというところで入れてつかう方法ができました。poolは英語でプールという意味で、文字通りConnectionがプールに入っていると考えれば良いと思います。
Connection Poolを使っていなかった時には、このようにずっとConnectionを生産しなければなりませでした。
ConnectionをDatabaseと連結する時前に何個くらいを指定して生産します。
生産されたConnectionをPoolに入れます。
Client(Server)からRequest来たら、その時にPoolにあるConnectionをとって使えます。
DatabaseとConnectionが終わったらそのConnectionはまたPoolに戻せます。
このような方法でServerの負担を減らせます。
Discussion