データベースでSSDを採用するときの設計メモ

 はじめに

データベースのストレージにHDDではなくSSDを採用するシステムが増えてきていると思いますが、データベース設計をするにあたりHDDの場合と何が違うのか、検討したことをメモで残しておきます。SQL Serverの言葉で書いていますが、考えはどのRDBMSでも同じかと思います。

ファイル配置

HDDの場合、データファイルとトランザクションログファイルは別ディスクに配置する、というのがファイル配置設計の鉄則でした。これは、データベースにおいて重要な2種類のファイルのIOを分散するという理由もありますが、ランダムアクセス(データファイル)とシーケンシャルなアクセス(トランザクションログファイル)を分ける、という理由が大きいかと思います。HDDの物理的な特性上、これらのアクセスが混在するとHDDが得意なシーケンシャルなアクセスが性能劣化するからです。
SSDの場合、データファイルとトランザクションログファイルを別ドライブに配置するということは必須ではないと思います。SSDはHDDのようにシーケンシャルなアクセスが得意というわけではありません。というよりもシーケンシャルなアクセスとランダムアクセスで性能はあまり変わりません。そのためデータファイルとトランザクションログファイルを同ドライブに配置しても大きな性能劣化には繋がりません。もちろん分けた方がIOは分散するので効果はあると思いますが、HDDで分けていたほどのプラス効果は出ないということです。

データ断片化の影響

SSDの場合、断片化の性能影響が緩和されると思います。断片化はページの充填率であるページ密度が低い状況、またはページの論理的な並び順と物理的な並び順が一致しない状況(論理スキャンフラグメンテーション)のことを言います。このうち後者、論理スキャンフラグメンテーショについてはHDDでは性能影響がありますが、SSDではほぼ影響は無いと言えると思います。理由は前述した通りで、SSDはHDDと違いシーケンシャルなアクセスとランダムアクセスで性能はあまり変わらないからです。