SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 12月 4th, 2010

あらためて SQL Server と AWE その 2

without comments

前回の投稿では AWE の設定と設定後の確認について投稿しました。

今回は [動的メモリ] についてまとめていきたいと思います。

SQL Server では [min server memory] と [max server memory] を使用した動的なメモリ割り当てを行うことができます。
この 2 つの値設定することで、SQL Server がどの範囲でメモリを使用するかを指定することができます。
# min server memory はメモリ割り当て後の解放をどの程度まで許容するかの設定で、起動時に確実に確保する設定ではありませんが。

AWE の動的なメモリ割り当てについてですが、以下の技術情報が掲載されています。
SQL Server での AWE メモリの有効化

この中に、以下の記載があります。

Windows 2000 オペレーティング システム上で実行される SQL Server では、AWE マップ メモリの動的割り当てがサポートされていないため、インスタンスごとに max server memory オプションを設定することをお勧めします。

Windows Server 2003 上の SQL Server では、AWE メモリの動的割り当てがサポートされます。

AWE の動的メモリ割り当てに関しては、OS によってサポートの有無が変わってきます。

Windows 2000 Server では動的メモリがサポートされていないため、SQL Server が起動時に可能な限りのメモリを Committed にします。
そのため、[max server memory] を指定することで SQL Server が使用するメモリの条件を設定しておきます。

Windows Server 2003 では動的メモリがサポートされ、SQL Server の起動時には、必要最小限のメモリのみを Committed にして、後は必要に応じて動的にメモリを割り当てます。
動的メモリがサポートされていますので、[min server memory] と [max server memory] を指定しなくても最小限のメモリから必要となるメモリのみを確保していく設定となります。
動的メモリがサポートされていても、サーバー上で稼働しているアプリケーションに影響を及ぼさないように [max server memory] は設定をしていた方が良いとは思います。

書籍によっては、[min server memory] と [max server memory] を同一値に設定して、固定メモリ設定とすると書かれているものがありますので、固定メモリ化するのが良いのかもしれないですね。

 

それでは、AWE の動的メモリ設定についてみていきたいと思います。
今回は SQL Server のバージョンではなく、OS のバージョンによって差が出るということを確認したいため、Windows 2000 Server と Windows Server 2008 上に SQL Server 2005 SP3 の環境を構築しています。
どちらの SQL Server も min server memory = 0 / max server memory =4096 に設定しています。

■Windows 2000 Server の AWE

 

まずは、Windows 2000 Server の AWE 有効時のメモリ割り当てについて見ていきたいと思います。
SQL Server 2005 でも DBCC MEMORYSTATUS は使用できますので AWE Allocated の値を確認してみます。

image

起動直後の状態なのですが、3,326,920 KB のメモリが割り当てられているのが確認できます。
今回の環境ではメモリは 4GB 割り当てています。
# 物理メモリ 4GB に対して、SQL Server の割り当てメモリが 4GB なのでこのような割り当て状況になっています。

この環境では、AWE を使用しても 3GB と少しが SQL Server のメモリ割り当ての上限のようですね。
この状態では、物理メモリを確保していますが SQL Server 上では大半のメモリは [Free Pages] として認識されています。

以下の画像はパフォーマンスモニタで [Buffer ManagerFree Pages] を取得した内容になります。
image

平均して [414,107] ページの空きがあります。
414,107 ページ = 414,107 × 8 KB = 3,312,856 KB
となりますので、メモリを確保していても大半が Free Page として認識されています。

■ Windows Server 2008 の AWE

それでは、Windows Server 2008 の SQL Server 2005 でも同様の確認をしてみたいと思います。

image

Windows Server 2008 の場合は、Windows Server 2003 と同様に動的メモリがサポートされています。
そのため、SQL Server の起動時には必要最小限のメモリのみを確保した状態で起動がされます。

Windows 2000 Server と同様に、Free Page の状態を確認してみます。
image

Free Page のサイズは、
73 ページ = 73 × 8 KB = 592 KB
となりますので、確保しているメモリの大半は Free Page ではなく起動に必要な領域となっていることが確認できます。

 

■SQL Server 2000 で AWE を確認

先ほどは AWE を SQL Server 2005 で確認をしてみましたが SQL Server 2000 SP4 (8.00.2039) でも確認をしてみたいと思います。

SQL Server 2000 でも DBCC MEMORY STATUS は使用できます。
表示形式が SQL Server 2005 とは異なるのですが、[Buffer Distribution] からメモリを確認することができます。
今回は Windows 2000 Server 上に SQL Server 2000 をインストールしていますので、サービスの起動時は可能な限りのメモリが割り当てられます。
image

SQL Server 2000 の場合は KB ではなく、ページ数で表示がされます。
250,755 ページ = 250.755 × 8KB = 2,006,040 KB
となります。

SQL Serve 2000 では、Free Pages からはうまく値を取得できなかったので、[Memory ManagerTotal Server Memory (KB)] から情報を取得しています。
image

平均して、[2,021,680 KB] となっています。

4 GB のメモリを搭載した環境で、AWE を有効にして 2GB のメモリ割り当てというのは少し気になりますよね。
SQL Server 2000 SP4 用に以下の修正プログラムが提供されています。
[FIX] 32 ビット版の SQL Server 2000 SP4 を実行するコンピュータで AWE を有効にすると使用できないメモリ領域がある

SP4 では AWE を有効にしても物理メモリの半分までしかメモリが使用できないという不具合があります。
修正プログラムを実行して再度メモリの使用状況を確認してみます。
image

421,092 ページ = 421,092 × 8KB = 3,368,736
になりますので、先ほどの SQL Server 2005 の時と同程度のメモリが割り当てられています。

修正プログラムを適用すると Free Page の状況も正常に取得することができました。
image

421,083 ページ = 421,083 ページ × 8 KB = 3,368,664 KB
になりますので、大半が Free Page となっているのが修正プログラムを適用すると確認ができます。

 

AWE を有効にすると AWE によってマッピングされた 2GB を超える領域はデータキャッシュのみで使用でき、クエリキャッシュはユーザーモードの空間 (2GB の空間)  でしか使用できないという話をよく聞くことがあると思います。

次の投稿では AWE で有効にしたメモリの使用状況についてまとめたいと思います。

Written by Masayuki.Ozawa

12月 4th, 2010 at 11:09 pm

Posted in SQL Server

Tagged with ,

あらためて SQL Server と AWE その 1

without comments

32 ビットの SQL Server で大容量のメモリ割り当ての手法として AWE (Address Windowing Extensions) という設定があります。

これから数回に分けて AWE についてまとめていきたいと思います。

■SQL Server の最大メモリ

32 ビットの SQL Server 2008 R2 の最大メモリは以下のようになります。
SQL Server 2008 R2 のインストールに必要なハードウェアおよびソフトウェア

エディション 最大メモリ
Datacenter オペレーティング システムの最大容量
Enterprise オペレーティング システムの最大容量
Standard 64 GB

 

32 ビットの SQL Server ではユーザーモードの VAS (仮想アドレス空間) は 2GB または 3GB となり、それ以上のメモリを使用するためには AWE を使用する必要があります。
image

AWE に関しては以下の技術情報の絵がわかり易いと思います。
プロセス アドレス空間

AWE を使用することでユーザーモードの VAS の一部を使用して、利用できるメモリの領域を拡張することが可能となります。
image

■AWE を使用するための必須となる前提設定

AWE の使用有無に関しては、SQL Server で設定をするのですが、使用するためには必須となる設定があります。

それが [ローカル セキュリティ ポリシー] の設定です。

ローカル セキュリティ ポリシーで、[メモリ内のページのロック] という権限を SQL Server のサービス起動アカウントに付与する必要があります。
# 英語では、[Lock Pages in Memory] と呼ばれているものになります。
Lock Pages in Memory オプションを有効にする方法 (Windows)

image
image

初期設定ではこのポリシーにはどのユーザー / グループも設定はされていません。
SQL Server をローカルシステムで実行していると、ポリシーを設定していなくても AWE を使用することが出来たりするのですが、サービスの専用ユーザーを作成して SQL Server を実行している場合は、このポリシーにサービス用のユーザーを設定する必要があります。

AWE が正常に有効化されていると以下の SQL Server のログに以下のメッセージが表示されます。

Using locked pages in the memory manager.

image

AWE が有効になっていない場合は以下のメッセージとなります。

Using conventional memory in the memory manager.

image

 

■ログ以外で AWE が有効になっているかを確認

先ほどはログから AWE が有効になっているかを確認しましたが、他の方法でも確認することができます。
[DBCC MEMORY STATUS] を実行することで、AWE によりメモリが割り当ての情報を取得できます。
[Memory Manager] や他のセクションの情報から [AWE Allocated] を確認することで AWE によるメモリ割り当てが行われているかを確認することができます。

以下が、AWE が正常に動作しているときの情報になります。
image

[AWE Allocated] に情報が出力されていますね。

AWE が有効になっていない、メモリ内のページのロックが有効になっていない場合は以下のような情報となります。
image

AWE が使われておらず、通常のメモリ割り当てが行われていますので、[VM Committed] としてメモリが割り当てられているのが確認できます。

ログから見ると実際に使われているかが不安になることがありますので、DBCC MEMORYSTATUS を実行して数値として確認をした方が安心かと思います。

ここまでの設定で AWE を知っている方ですと、[max server memory] と [m
in server memory] の設定は? と思われるかもしれません。

次の投稿でこの辺の設定が影響する、[動的メモリ] についてまとめていきたいと思います。

Written by Masayuki.Ozawa

12月 4th, 2010 at 9:06 pm

Posted in SQL Server

Tagged with

SQL Server 2008 R2 CU3 の SQL Azure の DB 名変更について

without comments

SQL Server 2008 R2 CU3 では以下の機能追加がされています。
FIX: A fix is available for SQL Server Management Studio 2008 R2 that enables you to rename SQL Azure databases in Object Explorer

SSMS から SQL Azure のデータベースの名前の変更が可能になっています。

今回はデータベース名の変更についてまとめてみたいと思います。

■データベース名の変更

SQL Azure の ALTER DATABASE では、[MODIFY NAME] を指定することでデータベース名を変更することが可能です。
ALTER DATABASE (SQL Azure Database)

RTM の SSMS を使用してもクエリから実行することでデータベース名を変更することが可能なのですが、CU3 では、オブジェクト エクスプローラーから変更することが可能になっています。

それでは、SSMS CU4 の環境を準備しましたので実際に試してみたいと思います。
# CU4 には CU3 の変更も含まれています。
image

はい、表示されていないですね…。
image

英語版の SSMS を使うとどうなるでしょう。
まずは RTM で試してみました。

image

image

CU 3 以降の対応ですので、 RTM の SSMS では表示がされないのは想定される動作ですね。
それでは SSMS CU4 で試してみます。
image

バージョンは、[10.50.1746.0] ですので最初に試した日本語版の SSMS CU4 と同一です。
image

英語版の SSMS では[Rename] が表示されていますね。
機能としても正常に動作します。
image
image

Rename からではなく [F2] を押すことで編集 (データベース名) することもできるのですが、日本語の SSMS CU4 では F2 による編集もできません。

この対応ですが、英語の SSMS でない機能しないようですね…。

Denali の SSMS でも Rename は表示されないみたいです。
# F2 による編集もできませんでした。

image

CU3 ではほかにも空間データ型とインデックスについて対応があったようです。
http://blogs.msdn.com/b/sqlrem/archive/2010/12/03/cumulative-update-3-for-sql-server-management-studio-2008-r2-what-s-in-it-for-managing-sql-azure-databases.aspx

空間データ型はほとんど触ったことがないのでいまいち理解度が低いのでこれらについては勉強してからまとめてみたいと思います。
RTM の SSMS でもスクリプト化ができたので、書かれている内容を理解できていないみたいなのですよね…。
英語ものすごい不得手なもので。

Written by Masayuki.Ozawa

12月 4th, 2010 at 8:19 pm

Posted in SQL Server

Tagged with

SCVMM 2008 R2 Service Pack 1 RC Public の提供が開始されました

without comments

Connect で SCVMM 2008 R2 Service Pack 1 RC Public の提供が開始されました。
SCVMM 2008 R2 Service Pack 1 Release Candidate

SCVMM 2008 R2 SP1 RC では、Windows Server 2008 R2 SP1 に対応がされるため、Dynamic Memory と RemoteFX 機能のサポートがされます。

また、PRO 機能も Dynamic Memory に対応され、静的メモリの値ではなく、現在のメモリ消費量を使用して管理がされるようになります。
# 管理パックの更新が必要になるようです。

私の検証環境は SCVMM 2008 R2 で構築してありますので早速この環境に適用をしてみたいと思います。

■バックアップの取得

適用前のバックアップについてですが、SCVMM 2008 R2 のバックアップは、サーバー全体のバックアップを取得するほかに、SCVMM 2008 R2 で使用しているデータベースのバックアップを取得しておき、再導入する際には SCVMM 2008 R2 を再導入してバックアップを復元することでリカバリーをすることが可能です。
# SCVMM の構成情報は SQL Server のデータベースとして格納がされていますので。

仮想環境上であればスナップショットをとってしまえばいいだけかもしれないですけどね。
私の環境はパススルーディスクを使っているため、スナップショットが取得できません…。
image

そのため、データベースのバックアップを取得する方法で作業前バックアップを取得しました。
VHD をコピーしておくという方法でもよかったかもしれないですが。

データベースのバックアップは SQL Server の SSMS で取得してもよいのですが、SCVMM の管理コンソールから取得することも可能です。
[管理] → [全般] に [Virtual Machine Manager のバックアップ] がありますのでここからデータベースのバックアップを取得することが可能です。
image

image

バックアップを実行すると SQL Server のデータベースバックアップ (.bak) が取得されますので、再インストールが必要になってもこのバックアップからリカバリをすることが可能です。

image

 

■SCVMM 2008 R2 SP1 RC にアップグレード

それでは、SCVMM 2008 R2 SP1 RC をインストールしてみたいと思います。

  1. ダウンロードして展開して Setup.exe を実行します。
    image
    image
  2. [VMM サーバー] をクリックします。
    image
  3. [この使用許諾契約書に同意します] を選択して、[次へ] をクリックします。
    image
  4. [アップグレード] をクリックします。
    image
  5. 今回はログインしているユーザーがSCVMM で使用しているデータベースにアクセスができますので資格情報を指定しないで、[次へ] をクリックします。
    image
  6. なぜか評価期限切れのエラーになりました…。
    image

    System Center Virtual Machine Manager の評価版の有効期限が切れました。 (ID: 282)

    ライセンスの取得の詳細については、System Center Virtual Machine Manager の Web サイト

今回の環境なのですが、2008 R2 Beta → RC → RTM というような形でアップグレードをしている環境を使用しています。
そのためエラーが発生してしまっている可能性があります。

SCVMM をアンインストールをして SCVMM 2008 R2 SP1 RC からアップグレードではなく、新規インストールを使用としても残念ながら駄目でした…。
# 全コンポーネントのインストールで評価版の有効期限が切れました。となってしまいました。

ということでサーバーを新規に作成して環境を再構築することにしました。

再インストール後は、正常にアップグレードが進行されました。
SCVMM サーバーのアップグレードにしていますが、すべての機能 (サーバー / 管理コンソール / セルフサービスポータル) がアップグレードされます。
image

image

image

下が SCVMM 2008 R2 RTM のゲストマシンのプロパティになります。
image

こちらが SP1 RC のゲストマシンのプロパティです。
image

Dynamic Memory 用の設定が追加されていることが確認できます。

ゲストマシンの一覧表示も Dynamic Memory に対応したものになります。
image

デフォルトの状態では、 [割り当てられたメモリ] しか表示がされていないので、メニューバーの [表示] → [列] から列を追加する必要がありました。
image

RemoteFX についてですが、既存のゲスト OS ではハードウェアプロファイルに [ビデオ アダプター] が表示されていなかったのですが、ゲスト OS の新規作成時にはビデオ アダプターが表示されるようになります。
image
ただし、標準ビデオ アダプターでゲスト OS を作成してしまうと、作成後のゲスト OS のプロパティでは表示されません。
image

今回は、RemoteFX を有効にできる環境が無かったのでここから先は試せていないのですが、RemoteFX 3D ビデオアダプターが有効なゲスト SO はホスト OS 側が対応していないと作成ができないので、この辺がゲスト OS のプロパティに RemotFX が
表示されていない理由なのかもしれないですね。
image

PRO 機能で使用している SCOM の管理パックに関しても更新が必要なようなのですが、今回 SCVMM の再構築をしてしまったので PRO 機能に関しては確認ができませんでした…。

SCVMM 2008 R2 SP1 RC にすると、ホスト OS 用のエージェントも新しくなりますので、エージェントを更新する必要もあります。
image
SP1 RC ですが、With SP1 RC となっているのでスリップストリームインストールすることが可能です。

基本的な環境ができましたので、このまま SP1 RC の評価をしていきたいと思います。

Written by Masayuki.Ozawa

12月 4th, 2010 at 4:51 pm

Posted in System Center

Tagged with