sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2016StandardEditionのハードウェアの選択と構成

    2016年11月16日にSQLServer2016 Service Pack 1がリリースされて以来、以前はEnterprise Editionでしか利用できなかった非常に便利なプログラマビリティ関連の機能が多数用意されており、多くの組織が意図的にSQLServer2016の使用を選択できるようになりました。以前よりも標準版。

    これを行うことを検討している場合は、最新のハードウェアを備えた新しいサーバーにSQL Server 2016StandardEditionをインストールして使用するときに発生する可能性のあるいくつかの一般的な問題と落とし穴に注意する必要があります。

    メモリの制限と構成

    最初の問題は、SQL Server 2016StandardEditionのインスタンスごとのライセンス制限です。最初のライセンス制限は、SQL Server 2016 Standard Editionの各インスタンスのバッファープールに使用できるメモリの量です。これは、SQL Server 2014 Standard Editionの場合と同様に、わずか128GBです。個人的には、最近の2ソケットサーバーのメモリ密度を考えると、この制限は人為的に低いと思いますが、対処しなければならない制限です。

    Intel Xeon E5-2600 v4製品ファミリプロセッサを使用する現在の2ソケットサーバーは、プロセッサあたり最大12個のDIMMを使用できますが、32GB DDR4 ECC DIMMは、GBあたりも手頃な最大容量です。このプロセッサフ​​ァミリを搭載した各サーバーには、プロセッサごとに4つのメモリチャネルがあり、各チャネルは最大3つのDIMMをサポートします。 24個の32GBDIMMを備えた完全に実装された2ソケットサーバーには、768GBのRAMが搭載されます。これは、SQL Server 2016StandardEditionの単一インスタンスで使用できる容量をはるかに上回ります。

    SQL Server 2016 Standard Editionのインスタンスあたりのメモリ制限は非常に低いため、ライセンス制限メモリをすべて使用できると同時に、可能な限り最高のメモリパフォーマンスを実現できる、適切なメモリ構成を意図的に選択する必要があります。メモリチャネルごとに1つのDIMMを装着するだけで、プロセッサがサポートする最高のメモリパフォーマンスが得られます。

    デルなどの主要なサーバーベンダーは、選択したプロセッサの数と特定のタイプに応じて、サーバーの可能なメモリ構成に関する詳細なガイダンスを提供しています。 2つのIntelXeonE5-2600v4ファミリプロセッサを搭載した2ソケットサーバーのSQLServer2016 Standard Editionの場合、8つの32GB DDR4 DIMMを選択すると、サポートされる最大速度2400MT/sで実行される256GBのRAMが得られます。

    これにより、サーバーの最大メモリ(バッファプール用)を131,072 MB(128GB)に設定しても、オペレーティングシステム用に、また列ストアインデックスやメモリ内OLTPで使用できるように十分なメモリを残しておくことができます。また、将来のRAM拡張に使用できる16個の空のDIMMスロットがあります(これは、後続のEditionをEnterprise Editionにアップグレードした場合に利用できます)。これらの空のDIMMスロットの一部の別の用途は、NVDIMMの「ログキャッシングのテール」(SQL Server 2016 Standard Edition SP1でサポートされています)です。

    プロセッサライセンスの制限

    SQL Server 2016 Standard Editionも、4つのソケットまたは24の物理プロセッサコアのいずれか少ない方に制限されています。最大32個の物理コアを搭載するIntelとAMDの両方の現在および今後のプロセッサフ​​ァミリでは、インスタンスごとのプロセッサコアの制限を誤って超えることが非常に簡単であり、パフォーマンスとライセンスコストに多くの悲惨な結果をもたらします。

    >

    これを行うことの最初の悪影響は、SQL Server 2016StandardEditionが使用可能なライセンス制限の物理コアをNUMAノード全体に割り当てる方法です。たとえば、2つの16コアIntel Xeon E5-2697A v4プロセッサを搭載した新しい2ソケットサーバーがある場合、デフォルトでは、SQL Server 2016 Standard EditionはNUMAノード0で16の物理コアを使用し、NUMAでは8つのコアのみを使用します。ノード1は、パフォーマンスが低下する不均衡な構成です。ここで説明するように、ALTERSERVERCONFIGURATIONコマンドを使用してこの問題を修正できます。

    この状況での怪我に侮辱を加えるために、Microsoftは、インスタンスごとに24の物理コアしか使用できない場合でも、マシン内の32の物理コアすべてのコアライセンスを購入することも期待しています。同じホストマシンで複数のインスタンスを実行することを決定しない限り、使用できないコアライセンスの場合、これは約$15Kの追加ライセンスコストになります。追加のライセンスコストは、構成方法に応じて、一般的な2ソケットサーバーに支払われます。

    Standard Editionで回避する必要があるもう1つの一般的な落とし穴は、4つを超えるソケットを持つ仮想マシンを作成することです。これを行うと、ソケットライセンスの制限により、SQL ServerStandardEditionは4つのソケットのみを使用します。

    プロセッサの選択

    現在、2ソケットサーバー用の最新のIntel Xeonプロセッサフ​​ァミリは、2016年の第1四半期にリリースされた14nm Intel Xeon E5-2600 v4製品ファミリ(Broadwell-EP)です。Intelは次世代の14nmIntelをリリースする寸前です。 Xeon E5-2600 v5(Skylake-EP)。これはGoogleCloudPlatformですでに利用可能です。私の推測では、これらの新しいプロセッサ(新しいモデルのサーバーが必要になります)は、2017年の第2四半期に一般公開される予定です。

    この24物理コアライセンスの制限を考えると、非常に重要です 12を超える物理コアを備えたプロセッサを選択しないこと(2ソケットサーバーの両方のソケットにデータを投入することを計画している場合)。これにより、プロセッサSKUの選択が多少制限されますが、表1に示すように、4つの優れた選択肢があります。

    モデル コア Est。 TPC-Eシステムスコア スコア/フィジカルコア ライセンス費用
    Xeon E5-2687W v4 24 3,673.00 153.04 $ 44,592.00
    Xeon E5-2667 v4 16 2,611.91 163.24 $ 29,728.00
    Xeon E5-2643 v4 12 2,081.36 173.44 $ 22,296.00
    Xeon E5-2637 v4 8 1,428.39 178.54 $ 14,864.00

    表1:2ソケットシステムプロセッサの比較指標

    表1は、選択した2つのプロセッサを搭載した2ソケットシステムの合計物理コア、推定TPC-Eスコア、推定TPC-Eスコア/物理コア、および合計SQL Server 2016StandardEditionライセンスコストを示しています。私には12コアのプロセッサ、8コアのプロセッサ、6コアのプロセッサ、4コアのプロセッサがありますが、表1には10コアのプロセッサはありません。利用可能な3つの10コアプロセッサモデルはすべて、ベースクロック速度が非常に遅いため、SQLServerにとって非常に悪い選択です。

    システム全体の推定TPC-Eスコアは、システムの合計CPU容量の測定値であり、スコア/コアは、その特定のプロセッサのシングルスレッドCPUパフォーマンスの測定値です。

    概要

    SQL Server 2016 StandardEditionインスタンスのハードウェアとSQLServerのライセンスコストを最小限に抑えて可能な限り最高のパフォーマンスが必要な場合は、メモリチャネルごとに1つのDIMMのみを使用するメモリ構成を選択する必要があります(2ソケットシステムで合計8つのDIMMを意味します)。 2つのIntelXeonE5-2600 v4ファミリプロセッサを搭載)。

    また、表1にリストされている4つのプロセッサーのいずれかを意図的に選択する必要があります。他のプロセッサーの選択は、この観点からすると潜在的にコストのかかる間違いです。

    最後に、SQL Server 2016 Standard Editionを使用する場合は、Buffer Pool Extension(BPE)がワークロードのパフォーマンスに役立つかどうかを調査およびテストする必要があります。ワークロードによっては、NVDIMMでの「ログのテール」キャッシュもトランザクションログのパフォーマンスに非常に役立つ場合があります。


    1. パラメータなしでSQLインジェクションを回避する

    2. SQLの乗算集計演算子

    3. Mysqlは部分文字列のインスタンスをカウントし、順序付けます

    4. SQL Serverトランザクションログ、パート2:ログアーキテクチャ