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

メモリ/ストレージテクノロジ階層とSQLServer

    「帯域幅の問題はお金で解決できる」という古いネットワークがあります。光の速度が固定されているため、遅延の問題はより困難です。」

    従来、データベースサーバーのメモリとストレージの階層全体には4つのプライマリレイヤーがありました。ピラミッドの最上部から始めて、スタティックランダムアクセスメモリ(SRAM)キャッシングがあります。これは通常、プロセッサの物理コアごとに比較的小さく高速なL1キャッシュとL2キャッシュと、大きくて低速なオンダイキャッシュに分割されます。プロセッサ全体の共有L3キャッシュ。たとえば、14nm Intel Xeon E7-8890 v4プロセッサ(Broadwell-EX)には、コアあたり64KBのL1キャッシュとコアあたり256KBのL2キャッシュがあり、物理プロセッサ全体で共有されるはるかに大きいが低速の60MBのL3キャッシュがあります。 。

    2番目のレイヤーはダイナミックランダムアクセスメモリ(DRAM)で、ライセンス容量はWindows Server 2012 R2で最大4TB、Windows Server2016で最大24TB、レイテンシはナノ秒の範囲です。 SRAMとDRAMはどちらも揮発性であるため、電力が供給されている場合にのみデータを保持します。

    3番目のレイヤーはSATA/SAS(NAND)SSDであり、個々の容量は最大約4 TBで、レイテンシーはマイクロ秒の範囲です。古いSATA/SAS(NAND)SSDの制限要因の1つは、使用しているSATA / SASのバージョンに応じて、合計帯域幅を制限するSATA/SASインターフェイスを使用しているという事実です。また、新しいNVMeプロトコルよりもはるかに多くのI/Oオーバーヘッドと高い遅延を持つレガシーAHCIプロトコルを使用することによって制限されます。第4層は、最大10 TBの個々の容量とミリ秒の範囲の遅延を備えた、従来の磁気スピニングメディアハードディスクドライブです。

    これらの従来の各レイヤーのレイテンシは高くなりますが、メモリ/ストレージ階層を下に移動すると、MB / GBあたりのコストが低くなり、総容量が大きくなります。これらの4つの従来のレイヤーの相対的なレイテンシーを表1に示します。

    インターフェース タイプ 相対レイテンシ(読み取り)
    コア上/ダイCPU上 SRAMキャッシュ 1x
    直接接続 DDR4 DRAM 10x
    PCIeNVMeまたはSATA/SAS AHCI SSD 100,000x
    SAS / SATA HDD 10,000,000x

    表1:従来のメモリ/ストレージレイヤー

    新しいメモリ/ストレージレイヤー

    過去数年にわたって、既存のNANDフラッシュテクノロジーに基づくNVM Express(NVMe)PCIeSSDの導入と使用の増加を見てきました。これらは通常、50〜100マイクロ秒の範囲の遅延があります。また、新しい、はるかに効率的なNVMeプロトコルとPCIeインターフェイスを使用しており、古いAHCIプロトコルを使用する古いSAS /SATASSDよりもはるかに優れたパフォーマンスを提供します。

    現在、Hewlett Packard Enterprise(HPE)は、HPE ProliantDL360Gen9サーバーおよびHPEProliantDL380Gen9サーバー用に8GBNVDIMMモジュールを販売しています。これらのモジュールには8GBのDRAMが搭載されており、8GBのフラッシュが899.00ドルでバックアップされています。これは、ギガバイトあたりかなり高価です。これらの2ソケットサーバーには24個のメモリスロットがあり、それぞれが最大128GBの従来のDDR4DIMMをサポートします。 NVDIMMモジュールに使用するスロットは、通常のメモリ使用には使用できません。 NVDIMMの使用には最大16のメモリスロットを使用できます。これにより、最大容量は128GBになります。公式のNVDIMMサポートを取得するには、Intel XeonE5-2600v4シリーズプロセッサを使用する必要があります。 Micronは、2016年10月に大容量の16GBNVDIMMをリリースする予定です。

    デバイス IOPS 平均レイテンシ(ns) MB/秒
    NVM Express SSD 14,553 66,632 56.85
    ブロックモードNVDIMM 148,567 6,418 580.34
    DAXモードNVDIMM 1,112,007 828 4,343.78

    表2:4Kランダム書き込みパフォーマンスの比較(1スレッド、QD1)

    表2のパフォーマンスの数値は、サンフランシスコのIDF16でのMicrosoft / Intelプレゼンテーション(Windowsの永続メモリ)からのものであり、次のパフォーマンステスト方法を使用しています。

    • ワークロード :4KBランダム書き込み、1スレッド、1未処理I / O、同期I / O、1GBファイル、NTFS、3秒のウォームアップ、7秒の測定時間
    • ハードウェア :HPE ProLiant DL380 Gen9、2x Intel Xeon E5-2650L v3 @ 1.8GHz、96GB RAM、2x 8GB NVDIMM-N、1x 1600GB NVMe SSD
    • ソフトウェア :プレリリースされたWS 2016ビルド、Microsoft内部I/Oツール

    LindseyAllenとTobiasKlimaをフィーチャーしたWindowsServer2016の永続メモリを使用したSQLServer2016パフォーマンスの高速化と呼ばれる優れたチャネル9ビデオがあります。ビデオのデモは、WindowsServer2016で実行されているSQLServer2016がDAXモード(トレースフラグが指定されていない)をどのようにサポートするかを示しています。 Windows Server 2016がGAになると、SQLServerの将来のバージョンではトレースフラグは不要になります。

    これらの新しいメモリストレージレイヤーは、従来のDRAMメモリとSATA /SASSSDの間に挿入されます。

    DAXモードでフォーマットされたストレージボリュームは、可能な限り最高の書き込みパフォーマンスが必要で、遅延耐久性またはインメモリOLTPを使用したくないシナリオで、SQLServer2016トランザクションログファイルをホストするために使用できます。もう1つの考えられるシナリオは、tempdbに極度のストレスをかけるワークロードがある場合に、DAXモードボリュームを使用してtempdbデータファイルをホストすることです。

    将来のメモリ/ストレージレイヤー

    2016年後半/2017年初頭には、NVMeプロトコルを使用したIntelOptaneSSDの導入が見られるはずです。これらは、既存のサーバーで動作するIntel / Micron 3D XPointテクノロジー(クロスポイントと発音)を使用するフラッシュストレージデバイスになります。 Intelの内部テストでは、これらのデバイスは、既存の非常に高性能なIntelDCP3700シリーズPCIeNVMeSSDデバイスよりも約10倍低いレイテンシー、および約10倍高いIOPSを示しています。

    2017年半ばから後半には、非常に大容量の永続メモリとして、または非常に高性能な低容量のストレージとして使用できる新しい形式の永続DIMMの展開も見られるはずです。これらは、現在のDDR4 DIMMと電気的および物理的に互換性があり、次世代のIntel Xeonプロセッサベースのプラットフォーム(Skylake「Purley」プラットフォーム)でサポートされます。これらの製品も、Intel / Micron3DXPointテクノロジーに基づいています。これらのIntelDIMMは、プロセッサ/サーバープラットフォームがサポートしていると仮定すると、従来のDDR4 DRAMよりも大幅に低いコストで最大2倍のシステムメモリ容量を提供します(MicrosoftはWindows Server 2016のリリース後にライセンスメモリ制限を引き上げます)。これらのDIMMのレイテンシーは従来のDRAMと同じではありませんが(低速になります)、PCIeNVMeストレージデバイスよりもはるかに低いレイテンシーを提供します。

    より広い業界全体の観点から、この新しいカテゴリの永続メモリ(PM)デバイスは、DRAMに近いパフォーマンスを備えた不揮発性ストレージを提供します。 PMデバイスはメモリバス上に直接存在するため、レイテンシが非常に低く、帯域幅が広くなります。 Microsoftは、Windows 10AnniversaryUpdateおよびWindowsServer2016でPMデバイスをサポートしています。ダイレクトアクセスストレージ(DAX)ボリュームと呼ばれる新しいクラスのストレージボリュームがサポートされます。 DAXボリュームは、メモリマップトファイルを使用して、アプリケーションにPMデバイスへの直接アクセスを提供し、最高のパフォーマンスを実現します。

    DAXモードが非常に高速である理由の1つは、DAXボリューム上のNVDIMMの領域をメモリマップすると、そのストレージとのそれ以降の対話がストレージスタックを完全にバイパスするためです。データを永続化することは、文字通り単なる記憶コピーです。これは、ストレージとのすべてのやり取りで実行する必要のない大量のコードです。これは、(光速とともに)レイテンシーのもう1つの非常に重要な要因です。 DAXボリュームはNTFSでサポートされており、ボリュームをフォーマットするときにDAXモードを選択する必要があります。 DAXモードをサポートおよび使用するには、アプリケーション(SQL Server 2016など)が(Microsoftによって)変更されている必要があります。また、トレースフラグを有効にする必要があります。

    PMハードウェアでの下位互換性のために、既存のすべてのストレージセマンティクスを維持するブロックモードボリュームもあります。すべてのI/O操作は、ストレージスタックをトラバースしてPMディスクドライバーに到達します。これにより、ブロックモードは既存のアプリケーションと完全に互換性があります。サポートされているオペレーティングシステムを備えたPMハードウェアデバイスを使用している場合は、ブロックモードでアプリケーションを変更しなくても、大幅なストレージパフォーマンスが得られます。これは、SQLServerのダウンレベルバージョンがブロックモードのストレージボリュームを使用できることを意味します。

    これらすべての結論は、WindowsでSQL Server 2016を使用している限り、今後12〜18か月間で、メモリとストレージサブシステムレイヤーを設計および構成する方法について、より多くの柔軟性と新しいオプションが提供されることです。 Server 2016には、PMデバイスをサポートできる十分な新しいハードウェアがあります。古いバージョンのSQLServerは、Windows Server 2016で実行されている場合、ブロックモードのPMボリュームを使用できます。古いハードウェアおよび古いバージョンのWindows Serverは、IntelOptaneSSDを使用できます。これにより、ストレージのパフォーマンスを向上させるための多くの追加の選択肢が得られます!


    1. SQL Group BY、各グループの上位N項目

    2. 参照データパターン:拡張可能で柔軟

    3. MySQLでデータベースとテーブルを作成および削除する方法

    4. Oracleのsdo_geometryからlatとlongを取得する方法