連載
» 2007年10月18日 00時00分 公開

DB連携のパフォーマンスはどうすれば速くなるのか?WebSphereサーバ・チューニング入門(4)(2/3 ページ)

[上野憲一郎,日本アイ・ビー・エム]

Universal JDBCドライバのタイプ2とタイプ4の性能比較

 前述のとおり、Universal JDBCドライバは、タイプ2とタイプ4の2つをサポートしています。タイプ2ドライバとタイプ4ドライバのパフォーマンス性能比較は、ケースによって異なります。WASとDB2サーバとの間の接続数を考慮することにより、どちらのタイプが性能的に有利かを判断できる場合があります。

 一般的には、接続数が多いケースでは、タイプ4ドライバがタイプ2ドライバよりも性能面で有利であるといわれています。

図4 Universal JDBCドライバにおけるドライバ・タイプの指定 図4 Universal JDBCドライバにおけるドライバ・タイプの指定

リモートDB vs ローカルDB

 ただし、DB2サーバがWASと同一筐体上で稼働している場合(ローカルDBへのアクセス)には、タイプ2ドライバの方が性能面で優れているケースが多いです。

図5 Universal JDBCドライバにおけるタイプ2ドライバとタイプ4ドライバの比較 図5 Universal JDBCドライバにおけるタイプ2ドライバとタイプ4ドライバの比較

XAドライバとNon-XAドライバの比較

 2フェイズ・コミット・トランザクションが必要となるケースでは、必要なリソースのコーディネートを行うために、XA対応JDBCドライバを使用することになります。これは、「実装タイプ」として「XAデータソース」を選択することで指定できます(図6参照)。

図6 XA対応JDBCドライバ(実装タイプ:XAデータソース) 図6 XA対応JDBCドライバ(実装タイプ:XAデータソース)

 一般に、XA対応JDBCドライバには、XAトランザクションに対応するために、複数のリソースのコーディネートや管理を行うための追加のロジックが含まれています。

 そのため、Non-XAドライバと比較するとパフォーマンス性能としては不利になります。いい換えれば、2フェイズ・コミットが不必要なケースにおいては、Non-XAドライバを使用することにより、パフォーマンス性能のオーバーヘッドを削減できます。これは、実装タイプとして「接続プール・データソース」を選択することにより指定できます(図7参照)。

図7 Non-XA JDBCドライバ(実装タイプ:接続プール・データソース) 図7 Non-XA JDBCドライバ(実装タイプ:接続プール・データソース)

コラム 「Oracleとの接続」

 WASと組み合わせて多く使われているOracle RDBMSとの接続に関しては、サポートされているJDBCドライバ・タイプ(Oracle製)は前述のとおり、タイプ2とタイプ4の2つです。最近では、多くのケースでタイプ4を利用しているようです。

 実装タイプとしては、Non-XA(接続プール・データソース)とXA(XAデータソース)の2種類です。従いまして、Oracleを使用している場合には、タイプ2あるいはタイプ4の選択とNon-XAドライバかXAドライバかの選択を考慮します。

 データソースの設定としては、例えば、シン・ドライバー(タイプ4)の場合は 、jdbc: oracle: thin: @localhost: 1521: sample、シック・ドライバー(タイプ2)の場合はjdbc: oracle: oci8: @sample などをURLの設定に指定することになります。

図8 Oracle データ・ソース・プロパティー 図8 Oracle データ・ソース・プロパティー

データソース設定チューニング時の6つのポイント

 データソースの設定をチューニングすることにより、アプリケーションとDB間のパフォーマンスを最適化します。以下に、「接続プール」および「ステートメント・キャッシュ・サイズ」の調整について解説します。

【1】接続プールの調整

 接続プールは、DBサーバへの接続のオーバーヘッドを軽減します。WAS上で動くアプリケーションがDBにアクセスするたびに、DBへの接続を作成、保守、および解除するように要求します。WASの接続プールを利用することにより、このような処理によるリソース全体に掛かる負荷を軽減できます。接続プールは、アプリケーション内からの直接のJDBC呼び出しに使用できますし、DBを使用するEJBからも使用できます。

【2】接続プールの利点

 接続プールにより、DB接続を必要とするアプリケーションの応答時間を短縮できます。接続プールを使用すると、データソースは接続プールから既存の接続を探し出し、それを使用できるため、新規DB接続を作成する場合のオーバーヘッド発生を抑制できます。

 DB接続要求が完了し、レスポンスがクライアントに戻ると、DB接続を接続プールに戻して再使用に備えることができます。そして、接続切断のオーバーヘッドも発生しません。

図9 接続プールの設定 図9 接続プールの設定

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。