InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

データベースの仮想化に価値はあるか?

作者 Jonathan Allen , 翻訳者 岡田 英久 投稿日 2008年2月29日

セクション
運用/インフラ,
設計/アーキテクチャ,
デベロップメント,
エンタープライズ・アーキテクチャ
トピック
データウェアハウス ,
Architecture ,
仮想化 ,
.NET
タグ
SQL Server 2008 ,
SQL Server 2005

最近、仮想マシンのイメージ中にサーバアプリケーションを配備するのが流行っている。必要に応じて仮想サーバをあるマシンから別のマシンにすばやく移行できるため、IT 部門にとっては非常に便利である。しかし、この手法は SQL Server のような重量級のシステムにも適用できるのだろうか?Conor Cunningham 氏はこれに否定的な見解を述べている。

Conor 氏によると(source)、SQL Server の運用環境には以下に挙げるとおりいくつかの前提条件がある。

  1. すべての CPU の能力が同じであること
  2. すべての CPU が命令をほぼ同じクロック速度で処理すること 
  3. ディスクへの書き込みは限定された時間内に行われるはずであること 

最初の問題は、並列クエリをサポートするハイエンドの製品を使うときに起こる。クエリが実行されるとき、処理はスレッドの間で均等に分けられるが、ハイパースレッディングや仮想化環境の下ではスレッドは一貫した速度で動作しない。

なので、いくつかのスレッドは他のスレッドよりも早く処理を終え、もっとも遅いスレッドが処理を終えるまでブロックしてしまう。さらに困ったことに、すべてのクエリが終わらないかぎり、先に処理を終えたスレッドに別のクエリを割り当てることができないようなのである。これで、少なくとも SQL Server を配備するときにはハイパースレッディングはお勧めできないということがわかっていただけたと思う。.

Conor 氏は続けてメモリと I/O についてこう述べる。

SQL Server (少なくともその主要なサーバ製品)は、マシン上でメモリを大量に使用するアプリケーションは自分だけだと想定している。なんといってもサーバなのだから(SQLExpress は異なる想定をしているが、メモリに対して無頓着というわけではない)。SQL Server はメモリの制約がある環境で稼動されるだろうが、そんな制約は望まれない場合が多い。バッファプール、プランキャッシュ、クエリ実行に用いられるメモリ(hash join への付与など)といった様々なものから制約を取り除こう。油断していると、これらの制約が重なって、深刻な問題になり得る。

仮想化環境における I/O に関して、私の経験はとても少ない。私が SQL Server 製品のことを他の人に尋ねるのは、そのためでもある。その人たちは通常ストレージアレイを使う。それは理にかなったことだ。I/O 帯域幅は大きくなるし、SQL Server による I/O はマシン上の他のオペレーション(OS や、SQL Server の上のレイヤで開発中のアプリケーションなど)からは隔離される。私はもっと時間を費やしてこれについて調べるつもりだが、コアとなるアイデアは妥当だと思う。多くの仮想マシンに I/O 帯域幅を共有させたら、SQL Server のような I/O 帯域幅の使用量が大きいアプリケーションのせいですぐに限界に達してしまう。データベースのトラフィックを別のストレージパスに隔離するのも、それと同じ理屈だ。特にスケーラブルなシステムを構築しているならなおさらである。こうすれば、仮想マシン環境において、全員で同じハードディスクを共有するというデフォルト設定のせいで被る不利益を避けることができる。

SQL Server を仮想イメージ上で稼動させることができないというわけではない。パフォーマンスが重要な場合に仮想化環境を使うのはおそらく割りに合わないと言っているのである。

原文はこちらです:http://www.infoq.com/news/2008/02/VPC-SQL-Server

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。