SQL Server 2005 CTPレビュー(開発者編) Page 3/3

SQL CLR vs. Transact-SQLの真実

株式会社システムインテグレータ
石橋 潤一
2005/9/6

Transact-SQLか? SQL CLRか? パフォーマンスで勝負!

 さて、ここまで紹介してきたSQL CLRは、開発は簡単、セキュリティも考慮され開発生産性も上がり多様なライブラリ資源も使える、といいことづくめのようですが、今後ストアドプロシージャの開発はすべてSQL CLRに置き換わるでしょうか。マイクロソフト社の動きを見ていると、SQL CLR一本に絞ろうとしているわけではなさそうです。SQL Server 2005ではTransact-SQLは廃止に向かうどころか逆に強化され、再帰クエリやPIVOTクエリ、例外処理などの機能が実装される予定です。

 ここで気になるのが、開発生産性の高いSQL CLRと機能強化されたTransact-SQL、どちらの言語でストアドプロシージャの開発を行うか、という問題です。この2つの言語を選択するに当たって、さまざまな視点があると思いますが、ストアドプロシージャを利用する動機の1つであるパフォーマンスに絞って比較してみたいと思います。

 用意したのは、SQL Server 2005のサンプルデータベースであるAdventureWorks内のSalesOrderHeaderテーブルより、顧客ごとの総受注額を求め、それを新たに用意したテーブルに書き込む単純なプログラムです。データ量としては、約2万件となります。

図1 実験用プログラムにおけるデータの流れ
顧客ごとの注文をグループ化し、注文合計額を1件ずつCustTotaldue表にINSERTする。

 コードは先ほどのサンプルを少し改造した程度で、どちらもループを回してデータを処理しています。また、Transact-SQL、SQL CLRに加え、ASP .NETを利用してSQL CLRと同じコードを実行するプログラムを作成しました。ASP .NETのコードはSQL Server 2005と同じサーバ上で実行されています。実験を行ったところ、次のような結果となりました。

使用言語 処理にかかった時間
Transact-SQL 8秒
SQL CLR 10秒
ASP .NET 14秒
表2 2万件のデータ呼び出しとINSERTの処理が終了するまでの時間(平均値)

 単純なプログラムと少ないデータではありますが、如実に実行スピードの差が生まれています。Transact-SQLとSQL CLRは同じSQL Serverのプロセス内で実行されますが、やはり長年蓄積された構造解析技術などの差により、パフォーマンスではTransact-SQLが有利なようです。また、同じサーバ上で実行していたとしても、プロセスの外からデータを処理するASP .NETは、パフォーマンスの問題が大きいことが分かります。

 以上のことを踏まえると、通常のクライアント・プログラムを含めたストアドプロシージャ(Transact-SQLとSQL CLR)の使い分けは次のような形になることが考えられます。

図2 Transact-SQLとSQL CLRの使い分け
SQL CLRはパフォーマンスと生産性の両立を求められるような困難な処理に対して有効な解決策となる。

 システムの規模や求められるパフォーマンスによっては、Transact-SQLを利用しなければならない場面が今後も予想され、SQL CLRでTransact-SQLを完全に置き換えることは難しいでしょう。しかしながら、生産性とパフォーマンスを両立したSQL CLRは大規模・複雑化するシステム開発における大きな武器となるはずです。

 これまで、SQL Serverを利用したアプリケーションを開発する際、大量のデータ処理を行うのはTransact-SQL、そのほかはクライアントプログラム、という形に二極化していましたが、ここにパフォーマンスと生産性の両立を目指したSQL CLRが登場しました。Transact-SQLの苦手とするところを補完し、同時にパフォーマンスや生産性、セキュリティ面での配慮も提供するSQL CLRの利用は、今後確実に広がっていくものと思われます。様子見を決め込んでいる方も多いとは思いますが、Transact-SQLに苦しめられていたり、処理の遅いプログラムに悩まされているならば、この機会にSQL CLRに触れてみることをお勧めします。(次回に続く)

筆者プロフィール
石橋潤一
株式会社システムインテグレータ
勤務。Web+DBの業務アプリをメインに開発に携わる。ストアドに涙した日々の経験を基に、今回の執筆を通してSQL CLRの布教を行う予定。著書に『DBマガジン別冊 SQL Server 2005徹底活用ガイド』(翔泳社刊/共著)、『ASP.NET+SQL Server ゼロからはじめるWebアプリケーション』(ソフトバンクパブリッシング刊/共著)。

  3/3  

 Index
連載:SQL Server 2005 CTPレビュー(開発者編)
SQL CLR vs. Transact-SQLの真実
  Page 1
・SQL CLRが開発者に与えるインパクト
  Page 2
・SQL CLRでコーディングはどう変わるか
Page 3
・Transact-SQLか? SQL CLRか? パフォーマンスで勝負!


SQL Server 2005 CTPレビュー


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間