SE の雑記

SQL Server をメインにしたいと思いつつ Microsoft 製品の勉強内容を日々投稿

SQL Server 2012 Express Edition の上限について

コメントする »

SQL Server Express Edition はいろいろな製品のデータストアとして使用されていることがあると思います。

今回の投稿では SQL Server 2012 Express Edition の CPU / メモリ / ディスクの上限を改めて整理してみたいと思います。

Express Edition のインストーラーは以下からダウンロードできます。
Microsoft® SQL Server® 2012 Express

■CPU について


CPU には以下の制限があります。
SQLServer のエディション別の計算容量制限

1 ソケットまたは 4 コアのいずれか小さいほうに制限

 

1 ソケット / 4 コア / HT 有効 の CPU を使用する場合、OS からは

  • 1 ソケット = 8 コア

として認識がされます。
この場合、SQL Server が使用できる CPU コアは 4 コアに制限がされます。

Hyper-V のゲスト OS で 6 CPU を設定している環境があります。
# Hyper-V 2.0 で試しているので構成ファイルを手動で書き換えて 6 コア認識させています。
image

Sysinternals の Coreinfo を使用するとソケットとコアの関係を確認することができます。
Hyper-V 2.0 のゲスト OS で複数の CPU を割り当てると同一ソケット上のコアとして認識がされます。
# Hyper-V 3.0 で NUMA を使用すると変わってくるかと思いますが。
image

この環境では 1 ソケット / 6 コアの環境として CPU が認識されています。

それでは、SQL Server 上ではどうなるでしょう。
image

Express Edition の上限は 1 ソケットまたは 4 コアの小さいほうになります。
そのため 1 ソケット / 6 コアの環境では 4 コアが上限となります。
SQL Server 上は 6 CPU ではなく 4 CPUの認識となっていますね。

複数のスケジューラーが使用できますので Express Edition でも並列クエリを実行することが可能です。

認識できているが使用できないというのではなく、スケジューラーの起動数自体が制限されているみたいですね。

 

■データベースについて


2008 R2 以降は Express Edition で 10GB のサイズまでデータベースを使用できます。
# 2008 までは 4GB でした。
SQL Server 2008 R2 Express Database Size Limit Increased to 10GB

データベースのサイズが 10GB (10,240 MB) を超える拡張は Express Edition ではすることができません。
image

これではデータベースのデータ領域に関する制約になります。

SQL Server のデータベースのデータ領域は複数のファイルで構成することができます。

  • データファイル 1 : 10GB
  • データファイル 1 : 5GB + データファイル 2 : 5GB

という構成は Express Edition で設定することは可能ですが。

  • データファイル 1 : 10GB + データファイル 2 : 10GB

という構成は設定することはできません。

この制限はデータ格納領域の部分が対象となりますのでトランザクションログに関しては 10GB の制限は適用されません。
以下のようなファイルを設定することが可能です。
image

10GB を超える場合は複数のデータベースを作って水平 / 垂直分散をしないといけないかと。

■メモリについて


Express Edition のデータベースエンジン部分では 1GB のメモリを使用することができます。

SQL Server の各エディションがサポートするメモリ サイズ

1GB のメモリですがバッファプールとして使用できるメモリの上限となるようです。

データページキャッシュとして最大で 1GB 程度、
# 瞬間で 1GB 超える事もあるようですが。
image

プロシージャキャッシュとして最大で 800MB 程度、
image

確保できるようです。

二つでどれくらいとれるか試してみたところ、データで 700MB 程度、プロシージャで 800MB 程度確保できました。
image

タイミングによってはこれだけ確保できないような気もするので基本は 1GB を上限としてサイジングすることになるかと思います。

小規模なデータベースであれば Express Edition でも十分に耐えられると思うので、上限は覚えておきたいと思います。

投稿者: Masayuki.Ozawa

2012/03/22 at 08:36

カテゴリー: SQL Server

タグ:

コメントをどうぞ

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

フォロー

Get every new post delivered to your Inbox.

現在138人フォロワーがいます。