先ほど Enzo SQL Baseline を使用した SQL Server / SQL Azure のベースライン作成 を投稿したのですが、タイトルにベースラインと書いている割にはベースラインにあまり触れていないことに気づきました (汗)
ということで追加投稿でベースラインの比較についてまとめてみたいと思います。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
先ほど Enzo SQL Baseline を使用した SQL Server / SQL Azure のベースライン作成 を投稿したのですが、タイトルにベースラインと書いている割にはベースラインにあまり触れていないことに気づきました (汗)
ということで追加投稿でベースラインの比較についてまとめてみたいと思います。
twitter でパスを受けたので軽くまとめてみたいと思います。
codeplex に SQL Server and SQL Azure Performance Testing: Enzo SQL Baseline というツールが公開されています。
今回の投稿ではこのツールの使い方を軽く見てみたいと思います。
ヘルプに関してはオンラインヘルプで提供されています。
Online Help
ちなみに私は英語が全然だめなので英語を読まずに感覚だけて使っていますので予めご了承ください。
# 英語のツールを使うときは [考えるな、感じろ!] をモットーに検証をしています。
SQL Azure のユーザー データベースは 3 重化され、耐障害性が確保されています。
詳しくは蒼の王座さんのブログに書かれていますのでこちらをご参照。
蒼の王座 >> TechEDNAセッション:SQL Azureパフォーマンスの考察とトラブルシューティングまとめ
こちらの記事の中に以下の一文がありました。
コミット時に複製するので、複製できなければコミットできない
コミット時に何か待ち事象が発生していないかな~ということが気になり調べてみました。
SQL Azure のデータベースのファイル構成を想像してみる の派生で、今回はユーザーデータベースではなく tempdb について想像してみたいと思います。
前回に引き続き今回も想像です。
想像してみると書いていますように、取得できた情報から 「こういう感じかな~」 と思ったことを書いています。
あらかじめご了承ください。
SQL Server のデータベースの基本構成は以下のようになります。
# パーティショニングテーブルは除く
データベースは
で構成され、データは
で構成されます。
ファイルグループは複数のデータファイルで構成することもできますので、
ということも可能になります。
本日は SQL Azure ではこの構成がどのようになっているかを想像してみたいと思います。
SQL Azure はこの手のファイル構成を意識しないでよい (任意の構成に変更できない) のですが、気になったので調べてみました。
SQL Azure のテーブルはクラスター化インデックスが必須となっています。
そのためヒープ構造のテーブルは作成ができず、B-Tree 構造のテーブルとなります。
インデックスが必須ということはデータの挿入状況によってはインデックスの断片化が発生するはずです。
今回の投稿ではそのあたりを見ていきたいと思います。
SQL Server は内部で SQL Server 独自のスケジューラーとして SQLOS (または User Mode Scheduler) が起動しています。
通常、SQLOS のスケジューラーは各コアに対して起動しており、4 コア CPU の場合は以下のようになります。
# sys.dm_os_schedulers から取得可能です。
VISIBLE ONLINE となっているのがユーザーセッションで使用可能なスケジューラーとなり、この環境では 0 ~ 3 までの 4 個のスケジューラーを使用することが可能です。
# (DAC) となっているのは専用管理者接続用なので数に含めていません。
スケジューラーが複数あるということは複数コアが SQL Server に割り当てられているので、複雑な処理のクエリを実行する際に複数の CPU を使用した並列クエリ (Pararell Query) が使用できるようになります。
裏ワザで特殊なスタートアップオプションを使うと物理コア数以上のスケジューラーを起動することができたりもします。
# 下の画像は 1 コアの CPU の環境で 16 個のスケジューラーを起動した例になります。
SQL Server からは有効な CPU として認識しているので、1 CPU 環境でも並列クエリが実行できたりします。
このあたりが SQL Azure ではどのようになっているかを確認してみようというのが今回のお話です。
Read the rest of this entry »
以前、Spotlight on SQL Server で SQL Azure に接続 という投稿をしました。
Spotlight On SQL Server は SQL Server の状態をグラフィカルに監視できるソフトになります。
オンプレミスの SQL Server の場合は以下のような情報を監視できます。
SQL Azure の監視もできるのですが、オンプレミスと異なり OS の観点では確認することはできません。
また、SQL Azure の情報はパフォーマンスモニタ系の DMV が提供されていないため、かなり限定されたものになっています。
Playback 機能もついているので、過去の情報を確認することも可能です。
# データコレクションより細かな情報を確認できると思います。
この Spotlight on SQL Server を使ってどのような情報が確認できるのかまとめてみたいと思います。
前回、クラスター環境の SQL Server をシングルユーザーモードで起動 という投稿を書きました。
この投稿ではクラスターのサービス (Cluster Service) が起動した状態が前提となっていました。
今回はクラスターのサービスが起動しない状態になった場合に、クラスター環境の SQL Server を起動するための手順をまとめてみたいと思います。
# かなり無理やり起動させていますので、実施する場合は自己責任でお願いいたします。
本作業は 2 ノードクラスターで構成された環境で、1 ノードのみ起動した状態で実施しています。
SQL Server の障害時はシステムデータベースのリストア時に SQL Server をシングルユーザーモードで起動することがあります。
シングル ユーザー モードでの SQL Server の起動
SQL Server サービスのスタートアップ オプションの使用
クラスター環境でない SQL Server の場合では、コマンドプロンプトから [sqlservr.exe ?m] で SQL Server を起動させるか、SQL Server 構成マネージャーでスタートアップパラメーターに [-m] を指定します。
# SQL Server Agent や Reporting Services のサービスを停止していないと、これらのサービスがシングルユーザーモードの接続をとってしまうので注意が必要だったりしますが。
今回の投稿ではこのシングルユーザーモードをクラスター環境で実行するための手順についてまとめてみたいと思います。