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

» 2007年10月18日 00時00分 公開
[上野憲一郎日本アイ・ビー・エム]

本連載は、Javaアプリケーション・サーバの1つである、IBM WebSphere Application Server(以下、WAS)についてのパフォーマンス・チューニングに関する入門記事です。チューニングといっても、実施するエンジニアによって、その方法は異なりますが、本連載はWASを前提とし、かつ80%のケースをカバーすることを目標とします(編集部注:WASのインストールから学びたい読者は、「バージョン別セットアップマニュアル一覧」のWebSphere Application Serverを参照してください)


 前回は、WASの基盤となるJava Virtual Machine(以下、JVM)に関するチューニングについて解説しました。

 今回のテーマは、データベース(以下、DB)との連携を行う場合のチューニングポイントです。DBとの連携を行う場合、サーブレット/JSP、JavaBeans、EJB(Enterprise JavaBeans)の中からデータソースを利用してDBに接続するというのがJ2EEの標準的なアクセス方法です。WASからDBへアクセスを行う際に実施すべきパフォーマンス・チューニングについて解説を行います。

 なお、本稿執筆に当たり、WAS 6.1を使用しております。以前のリリースをご利用の場合には、画面や設定項目が多少異なる場合がありますので、適宜、対応リリースのマニュアルをご確認ください。

JDBCドライバは何を選択するべきか?

 JavaアプリケーションからDBを操作する際に必須となるのが、JDBC(Java DataBase Connectivity)ドライバです。JDBCドライバには、4つの異なる「タイプ」と呼ばれる種類があり、それぞれに長所・短所があります。

 また、ベンダによっては、同じタイプであっても異なる複数の実装を提供している場合があります。さらに、RDBMSベンダとは独立のサードパーティから提供されるJDBCドライバもあります。

 今回は、IBM社製のRDBMSであるDB2 for Linux UNIX and Windows(以下、DB2)を対象にして話を進めます。なお、WASとの接続を前提とした場合の解説となりますので、前提条件が異なる場合には適宜、マニュアルなどを参照してください。

JDBCドライバのタイプ

 JDBCドライバには、タイプ1からタイプ4までの4種類があります。

図1 JDBCドライバのタイプ 図1 JDBCドライバのタイプ

 タイプ1ドライバは、JDBC-ODBCブリッジ・ドライバを使用し、アプリケーションからのJDBC APIに対する呼び出しをODBCドライバへの呼び出しに変換します。なお、WASはタイプ1ドライバをサポートしておりません。

 タイプ2ドライバは、アプリケーションからのJDBC APIに対する呼び出しを受け取り、それを各RDBMSに対応したネイティブなDB・ライブラリの呼び出しに変換します。DB2の場合であれば、クライアント側(JDBCアプリケーション側)のDB2クライアント経由でRDBMSに接続するといったイメージです。

 タイプ3ドライバは、アプリケーションからのJDBC APIの呼び出しを“middleware”に転送し、middlewareがRDBMSにアクセスするという構成を取ります。なお、DB2を使用した場合は、WASはタイプ3ドライバをサポートしておりません。

 タイプ4ドライバは、RDBMSベンダ固有のプロトコルによるDB接続を行うPure Javaなドライバです。ほかのドライバ・タイプと異なり、JDBCドライバのみをクライアント(JDBCアプリケーション側)に配置するだけで容易に利用できます。

ベンダごとに採用しているJDBCドライバのタイプは異なるは異なる

 RDBMSベンダおよびJDBCベンダによって、提供しているJDBCドライバのタイプが異なり、さらには、WASがサポートするJDBCドライバ(およびタイプ)には制限があります。

ドライバ名 タイプ RDBMS
DB2 Driver for JDBC and SQLJ 3.1 2、4 DB2
DB2 Legacy CLI-based JDBC Driver(“deprecated”であり、将来のリリースでサポート外となる) 2 DB2
DB2 Universal JDBC Driver 2.8 2、4 DB2
IBM WebSphere embedded Connect JDBC 3.5 build 37 4 Microsoft SQL Server
DataDirect Connect JDBC 3.5 build 37 4 Microsoft SQL Server
IBM WebSphere embedded SequeLink JDBC 5.5 build 5701(Microsoft SQL Server接続は“deprecated”であり、将来のリリースでサポート外となる) 3 Microsoft SQL Server
DataDirect SequeLink JDBC 5.5 build 5701(Microsoft SQL Server接続は“deprecated”であり、将来のリリースでサポート外となる) 3 Microsoft SQL Server
IBM Toolbox for Java/JTOpen JDBC Driver 4.8 4 DB2 for i5/OS
Informix JDBC Driver 3.00 JC3 4 Informix
Microsoft SQL Server 2000 JDBC Driver 2.2.0040(“deprecated”であり、将来のリリースでサポート外となる) 4 Microsoft SQL Server
Oracle 9i および 10g JDBC Driver(9i JDBCドライバは9iDBとの接続のみサポート、10g JDBCドライバは9iおよび10gDBをサポート) 2、4 Oracle 9i R2
Oracle 10g R1
Oracle 10g R2
Sybase jConnect 5.5 EBF 11656 or 6.0 EBF 12723 4 Sybase Adaptive Server
表1 WASサポートJDBCドライバ一覧(2007年10月18日現在)

 なお、上記一覧は執筆時点でこちらのリンクにある情報を基に作成しました。情報は随時更新されますので、必要に応じて最新情報を確認するようにしてください。

2世代のJDBCドライバの性能を比較

 DB2は、Universal JDBCドライバおよびCall Level Interface(CLI)JDBCドライバと呼ばれる2世代のJDBCドライバを提供しております。WASとDB2の組み合わせにおいて、Universal JDBCドライバは、タイプ2およびタイプ4をサポートしています。CLI JDBCドライバはタイプ2のみをサポートします。

図2 DB2 Universal JDBCドライバ 図2 DB2 Universal JDBCドライバ

 なお、CLI JDBCドライバ(DB2 Legacy CLI-based Type 2 JDBC Driver)は非推奨ドライバですので、将来のリリースにおいてサポート外となります。

図3 DB2 Legacy CLI-based Type 2 JDBCドライバ 図3 DB2 Legacy CLI-based Type 2 JDBCドライバ

 CLI JDBCドライバとUniversal JDBCドライバとを比較した場合、多くの場合、Universal JDBCドライバ(タイプ2およびタイプ4のいずれにおいても)の方が性能面で優れております。従いまして、CLI JDBCドライバを使用しなければならない特別な理由がない場合には、パフォーマンス性能という側面では、Universal JDBCドライバの利用がお勧めです。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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