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

SQLServer用のIntelOptaneStorageの使用

    Intel Optane SSDDCP4800Xの基本

    Intel Optane SSD DC P4800Xシリーズは2017年の第1四半期に導入され、最初は375GBの容量で、その後750GBの容量が2017年後半にリリースされました。Intelは最近、このドライブの1.5TBバージョンもリリースしました。小売チャネル。これらのドライブはすべてPCIeNVMe3.0 x4インターフェイスを使用しており、2つの異なるフォームファクタで提供されます。1つはPCIe拡張スロットに挿入されるハーフハイトハーフレングス(HHHL)アドインカード(AIC)です。 2つ目は、PCIe3.0を介して接続する2.5インチドライブ用のU.215mmフォームファクタです。

    Intelの3DXPointストレージテクノロジーは、従来のNANDフラッシュとは根本的に異なります。 SSD DC P4800Xは、キューの深さが浅い場合の高性能により、特にSQL Serverを使用する場合に、非常に高い実世界のパフォーマンスを実現するためのドライブがはるかに簡単になります。 Intel Optane SSDは、最速のPCIe NVMe NANDベースのSSDと比較して、低キュー深度で約10分の1のレイテンシーと5〜8倍のスループットを実現します。また、「書き込みが集中する」エンタープライズNANDフラッシュストレージよりも書き込み耐久性が高く、フルに近いためパフォーマンスが低下することはありません。非常に重い書き込みワークロードの下で一貫した読み取り応答時間を実現し、従来のNANDフラッシュドライブとは異なり、同じ製品ラインの大容量ドライブと比較して、小容量ドライブでもパフォーマンスが低下することはありません。低遅延のワークロードの場合、現在、Intel Optane SSDDCP4800Xに近いものはありません。

    Intel Optane SSDDCP4800X仕様

    Intelは、Optane SSDDCP4800Xシリーズをシーケンシャル読み取りで2500MB/ s、シーケンシャル書き込みで2200 MB / s、読み取りと書き込みの両方で550,000IOPSと評価しています。定格レイテンシは、読み取りと書き込みの両方で10 µs(マイクロ秒)です。比較のために、Intelは、現世代の3D-NAND、トリプルレベルセル(TLC)SSDDCP4600シリーズをシーケンシャル読み取りで3200MB/ s、シーケンシャル書き込みで1575 MB / s、読み取りで610,000 IOPS、読み取りで196,650IOPSと評価しています。書き込みます。定格レイテンシは、読み取りで85 µs、書き込みで15 µsです。

    現在の価格は、375GBサイズで約$ 1200.00、750GBサイズで約$2500.00です。 1.5TBのサイズを小売チャネルで入手することは依然として困難ですが、価格はGBあたりの容量が小さいドライブとほぼ同じである必要があります。ほとんどの場合、パフォーマンスを損なうことなく冗長性を確保するために、2つの同一のドライブを入手してから、Windowsストレージスペースを使用してソフトウェアRAID1アレイを作成する必要があります。

    一般的なMicrosoftNVMeドライバーを使用するのではなく、IntelSSD用のIntelDatacenter NVMeMicrosoftWindowsドライバーをダウンロードしてインストールする必要があります。また、Intel SSDファームウェアアップデートツールをダウンロードしてインストールし、各Optaneドライブに最新のファームウェアがインストールされていることを確認することもできます。

    主なSQLServerの使用シナリオ

    これらのパフォーマンス特性により、これらのIntel Optaneカードは、多くの激しいtempdbワークロード、特に重いOLTPワークロードや、ユーザーデータベースで読み取りコミットスナップショットアイソレーション(RCSI)を使用している状況(結果のバージョンストアワークロードをtempdb)。

    非常に要求の厳しいtempdbワークロードを持つSQLServerインスタンスに、これらのIntel Optane SSDDCP4800Xドライブを使用して素晴らしい結果が得られました。最近のいくつかのクライアントは、tempdbデータベースファイルを他のタイプのストレージから、2枚のIntel Optane SSD DC P4800X PCIe NVMeストレージカード(ソフトウェアRAID 1アレイ内)でバックアップされた論理ドライブに移動しました。典型的な使用例は、tempdbを従来のフェールオーバークラスターインスタンスを使用するSAN上の共有ストレージから、クラスター内の各ノード上のローカルストレージに移動することです。これは、SQLServer2012以降で実行できます。もう1つの使用例は、使用しているSQL Serverのバージョンに関係なく、tempdbファイルを現在の場所からスタンドアロンサーバーインスタンス上のRAID1Optaneアレイにマップする新しい論理ドライブに移動することです。

    これらのOptaneドライブは比較的安価であり、現在利用可能な最速のタイプの従来のブロックモードストレージを提供します。これらはSQLServerに対して透過的であり、HHHLアドインカードまたはU.2接続ドライブとしてPCIe3.0x4スロットをサポートするすべてのシステムで機能します。また、SQL Serverのレガシーバージョンでも動作します(OSとハードウェアがサポートしている限り)。 sys.dm_io_virtual_file_stats DMVからのtempdbデータファイルでファイルレベルの書き込みレイテンシが高くなることはよくあることです。したがって、tempdbデータファイルをOptaneストレージに移動するだけで、この問題に直接対処できます。従来のワークロードチューニング。

    tempdbで割り当ての競合の問題が発生している場合(通常、tempdbが配置されているドライブの基本的なパフォーマンスとはほとんど関係ありません)、MicrosoftのPamLahoudのブログ投稿TEMPDB–Filesのガイダンスに従う必要があります。とトレースフラグと更新、オーマイ! tempdbのストレージが非常に高速であることは、tempdbでの割り当ての競合の問題に間接的に役立ちますが、tempdbの割り当ての競合の問題に直接対処するには、tempdbの構成、トレースフラグ、およびSQLServerのパッチに関する現在のMicrosoftのガイダンスに従うことが非常に重要です。

    Intel Optaneストレージの別の可能な用途は、ユーザーデータベースのトランザクションログファイルのホームとして使用することです。特に、トランザクションログファイルが同じ論理ドライブにある複数のユーザーデータベースがある場合、またはWRITELOGの待機時間が長い場合はそうです。あなたのインスタンス。これは、SQL Serverの遅延耐久性プロパティ(SQL Server 2014が必要で、データ損失のリスクがある)を使用するか、SQL Serverの永続ログバッファー機能(SQL Server 2016SP1とNV-DIMMをホストするために必要)を使用する代わりに使用できます。 20MBの「ログの末尾」トランザクションログファイル)。

    また、すべてのユーザーデータベースデータとログファイル、およびtempdbファイルをOptaneストレージに移動するだけで優れた結果が得られるクライアントがいくつかあります(データベースが小さい)。

    CrystalDiskMarkのテスト結果

    Intelは、IntelOptane900PであるOptaneSSDDCP4800Xのハイエンドコンシューマーバージョンを製造しています。また、わずかに新しく高速なIntelOptane905Pも搭載しています。メインのAMDRyzenThreadripper2950Xワークステーションに480GBのIntelOptane900P PCIeカードと、古いNANDベースの400GBのIntel SSD750PCIeカードがあります。簡単なCrystalDiskMarkテストでは、図1と2に示す結果が得られます。最も関連性の高いテストは、下の行に示すように、1スレッドの実行でQDが1の4K転送です。

    図1:480GB IntelOptane900Pの結果

    図2:400GB Intel SSD 750PCIeNVMeの結果

    ワークロードに高いストレージ遅延またはランダムなI/Oボトルネックが見られる場合は、関連するSQLServerファイルを現在の場所からIntelOptaneストレージに移動するだけで、パフォーマンスが大幅に向上する可能性があります。これは比較的少額の費用で実行でき、どのバージョンのSQLServerでも機能します。これにより、アップグレードできるようになるまで、既存のレガシーサーバーから寿命を延ばすことができます。


    1. 結果が得られるまで複数のSELECTを試す方法はありますか?

    2. 既存の列のデフォルト値を設定する方法

    3. Androidルーム-すべてのテーブルのsqlite_sequenceをクリアする方法

    4. CTEとサブクエリの違いは?