SAP SQL Anywhere 17 – Autocommit の強化
SQL Anywhere 17 には、様々な側面からのパフォーマンスの強化、データベースサーバーやクライアントのセキュリティや堅牢性強化のための幅広い新機能、そして開発生産性向上のための新たなツールが含まれています。バージョン17の概要については こちらをご参照ください。
これから、version 17の変更のメリットをお客様に活用していただくため、いくつかの機能をピックアップして、以前のバージョンと詳細に比較分析した結果について掲載していきたいと思います。
新しいバージョンにおける変更点や改善点にハイライトをあてつつ、それについて可能であればベストプラクティスを提供するつもりです。
最初に選択したトピックは、autocommit です。
Auto-commit は、トランザクションで commit が発行された場合に適用されるデータベースクライアント接続オプションです。SQL Anywhere におけるベストプラクティスとしては、auto-commit は可能であればどこも無効にすることをお奨めします。なぜならば、commit のオペレーションには、IOが発生するからです。
IO は、一般的な RDBMS において最も expensive なものです。一般的には、auto-commit を使わない方が、commit の数は少なくなり、データベースサーバーのパフォーマンスは、より高速になります。さらに、ビジネスプロセスと同調するトランザクションを作成・管理することで、commit が発生した時もコントロールしやすく、ビジネスルールとも連動する、より一貫性のあるデータベースにすることができます。
auto-commit を使用しない方が望ましいにもかかわらず、多くのアプリケーションは実際 auto-commit を有効にして構築されています。これには理由がいくつかあります。オペレーションごとに commit する方が簡単であることが多かったり、データベースの変更が成功しているかどうかすぐにフィードバックを得られる方が開発者にとっては魅力的だからです。さらに、多くのデータベースインターフェースでは、デフォルトでは auto-commit が有効になっているため、アプリケーション開発者はデフォルトでは auto-commit のアプリケーションを開発しています。
しかしながら、アプリケーションが一旦構築されてしまうと、明示的な commit を行うようにアプリケーションを再構築するのは非常に困難であることがよくあります。
version 17 より前のバージョンの SQL Anywhere では、アプリケーションで auto-commit がONになっている場合、クライアントのAPI (例えば ODBC, JDBC, etc…) は、データベースのリクエストごとに、明示的な “COMMIT” を発行していました。
version 17 では、このサーバーとの余計なコミュニケーションを避け、全体パフォーマンスを改善するために (驚くなかれ!) auto_commit という新しいオプションが追加されました。
このオプションは、デフォルトでは OFF になっており、接続が継続している間のみローカルで設定できます (つまり、PUBLIC auto_commit オプションは設定できません)。アプリケーションが auto_commit オプションを ON に設定した場合には、SQL Anywhere サーバーが、リクエストごとに、自動的に commit します。
また、この新しいオプションのメリットを自動的に享受できるよう、全ての SQL Anywhere クライアントインターフェースを更新しました。
version 17 の SQL Anywhere ODBC、 JDBC、OLEDB ドライバーは、version 17 サーバーに接続した場合、アプリケーションが相応する AutoCommit API コールをそれぞれのドライバーに対して発行した時に、自動的に新しい auto_commit オプションを設定します。
ターゲットサーバーが version 16 以前のものの場合には、これらのドライバーは、クライアントサイドに auto commit をハンドリングするよう戻します。
(例えばESQL のような) 以前は autocommit がサポートされていなかった API でも、これらのアプリケーションで新しい auto_commit オプションを使用して、必要であればそれぞれの実行ごとにサーバーに自動的に commit させることができます。
続きはこちら:SAP SQL Anywhere 17 – Autocommit の強化
SAPのSAP SQL Anywhere製品ページはこちら