メモリ基本講座【番外編】高速で安定したSQL Serverを運用するために必要なエッセンスとは?
みなさん、Optaneという製品を覚えていますか?
Optaneは、Micron社とIntel社が共同開発した3次元構造の「3D Xpoint」を採用したメモリとフラッシュストレージの製品で、高速アクセス可能な製品です。しかし、Optaneはその役割を終えました。(#ちなみに、Micron社は残念ながら2021年にこの事業より撤退しています。)
3D XpointはNANDよりも高速ですがDRAMより遅いメモリで、従来のメモリとストレージのギャップを埋めるための高速キャッシュとしてOptaneを活用するというソリューションを展開していました。
このたび、Micron社がXTRという新たな高速フラッシュストレージ製品をリリースしました。
今回、XTRの特徴を活用しSQL Serverを構築した際のパフォーマンス測定を行いましたので、その観点から高速で安定したSQL Serverを運用するために必要なエッセンスをお伝えしたいと思います。
目次
1. SQL Serverとは?
まず、すでにご存知の方も多いと思いますが、おさらい程度でSQL Serverについて説明させていただきます。
SQL Serverとは、Microsoft社が提供するリレーショナルデータベースです。RDBMSと表記されることもあります。
主に、データのバックアップやリストア、高可用性の実現、監視・診断などの機能があり、これらを適切に利用することで、安全かつ迅速なデータベース運用が可能です。
また、Windowsシステムに最適化され、大規模なデータを保管、管理できるデータベースなので、多くの企業で活用されています。
SQL Serverを運用するハードウェアプラットフォームは、データベースのワークロードとしてランダムにRead、Writeが発生します。そのため、SQL Serverのストレージ領域をどう構成するかによって、SQL Serverのパフォーマンスに影響します。
SQL Serverは最初の一時キャッシュとして、メモリ内のワークスペース領域を使います。ワークスペース領域はSQL Serverが内部で自動的に上限を定めて確保されます。そして、この上限値を超えると見込まれる場合に、SQL Serverはもう1つの一時領域としてストレージ領域に確保するTEMPDBを使います。高速なメモリ上の一時キャッシュ領域を使い、足りなくなったらストレージ領域の一時領域も使うということです。
上記で説明した背景を踏まえると、多くのメモリと高速なストレージがないと、高速で安定したパフォーマンスを維持できるSQL Serverにはならない…と。その通りです。
高速で安定したパフォーマンスを維持するSQL Server には多くのメモリと高速なストレージが必要です。これはMicron社なら実現することができます。
2. メモリ容量とパフォーマンスの密な関係
複数の同時クエリ(アナリティクスワークロード)を持つSQL Serverにメモリを追加した場合、クエリ処理速度にどのくらいの効果があるか、図1.を参照してください。
図1. クエリ処理時間とサーバメモリの関係
今回は複数の同時クエリを実行した、マルチストリームワークロード(複数の異なる作業負荷が同時に実行される状況)を使用し、すべてのクエリの完了時間を測定しています。
図1.を参照すると、サーバにメモリを追加することで、クエリ処理完了時間が短縮されることが分かります。
メモリを256GBから384GBに増やすと、クエリ完了時間は13%短縮され、384GBから512GBに増やすと、さらに14%短縮されます。これらの結果は、評価したデータベース、ハードウェア構成、およびクエリに依存する部分ではありますが、メモリを追加することで効果があるということが証明されました。
3. TEMPDBとメモリとSSDの関係
TEMPDBとは、SQL Serverで一時的なデータや作業用のデータを格納するためのデータベースです。一時テーブル、一時ストアドプロシージャ、ソート/ハッシュ操作などに使用され、データベースエンジンの一部で頻繁に利用されます。
特にI/O(Input/Output)パフォーマンスが重要になり、SSDはRead/Writeにおいて高いパフォーマンスを実現することができるため、TEMPDBボリュームに適しています。これにより、ソート/ハッシュ操作などが迅速に実行され、データベースのクエリパフォーマンスが向上します。
ただ、「メモリ容量とパフォーマンスの密な関係」で多くのメモリと高速なストレージがSQL Serverでは必要と書きましたが、ただメモリを増やせば良いというわけではないことが分かりました。
図2. TEMPBへの書き込み速度と
サーバメモリの関係
図2.を参照してもらうと、SQL Serverに単にメモリを増設しても、書き込み速度が向上しません。これは、メモリを追加したことで、サーバがより多くのクエリをメモリ内で処理できるようになった反面、TEMPDBへのアクセス頻度が低下したことで、書き込み速度が低下してしまっています。
では、この問題を何でカバーするのか?
それは、SSDになります。ただ、SSDには寿命があり、耐久性も関係してきます。
図3. TEMPDB書き込みトラフィックと
Micron XTR SSD耐久性の比較
図3.はSQL Serverのメモリが256GB、384GB、512GBの場合のTEMPDBへの書き込みトラフィックを1日あたりの書き込みTBで表したもので、灰色の破線は5年間のハードウェアプラットフォーム寿命(XTRの保証期間は5年)をサポートするために必要なTEMPDBの耐久性を1日当たりの書き込みTB(TB/日)になります。
TB/日書き込みの最高値は、SQL Serverが使用可能なメモリが384GBの場合に一致します。これをサポートするためには、TEMPDBボリュームのSSDの耐久性が42 TB/日以上になる必要があります。
グラフ上部にある青い実線は、Micron XTR SSD 1.92TB(67.2 TB/日、5年間)の耐久性(TB/日)を示しています。この評価テストにおけるTEMPDBの書き込みトラフィック量が、Micron XTR SSDの定格耐久性(TB/日)の範囲内であることを明確に示しています。
以上のことから、Micron XTR SSDがSQL Serverのワークロードで5年間問題なく稼働するのに十分な耐久性を備えていることが明確に分かります。
4. Micron XTR SSD vs Intel Optane SSD
冒頭に説明した3D Xpointを採用していたIntel Optane SSDとMicron XTR SSDをTEMPDBボリュームに割り当てた場合と、Micron 6500 IONをデータベースに割り当て場合とで、クエリ処理時間を比較してみました。
図4. クエリ実行時間の比較
図4.のグラフを参照すると、これら2つの構成ではクエリ完了時間にほとんど差がないことがわかります。この結果から、Micron XTR SSDはSQL Server分析ワークロードにおいて、Intel Optaneとほぼ同等のパフォーマンスと、図3.で説明した5年間ワークロードの耐久性を実現することができます。
ちなみに、Micron XTR SSDはTLC NANDをpSLCで製品化しているSSDです。pSLCにすることで、3D Xpointと同等のパフォーマンスを実現することができます。
5. 今回評価したSQL Serverのハードウェアプラットフォーム
今回、Micron社の評価で使用したハードウェアとソフトウェアは表1.の通りです。
表1. 評価で使用したハードウェア構成と
ソフトウェア
ハードウェア構成 | 数量 | 内容 |
---|---|---|
サーバ | 1 | Supermicro® AS-1115CS-TNR |
CPU | 1 | AMD® EPYC 9654 96-Core Processor |
データベース容量 | 1 | Micron 6500 ION SSD (30.72TB) |
TEMPDB容量 | 1 | Micron XTR SSD (1.92TB)/Intel Optane P5800x (1.6TB) |
Storage : OS | 1 | Micron 7450 PRO NVMe SSD (960GB) |
ソフトウェア | Ver | 内容 |
---|---|---|
Rocky Linux | 8.5 | OS |
Microsoft SQL Server | 2019 | Microsoft SQL Server 2019 Enterprise Core Edition (x64) |
図5. SQL Server ハードウェアプラットフォーム
参照:AMD EPYC™ 9654 プロセッサー | AMD
AS-1115CS-TNR | 1U | A+ Server | Products | Supermicro
6. 評価手順
評価手順は2つのステップを実行しています。
ステップ1 : 評価の前準備
- 1. SSDをnvme-cliでフォーマットし、FoBの状態にする
- 2. パーティション or namespaceを作成
- 3. 以前に作成したバックアップからデータベースをリストア
- 4. 列ストアインデックスを作成
- 5. 総計情報の収集
ステップ2 : 評価フロー
- 1. データベースパラメータの設定
- 2. データベースの再起動
- 3. データキャプチャの開始
- 4. クエリ実行開始
- 5. クエリの完了
- 6. データキャプチャの停止
7. まとめ
今回はSQL Serverに焦点を当てて、Micron XTR SSDとIntel Optane SSDの比較を行いました。
そして、高速で安定したSQL Serverを運用するために必要なエッセンスとして、以下の項目の検討がポイントとなることが分かりました。
- 高速で安定したパフォーマンスを維持するSQL Server には、多くのメモリと高速なストレージが必要です
- ただし、ただメモリを増やすだけだと、処理時間は短縮されますが、書き込み速度が向上しません
- 書き込み速度を向上するためにI/Oの速度向上が必要なので、XTRのようなSSDが効果的です
- XTR SSDをTEMPDBボリュームに割り当て、データベースに6500 IONをデータベースストレージに割り当てることで、SQL Serverを高速に、5年間のワークロードの耐久性を持ち、安定的に運用することができます
XTRを含めたサーバシステムの安定運用にご興味がある方は、是非お問い合わせください。