[春]とどのように春にコンフィギュレーションデータベース接続プールへ

データベース接続プールはどのようなものです:

定義:データベース接続プール(データベース接続プーリング):データベース接続プールがすでに作成されたデータベース接続オブジェクトの数を格納するコンピュータのメモリ、メモリの一部です。データベース接続プールのデータベース接続を作成するための責任、また流通、管理、およびデータベース接続の解放のために責任があります。
原理

  • 接続オブジェクトを作成するときに、初期化の一定数。
  • アプリケーションのニーズが作成された優れた接続オブジェクトを取得するには、データベース接続プールからデータベースにアクセスする場合は、訪問のアプリケーション終了は、次のためのアイドル状態の待機中に接続オブジェクトの背面のリリースが使用されます。
  • アプリケーション要求がオブジェクトをリンクした場合、接続オブジェクトが作成されている使用されている、データベース接続プールは、ユーザーに新しい接続オブジェクトを作成します。
  • データベース接続プール内の接続オブジェクトの数が最大接続数に等しい場合、データベース接続プールは、新しい接続オブジェクトを作成しません、アプリケーションは、フリー接続オブジェクトを待つことができます。
  • データベース接続プールのアイドル時間は、接続オブジェクトの最大アイドル時間が接続の接続オブジェクトの最小数の残りの部分まで、削除されます超えています。

接続の最小数:プログラムは、接続されたオブジェクトの数を初期化するために作成される限り、接続オブジェクトがより最大アイドル時間よりもないであろうため、接続オブジェクトがアイドル状態であっても、この数に等しいように、接続オブジェクトデータベース接続プールの最小数が存在することになります削除されました。
接続の最大数:データベース接続プールの容量。でも、接続オブジェクト、データベース接続プールは、より多くの接続オブジェクトのこの番号より作成しないことをより多くのアプリケーションを使用する必要がある場合。
最大アイドル時間:接続オブジェクトデータベース接続プールのアイドル時間がこの時間を超えた場合、データベース接続プール内の接続オブジェクトの数が最小接続数に等しくない限り、接続オブジェクトは、メモリを占有する必要があり、それは削除されます。

なぜ、データベース接続プールを使用します。

データベース接続の作成とリリースが頻繁にサイトの応答時間につながった厳しいサーバーがクラッシュする可能性がありますときに減少パフォーマンスのオーバーヘッドの多くを、取るような操作を行って、非常に時間のかかる作業です。そして、大部分はこの問題を軽減することができ、データベース接続プールを使用しています。

共通接続プールはどのようなものです:

  • DBCP:DBCP(データベース接続プール)プールが組み立てプーリングTomcatの接続が使用され、Javaのアパッチにデータベース接続プールの項目に接続され、単独でDBCPは、3つのパッケージを必要とする:共通dbcp.jar、共通pool.jar 、コモン何の自動回復機能のアイドル接続を-collections.jar.dbcpません。公式サイトに行きます
  • C3P0:C3P0はオープンソースJDBCコネクションプールでその実装するデータソースとJNDIバインディングの規範とJDBC2サポートJDBC3標準拡張。C3P0は非同期操作で、JDBC操作を支援することにより、ゆっくりとしたプロセスは完了です。これらの操作は、効果的にパフォーマンスを向上させる拡張することができます。これは、現在、その上のオープンソースプロジェクトにHibernate、Springとを使用しています。C3P0自動復旧アイドル接続。注:JNDI(JavaのネーミングおよびディレクトリインタフェースのJava ネーミングとディレクトリインターフェース)は、SUNのJavaネーミングシステムインタフェースが提供する標準です。公式サイトに行きます
  • ドルイド:ドルイドは、オープンソース・プラットフォーム上のオープンソースのデータベース接続プールのAlibabaの項目で、接続プール、効率的なパフォーマンス、10マイクロ秒、複雑なSQLで30マイクロ秒以内に、単純なSQL文を使用した場合。公式サイトに行きます
  • HikariCP:新星にもかかわらずHikariCPデータベース接続プールが、PK他のデータベース接続プールの技術うち、最速のデータベース接続プール、SpringBoot2.0 HikariCPも、デフォルトの接続プールの設定として採用されてなってきて。公式サイトに行きます

HikariCPでAケーススタディ:データベース接続プール春を構成する方法

インポートのjarパッケージには、設定する方法だけ言って本質的な部分...詳細なし、です...

一つの方法:

コア構成XML設定ファイルの春には:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" lazy-init="false" destroy-method="close">
	<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
	<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/mytest?characterEncoding=utf8"></property>
	<property name="username" value="root"></property>
	<property name="password" value="1234"></property>
	<!-- 连接只读数据库时配置为true, 保证安全 -->
	<property name="readOnly" value="false" /> 
	<!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
	<property name="connectionTimeout" value="30000" /> 
	<!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
	<property name="idleTimeout" value="600000" /> 
	<!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->
	<property name="maxLifetime" value="1800000" /> 
	<!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
	<property name="maximumPoolSize" value="15" />
</bean>
第二の方法:

あなたは、XMLコア・コンフィギュレーション・ファイルの春に.propertiesファイルおよび読み取りで設定するパラメータを記述することができます。ばねはPropertyPlaceholderConfigurer、可変位置のプロパティを指定し、プロパティファイルに構成情報を読み出すPropertyPlaceholderConfigurer Spring構成ファイルとファイルパスを配置クラスは、$ {}の形で使用することができ、この目的のために提供します。
あなたは「jdbc.properties」ファイルを作成し、その中でsrcフォルダ「設定」の下にディレクトリを作成します。

driverClassName=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8
username=root
password=1234
readOnly=false
connectionTimeout=30000
idleTimeout=600000
maxLifetime=1800000
maximumPoolSize=15

次のようにこの時点では、春のコアのXML設定ファイルは次のとおりです。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="location" value="classpath:config/jdbc.properties"></property>
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" lazy-init="false" destroy-method="close">
	<property name="driverClassName" value="${driverClassName}"></property>
	<property name="jdbcUrl" value="${jdbcUrl}"></property>
	<property name="username" value="${username}"></property>
	<property name="password" value="${password}"></property>
	<property name="readOnly" value="${readOnly}" /> 
	<property name="connectionTimeout" value="${connectionTimeout}" /> 
	<property name="idleTimeout" value="${idleTimeout}" /> 
	<property name="maxLifetime" value="${maxLifetime}" /> 
	<property name="maximumPoolSize" value="${maximumPoolSize}" />
</bean>

PropertyPlaceholderConfigurerクラスは、コンテキストの使用を使用することはできません:プロパティ・プレースホルダー・タグには、ファイルパスプロパティを指定します。

<context:property-placeholder location="classpath:config/jdbc.properties"/>
公開された128元の記事 ウォン称賛17 ビュー2732

おすすめ

転載: blog.csdn.net/qq_43705275/article/details/104201026