READY STATION トップ > READY クローズアップ ![]()
|
SQL Server 2005 の 1 番の魅力は、何といってもエンタープライズ向け機能の充実にあります。たとえば、パフォーマンスとスケーラビリティの向上に貢献する機能には、「データベース エンジンの強化」「インデックスの進化」「スナップショット分離レベル」「64 ビット対応」「データ パーティション」など、ざっと挙げただけでもこれだけあります。そして、「データの暗号化」や「デフォルト セキュア」によるセキュリティの強化、「データベース ミラーリング」による高可用性の実現などにより、SQL Server 2005 は、大規模かつミッション クリティカルなエンタープライズ システムにも十分耐え得るプラットフォームへと大きく進化しています。
SQL Server 2005 は、既に NASDAQ や Barclays Capital、名古屋銀行、Mediterranean Shipping Company、Barnes and Noble など、世界中の 100 社以上の企業によって製品出荷前の早い段階から導入されています。NASDAQ では 1 秒あたり 5,000 件のトランザクションを処理し、世界第 2 位のコンテナ船企業である Mediterranean Shipping Company では 1 日 5 億件のトランザクションを処理し、データベース サイズはなんと 5 TB、また、Barnes and Noble では 2 TB のデータ ウェアハウス システムの運用など、SQL Server 2005 は、金融や証券などのミッション クリティカルなシステムから、TB (テラバイト) クラスの大規模なエンタープライズ システムにまで幅広く活用されています。 一方、日本のユーザーでも、160 万以上の顧客口座データ管理に活用している名古屋銀行だけでなく、株式会社ジェイティービーや新日鐵住金ステンレス株式会社、メルシャン株式会社など、大規模なシステム環境で多くの導入実績があります。そのうちのいくつかは、導入事例記事として下の URL のサイトにまとめられており、導入にあたっては大いに参考になると思いますので、1 度ご覧ください。 もちろん、マイクロソフト社自身でも、既に社内の 100 以上のビジネス アプリケーションの SQL Server 2005 へのアップグレードを完了しています (そのうちのいくつはテラバイト級のデータベースです)。
新しいバージョンだと、少しようすを見てから導入したいと考える企業もあるかと思います。しかし、SQL Server 2005 は、製品出荷前の品質テストに非常に多くの時間を割いているので、すぐにでも安心して導入できます。その SQL Server 2005 の品質テストでは、SQL Server 2000 よりも 40 倍以上もの時間を使い、また負荷ワークロードも 10 倍に増やして負荷テストを実施し、延べで 150,800 マシン時間を費やしています (SQL Server 2000 のときは 3,900 マシン時間)。 当初 SQL Server 2005 は、2003 年に出荷される予定でしたが、負荷テストの強化やセキュリティ機能の大幅な見直しなど、さらなる品質向上のために十分な時間を掛け、5 年以上を要して完成させています。納得のいくまでテストを行い、時間をかけて完成された製品は、発売開始時点から安心感が断然違います。
SQL Server 2005 は、データベース エンジンの強化やインデックスの進化、スナップショット分離レベル、64 ビット対応などにより、パフォーマンスが大幅に向上しています。次の図は、SQL Server 2000 と SQL Server 2005 のパフォーマンスを比較したグラフです。
このグラフにある TPC ベンチマークは、データベース システムのパフォーマンス (性能や価格性能比) を客観的に評価する指標として利用されているもので、結果は TPC の Web サイト
次の図は、TPC-C および TPC-H のベンチマーク結果 (2005 年 12 月時点) を、もう少し細かくグラフ化したものです。
TPC-C ベンチマークでは、1 CPU 構成で 1 秒あたり 38,000 件のトランザクションを処理し、16 CPU 構成で 492,000 件のトランザクションを処理しています。これはテストしたすべてのサーバー プラットフォームにおいて No.1 のパフォーマンスです。また、64 CPU 構成では 1 秒あたり 120 万件のトランザクションを達成しており、これは Windows プラットフォームにおける No.1 のパフォーマンスです。SQL Server は、Windows プラットフォームのみに最適化されており、Windows OS との親和性の高さを確認できるのではないでしょうか。 また、TPC-H ベンチマークでは、100 GB のデータベース サイズにおいてすべてのプラットフォームで No.1 のパフォーマンス、1 TB のサイズでは価格性能比 (Price / Performance) で No.1、3 TB のサイズでは 32 CPU 構成の中で No.1 のパフォーマンスを叩き出しています。1 TB での価格性能比については、次の図でもう少し詳しく見ていきましょう。
このランキングは、TPC の Web ページ
ここではパフォーマンスとスケーラビリティ (拡張性) の向上に貢献する新機能について、具体的にずつ解説していきます。
SQL Server 2005 のデータベース エンジンでは、主に次のような強化が施されています。 ・メモリ管理と CPU スレッド処理の強化 ・NUMA アーキテクチャへの対応 ・先行読み取り (Read Ahead) の強化 ・クエリ オプティマイザの進化 ・再コンパイル時の統計の非同期更新 ・Plan Guide 機能の追加 SQL Server 2005 は、SQL Server 2000 よりも効率的にメモリ、CPU および I/O 処理を行えるようになり、クエリ オプティマイザはより最適な実行プランを予測できるようになりました。また、従来は実行プランの再コンパイル時に同時に統計が更新されていたので、再コンパイル時のクエリ パフォーマンスが低下するケースがあったのですが、SQL Server 2005 では非同期で統計が更新されるため、そのような現象は起こりません。 Plan Guide (プラン強制) 機能は、パッケージ製品などに組み込まれた SQL に対して、明示的に実行プランを与えることができます。従来は、パッケージ製品の SQL が非効率な実行プランで実行された場合にはチューニングの施しようがありませんでしたが、SQL Server 2005 では、この Plan Guide 機能によってチューニングしていくことができます。これは意外と役立つ機能です。
SQL Server 2005 ではインデックス機能も強化されています。主なものとしては、次の 2 つがあります。 ・付加列インデックス ・オンライン インデックス再構築 付加列インデックスは、Include オプションとも呼ばれ、インデックスのリーフ レベルに指定した列を含める (Include する) 機能です。カバリング インデックス (複合インデックス) と似ていますが、違いは次の図のようになります。
カバリング インデックスは、インデックスのリーフ レベルだけでなく、ルート レベルと中間レベルにもカバリングに含めた列 (図では b 列) の値を格納しますが、付加列インデックスの場合はリーフ レベルにしか値を格納しません。これにより、インデックス サイズを小さくすることができます。インデックス サイズが小さくなれば、インデックスの Seek および Scan で読み取るページ数 (I/O 数) を少なくできるので、パフォーマンスが向上します。付加列インデックスは、カバリング インデックスの欠点を解消するために追加された機能なので、皆様にも、ぜひ活用していただきたいと思います。 「オンライン インデックス再構築」は、その名のとおり、インデックスの再構築をオンラインで行える機能です。従来のインデックス再構築は、オフラインでの再構築であったため、再構築中はユーザー アクセスがブロックされていました。これでは、24 時間フル稼動するシステムではなかなか再構築を実行することができません。これを解消するものとして、DBCC INDEXDEFRAG というオンラインでインデックスを再編成 (リーフ レベルの断片化を解消) する機能もありますが、再編成では物理的な断片化を解消することはできませんでした。しかし、SQL Server 2005 からはオンラインでのインデックス再構築が可能になるので、このような心配は不要となります。 このように SQL Server 2005 では、できる限り SQL Server を止めない運用を可能とする機能 (可用性を高める機能) が多く追加されています。
スナップショット分離レベルは、Oracle の経験者であればおなじみの「読み取り一貫性」を提供する機能です。これにより、排他ロックのかかっている更新中のデータでも、排他ロックにブロックされることなくデータを読み取れるようになります。具体的な動作イメージは、次の図のようになります。
更新中のデータを読み取る場合は、“更新前”のデータ (その時点での正しいデータ) を参照することで、排他ロックにブロックされない読み取りが可能になります。これは、ロック待ちが原因でパフォーマンスが低下している場合には、大きな威力を発揮する機能です。実際、NASDAQ や名古屋銀行では、この機能を活用することでパフォーマンスを向上させていると話されています。 もちろん、どんな状況でもスナップショット分離レベルを利用すべきというわけではありません。スナップショット分離レベルでは更新前データを tempdb データベース内へ行単位で格納するため、行サイズが大きく、かつ更新頻度の高いデータベースの場合には tempdb への I/O がボトルネックになる可能性があります。したがって、両者のトレード オフに注意しながらうまく活用していく必要があります。
SQL Server 2000 では、IA64 (Intel Itanium ベースの 64 ビット プロセッサ) に対応していますが、SQL Server 2005 からは IA64 対応はもちろんのこと、X64 (Intel EM64T および AMD64) にも対応しています。64 ビット対応による 1 番の恩恵は、SQL Server の自動メモリ チューニングが完全に活かされるという点です。従来の 32 ビット環境では、4 GB のメモリ空間の壁を超えるために AWE (Address Windowing Extensions) 機能を利用していましたが、これにはオーバーヘッドがあります。また、AWE ではバッファ キャッシュ領域を広げることはできても、その他の SQL Server が利用しているメモリ領域 (Workspace、Lock、Connection、Procedure Cache 用メモリなど) は、4 GB の壁を超えられませんでした。しかし、64 ビット環境であれば、4 GB 以上のメモリ空間を自由に利用することができます。
このように、64 ビット環境では、SQL Server の自動メモリ チューニングが完全に活かされる形になるのでパフォーマンスが大きく向上します。特に Sort や Hash といった内部動作で利用される Workspace メモリ (一時的な作業領域) が制限されないのは大きなポイントです。これにより、大量データの並べ替えやグループ化、結合演算のパフォーマンスが大幅に向上します。
データ パーティションは、Oracle でいうところの「レンジ パーティション」に相当する機能です。これはパフォーマンスとスケーラビリティ、運用管理性の向上にたいへん役立つ機能です。データ パーティションでは、データの範囲によってデータの格納場所 (パーティション) を分けることができます。たとえば、次のように日付の範囲 (月単位や年単位) で分けることができます。
データ パーティション機能の 1 番のメリットは、不要になったパーティションを簡単に切り離せる点にあります。たとえば、売上データの過去 3 年分は保存し、3 年以上経過したデータは削除する場合でも、そのパーティションを切り離すだけで削除が完了します。このメリットは、データ パーティションを利用しなかった場合のデータ削除時の動作を考えると、理解しやすいと思います。次に、データ パーティションを利用しない場合のデータ削除の例を示します。
データ パーティションを利用しない場合は、データの削除時にそれぞれのインデックス内のデータも (内部的に) 削除されます。削除するデータが 10 万行で、インデックスが 3 つある場合には、30 万行分のデータをインデックスから削除しなければなりません。これでは、トランザクション ログへ 40 万件分 (実際のデータ 10 万件分とインデックスから 30 万件分) のログ レコードが書き出されることになり、ログ サイズは膨れ上がり、トランザクションの完了に時間がかかることになります。また、削除時には対象データに排他ロックをかける必要があるので、40 万個分の排他ロックもかけなければなりません。しかも、40 万行分すべてのデータの削除が完了するまで、かけられたロックは解放さないのです。したがって、データ パーティションを利用しない場合の大量のデータ削除は、パフォーマンスが大きく低下することになります。一方、データ パーティションであれば、削除したいパーティションを切り離すだけで、削除は一瞬で完了します。 データ パーティションのメリットは、他にもあります。パーティション単位でインデックスを作成、再構築できる点や、パーティション単位でバックアップと復元が行える点などです。データ パーティションは、大規模環境では欠かせない便利な機能です。皆様も、ぜひ 1 度試してみていただければと思います。
SQL Server 2005 は、セキュリティも大幅に強化されています。ここ数年マイクロソフトでは、Trustworthy (信頼できるコンピューティング) の考え方を根幹にしています。SQL Server は、2002 年にワームの問題が出ましたが、そのとき数百人体制で臨んでいた SQL Server 2005 の開発をいったんストップさせ、全員に 2 〜 3 か月の間、セキュアなコードを書くトレーニングを課しています。そして、すべてのコードを見直し、より安全性を高めるために作り直しをしているのです。 また、早期導入企業からのフィードバックを得ながら製品をブラッシュアップし、その結果に対してフィードバックを挙げた顧客からサインを得るまでは正式版をリリースしていません。後述するデータベース ミラーリング機能を製品出荷から外して、サービスパックで提供することになったのはこの理由からです。不完全な状態で出荷するのではなく、完全に仕上げた状態 (フィードバックを挙げた顧客が納得した状態) で初めて正式版をリリースする、より品質の高い製品をリリースするという姿勢には、本当に安心感があります。
セキュリティを向上させる機能には、主に次の 3 つがあります。 ・データの暗号化 ・パスワード ポリシー ・デフォルト セキュア ◎データの暗号化 データの暗号化は、その名のとおり、データを暗号化する機能です。サポートしている暗号化のアルゴリズムは、対称鍵暗号化 (DES、3DES、DESX、RC シリーズ、AES シリーズ)、非対称鍵暗号化 (RSA 512 / 1024 / 2048 bit) です。次の画面は、暗号化しているときのようすです。
もし、データを暗号化していない場合には、データベース ファイル (.mdf) やバックアップ ファイルを盗難、盗聴された際に機密データを容易に参照できてしまいます。したがって、顧客のパスワードやクレジット カード情報などの重要なデータは暗号化しておき、万一の盗難に備えておくことが重要です。 ◎パスワード ポリシー パスワード ポリシーは、SQL Server 認証用のログイン アカウントに対して、Windows OS のセキュリティ ポリシーを適用できる機能です。
従来、セキュリティ ポリシーは、Windows 認証用のログイン アカウントに対してのみ適用することができましたが、SQL Server 2005 からは、SQL Server 認証用のログイン アカウントに対しても適用できるようになります。これにより、sa アカウントに対してもパスワードの有効期間を設定したり、ロックアウト (パスワードを何回か間違ったアカウントを使用不能にする機能) を設定できるようになります。 ◎デフォルト セキュア SQL Server 2005 は、インストール直後はセキュリティが最も厳しい状態でセットアップされています。他のマイクロソフト製品と同様、デフォルト セキュア (Secure By Default) になっており、既定では安全性が高く設定され、多くの機能が無効になっています。必要に応じて、利用したい機能だけを有効にしていくことで、安全に運用することができます。 有効/無効の変更は、「セキュリティ構成」ツールを利用して GUI ベースで次のように行えます。
なお、デフォルトで無効になっている機能は、「リモート接続」「SQLCLR (CLR 統合)」「xp_cmdshell」「サービス ブローカ」「HTTP エンドポイント」などです。リモート接続が無効の場合は、SQL Server 2005 へネットワークを介してアクセスすることはできませんので、注意してください。
SQL Server 2005 は、可用性を高める機能も充実しています。その主なものは、次のとおりです。 ・データベース ミラーリング ・各種のオンライン操作 ・クラスタ機能の強化 データベース ミラーリングは、前述したようにサービス パックでリリースされることになりますが、わずか数秒で自動フェールオーバーを実現できるデータベースの複製機能です。クラスタよりも、フェールオーバー時間を大幅に短縮できることが 1 番のメリットです。
オンライン操作は、前述のオンライン インデックス再構築のように、SQL Server をオフラインにすることなくオンラインで実行できる機能です。SQL Server 2005 では、多くの機能がオンライン操作に対応しています。CPU アフィニティや I/O アフィニティの設定もオンラインで動的に変更することができ、SQL Server 2005 の再起動は必要ありません。 SQL Server 2005 は、クラスタ機能も強化されています。8 ノード クラスタへの対応や、データベース エンジン以外の機能 (Analysis Services、FullText Search、Notification Services など) がクラスタ対応になりました。また、Standard Edition でもクラスタ構成をサポートするようになったことも、うれしいところです (ただし 2 ノードまで)。
SQL Server 2005 には、まだまだたくさんの新機能があります。次の表は SQL Server 2005 の主な新機能と Oracle の機能を比較したものです。
SQL Server では標準で提供される機能が、Oracle だと Enterprise Edition のみで提供されたり、Enterprise Edition の有償オプションとして提供される機能が多くあります。特に SQL Server の場合は、高度なビジネス インテリジェンス機能 (OLAP、データ マイニング、ETL、Reporting Services) が標準搭載されているのは、うれしいところです。ビジネス インテリジェンス機能だけが使用目的でも、製品を購入する価値があるのではないでしょうか。
SQL Server 2005 には、Oracle からの移行 (マイグレーション) を支援する SSMA (SQL Server Migration Assistant for Oracle V2.0) という無償ツールも提供されています。SSMA を利用することによって、Oracle データベースを SQL Server 2005 へ移行することが容易にできます。テーブル データの移動はもちろん、データ型の自動変換、PL/SQL で書かれたストアド プロシージャの Transact-SQL への自動変換、Oracle 独自の関数も SQL Server 2005 用へ自動変換してくれます。これは本当に便利です。Oracle からの移行を考えている方にとっては、必須のツールといえるでしょう。 現在、SSMA の利用手順をステップ バイ ステップ形式で、画面ショット満載でわかりやすく解説した自習書もダウンロードできるようになっています。
今回は、SQL Server 2005 の機能の一部しか解説することができませんでしたが、今後も、リニューアルされたこのサイト上で、機能解説を続けていく予定です。ご期待ください。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||