本連載は、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-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のみをサポートします。
なお、CLI JDBCドライバ(DB2 Legacy CLI-based Type 2 JDBC Driver)は非推奨ドライバですので、将来のリリースにおいてサポート外となります。
CLI JDBCドライバとUniversal JDBCドライバとを比較した場合、多くの場合、Universal JDBCドライバ(タイプ2およびタイプ4のいずれにおいても)の方が性能面で優れております。従いまして、CLI JDBCドライバを使用しなければならない特別な理由がない場合には、パフォーマンス性能という側面では、Universal JDBCドライバの利用がお勧めです。
Copyright © ITmedia, Inc. All Rights Reserved.