SQL Server のファイルは、別の HDD/SSD に置くことができます。ってことで、基本技なのですが、メモ的に書いておきます。
■SQL Server Management Studio で新しいデータベースを作る
新しいデータベースを作ると、初期値が「C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLDATA」になっています。
「MSSQL11.MSSQLSERVER」なところは、SQL Serverのバージョンとかインスタンスとかで決められているので、バックアップを取りたいときはここから直でコピーしてもOK。まあ、「タスク」→「バックアップ」でバックアップするのが筋なんですが。
■データベースファイルをSSDに移動させる。
移動させる、というかデータベースを作成するときに別のドライブにファイルを作ります。
私の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万件ぐらい入っていると思う。
初期のSELECTで、SSD が 4.6秒、HDD が 15.1 秒。インデックスなしの全検索っぽいクエリを使っているのですが、3倍ぐらい早くなります。
2回目以降のキャッシュが効いた状態だと、SSD,HDD ともに 0.4秒で返ってきます。
こんな感じで、SQL Server が 4GB メモリを使っているので、ほとんどオンメモリですね。
大量ユーザーの外部サーバー向けだと、本式のSSDストレージを使わないとダメかもしれませんが、社内サーバーとか何かのプロジェクトでデータ解析とか位ならば、手ごろな SSD を買ってきて差し込んでおくのも悪くないスピードかと(ええと、このPCにはメモリが大量に積んであるので、そのあたりは別に検証をします)。