MicroSoft社のSQLserverをインストールする方法について解説します。
適切な設定をしないとパフォーマンスにもかかわってくる部分なので注意が必要です。
事前準備
まず事前にインストールするサーバーのOS(Windows serverを想定)の電源プランを確認しておきます。もし電源プランが高パフォーマンスになっていなければ高パフォーマンスに変更しておきます。
インストール
まずはMicrosoftのSQLServerのサイトに行きインストーラーをダウンロードします。
ここでは開発者用まはたExpressを使用します。(どちらも無料で使用できますが、開発者用は開発用途専用です。本番環境では使用できませんので注意してください)
ここでは詳細設定について説明するためにカスタム(インストール)を選択します。
ライセンス条項に同意します。
インストールパッケージのダウンロードが完了すると以下のようなインストールセンター画面が表示されると思います。
ここで左側のメニューからインストールを選択し、右側のペインから一番上にある、SQLserverの新規スタンドアロンインストールを実行するか、既存のインストールに機能を追加を選択します。
プロダクトキーを入力しますが、ここでは開発者用エディションで進めるので、以下の画面のまま次へをクリックします。
ライセンス条項と次に同意しますにチェックを入れて次へをクリックします。
MicorosoftUpdateを使用して更新プログラムを確認するはチェックを入れても入れなくてもどちらでも問題ありません。
ここでインストールルール画面で、ファイアーウォールのところで警告が出ていますが、とりあえずこのままインストールを進めます。これはネットワーク経由でアクセスする場合、別途ポートを解放する必要があることを意味しています。
以下の!の部分は初心者の方は読み飛ばしてもらっても構いません。
インストールする機能を選択します。今回は基本機能だけインストールするのでデータベースエンジンサービスのみチェックを入れておきます。
サーバーの構成画面では重要な設定項目が一つあります。
それは”SQL Serverデータベースエンジンサービスにボリュームメンテナンスタスクを実行する特権を付与する”にチェックを入れます。
瞬時初期化について
瞬時初期化とは、自動拡張時に拡張した部分のデータの0埋めを無効化する機能になります。データベースはデータを追加することでデータ容量が増えていき、データファイルの容量が当初設定したサイズでは足りなくなった場合、自動拡張機能を有効にしている場合、データファイルサイズを自動で大きくしてくれる機能があります。この時に容量を拡張した部分はデータを0で埋める処理を行うのですが、瞬時初期化にチェックを入れることでこの動作を無効にできます。
瞬時初期化を有効にすることで自動拡張時のパフォーマンスが向上します。ただしデメリットとして、データを0埋めしないため、拡張部分に使用されなくなった過去のデータが残っている場合、そのデータが残ってしまうためセキュリティー上のリスクがあります。
現在のユーザーを追加します。クリックしてユーザーが追加されるまでなぜか数秒かかります。焦って何度もボタンをクリックしないようにしましょう。
ディレクトリの設定
データディレクトリタブで以下のディレクトリを設定します。
- データルートディレクトリ
- ユーザーデータベースディレクトリ
- ユーザーデータベースログディレクトリ
- バックアップディレクトリ
SQLServerは以下に関してストレージを分けておくことが重要です
システム領域
データベースファイル
トランザクションログファイル
バックアップファイル
一時DB(TempDB)
また特にHDDの場合、データファイルとトランザクションログファイルは必ず異なるストレージにすることがパフォーマンス上重要です。
というのもデータファイルのデータアクセスはランダムアクセスなのに対し、トランザクションログファイルはシーケンシャル(順次)アクセスになります。HDDの場合、回転するディスクから該当データを読み書きするのでシーケンシャルアクセスは比較的高速ですが(と言ってもSSDよりはかなり遅い)、ランダムアクセスは遅いのです。このシーケンシャルアクセスとランダムアクセスがごちゃ混ぜになると全体としての読み書きのパフォーマンスが悪くなります。
このような理由で、データファイルとトランザクションログファイルは異なるディスクに保存するようにします。
また近年ではオールフラッシュ構成でサーバーのストレージを組むことも珍しくありません。また仮想マシンとしてデータベースサーバーを構築することも一般的になっています。
その場合でも、後々のパフォーマンス解析などのために、上記の目的ごとにストレージを分割しておく(ドライブレターを分けておく)ことをお薦めします。そのようにすればパフォーマンスが悪化した場合にどのストレージに対するIOがボトルネックになっているのかをwindowsパフォーマンスモニタなどを使用して解析しやすくなります。例えば、一時DBへのアクセスがボトルネックになっているのかどうかなどです。
そのためここではユーザーデータベースディレクトリ、ユーザーデータベースログディレクトリ、バックアップディレクトリをそれぞれ異なるドライブに割り当てるようにします。
次にTempDBタブで一時DBのディレクトリ設定をします。
ここではファイルの数はCPUのコア数(ただし最大でも8)に設定します。初期ファイルサイズはTempDBに割り当てできるストレージ容量内(以下で解説)で、できる限り大きい値にしておきます。
またデータディレクトリも専用のドライブに割り当てるようにします。(図ではCドライブしかないので分けていませんが、本番環境ではドライブを分けるようにしましょう)
MaxDOP設定
MaxDOPとはマルチコアCPUで大量の処理を複数のコアを並列で使用する場合に、最大幾つのコアを一つのタスクで使用するかを決めるものです。デフォルトではサーバーに割り当てられたコア数になっています。必要に応じてコア数を変更しますが、ここではそのまま進みます。
メモリの設定
メモリタブでは最大と最小メモリの設定をします。
最大メモリについては必ずOS分のメモリを最低でも4GB程度は残しておきます。そうしないとOSのメモリ領域までSQLserverが使用して、動作が不安定になったりします。デフォルトでは最大メモリは2TB程度になっていますが、ここまでメモリを載せておくことはまずないと思うので、必ず最大メモリについては設定値を見直すようにしましょう。
推奨にチェックを入れて最大サーバーメモリをMB単位で指定します。またこの場合一番下にあるSQLserverデータベースエンジン用に推奨されているメモリ構成を受け入れるには、ここをクリックしますにチェックを入れます。
ファイルストリームは私は使用したことがないのでここではスルーします。
ここまでの内容を確認後、インストールボタンを押してインストールを開始します。
インストールが完了すると以下のように状態が全て成功と表示されるので、閉じるボタンを押して終了します。以上でSQLServerのインストールは完了です。
最後に
ここではSQLServerのインストールについてまとめました。インストールの仕方によってはパフォーマンスが悪化することもあるので、よく理解してインストールしましょう。
またデータベースのパフォーマンスについて勉強したければ以下の本がお薦めです。