SQL Server のデータベースファイルを SSD に移す

SQL Server のファイルは、別の HDD/SSD に置くことができます。ってことで、基本技なのですが、メモ的に書いておきます。

■SQL Server Management Studio で新しいデータベースを作る

新しいデータベースを作ると、初期値が「C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLDATA」になっています。

image

「MSSQL11.MSSQLSERVER」なところは、SQL Serverのバージョンとかインスタンスとかで決められているので、バックアップを取りたいときはここから直でコピーしてもOK。まあ、「タスク」→「バックアップ」でバックアップするのが筋なんですが。

■データベースファイルをSSDに移動させる。

移動させる、というかデータベースを作成するときに別のドライブにファイルを作ります。

image

私のPCは、CドライブがSSDなので、これはわざと E ドライブにデータベースファイルを作っています。SSDにするとBlukcopyは5倍ぐらい早くなる – Moonmile Solutions Blog の計測用ですね。

データベースファイルを他のドライブに作るのは、いくつか利点があって、

  • Cドライブが忙しい時(テンポラリキャッシュアクセスなど)にも DB アクセスが遅くならない。
  • Cドライブがクラッシュした時でもデータが生き残る。
  • ドライブ毎、他のPCに持っていける?(アクセス権限を修正しないとといけないかも)
  • Cドライブの容量を圧迫しない(SSD化で容量が小さいときとか)

というものがあります。特に、最初の利点は大きくて、プログラムのほうで何かがりがりやりながら、DB に insert アクセスということをやると C ドライブだけだと HDD の場合は格段に遅くなります(SSD 化している場合はどうなんでしょうね?)。

ちなみに、現在、DB 速度の計測用にがんがんアクセスログを突っ込んで、2GB 近くまでデータベースを膨らましました。中身はアクセスログなので1つだけのテーブル。500万件ぐらい入っていると思う。

image

初期のSELECTで、SSD が 4.6秒、HDD が 15.1 秒。インデックスなしの全検索っぽいクエリを使っているのですが、3倍ぐらい早くなります。

imageimage

2回目以降のキャッシュが効いた状態だと、SSD,HDD ともに 0.4秒で返ってきます。

imageimage

こんな感じで、SQL Server が 4GB メモリを使っているので、ほとんどオンメモリですね。

image

大量ユーザーの外部サーバー向けだと、本式のSSDストレージを使わないとダメかもしれませんが、社内サーバーとか何かのプロジェクトでデータ解析とか位ならば、手ごろな SSD を買ってきて差し込んでおくのも悪くないスピードかと(ええと、このPCにはメモリが大量に積んであるので、そのあたりは別に検証をします)。

カテゴリー: データベース, パフォーマンス パーマリンク