データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

MicrosoftSQLServerハイブリッドバッファプールの使用

Microsoft®は、SQLServer®2019(プレビュー)CTP2.1にハイブリッドバッファープールと呼ばれる新機能を導入しました。この機能を使用すると、永続メモリ(PMEM)デバイスに保存されているデータベースファイルのデータページに直接アクセスできます。

PMEMとは何ですか?

PMEMは、メモリバス上に存在するソリッドステートの高性能バイトアドレス可能メモリデバイスです。他のストレージデバイスに比べて多くの利点があります。

PMEMの主な利点は次のとおりです。

  • フラッシュソリッドステートドライブ(SSD)と比較して、遅延のない大規模なデータセットに対してより高速でほぼリアルタイムのデータアクセスを提供します。
  • フラッシュストレージよりもスループットが向上します。
  • ダイナミックランダムアクセスメモリ(DRAM)よりも安価です。
  • キャッシュ可能です。これは、中央処理装置(CPU)にキャッシュできないPeripheral ComponentInterconnect(PCIe)に比べて大きな利点です。
  • 停電またはシャットダウン後もデータをメモリに保持します。

PMEMをさまざまな方法で使用して、モノのインターネット(IoT)アプリケーション、サイバー脅威分析、金融取引など、膨大な量のデータを使用してより高速なデータアクセスが必要なアプリケーションの遅延を減らすことができます。

コンセプト

次の用語は、バッファプール拡張機能に適用されます。

  • ソリッドステートドライブ(SSD) :データを永続的にメモリ(RAM)に保存します。

  • バッファ :SQL Serverでは、バッファはメモリ内の8 KBページであり、データまたはインデックスページと同じサイズです。したがって、バッファキャッシュは8KBページに分割されます。 Apageは、バッファマネージャがより多くのデータを読み込むためにバッファ領域を必要とするまで、バッファキャッシュに残ります。データは、変更された場合にのみディスクに書き戻されます。これらのメモリ内で変更されたページは、ダーティページと呼ばれます。ページがディスク上のデータベースイメージと同等である場合、ページはクリーンです。バッファキャッシュ内のデータは、ディスクに書き戻す前に複数回変更できます。

  • バッファプール :バッファキャッシュとも呼ばれるバッファプールは、キャッシュされたデータページ用にすべてのデータベースで共有されるグローバルリソースです。バッファプールキャッシュの最大サイズと最小サイズは、起動時、またはSQLServerのインスタンスがsp_configureを使用して動的に再構成されたときに決定されます。このサイズは、実行中のインスタンスでいつでもバッファプールにキャッシュできるページの最大数を決定します。バッファプール拡張によってコミットできる最大メモリは、それらが重大なメモリプレッシャーを引き起こす場合に備えて、マシン上で実行されている他のアプリケーションによって制限される可能性があります。

  • チェックポイント :チェックポイントは、予期しないシャットダウンまたはクラッシュ後のリカバリ中に、データベースエンジンがトランザクションログに含まれる変更の適用を開始できる既知の良好なポイントを作成します。チェックポイントは、ダーティページとトランザクションログ情報をメモリからディスクに書き込み、トランザクションログに関する情報も記録します。

  • 直接アクセス(DAX) :DAXはメモリのように動作して、レイテンシを最小にします。アプリは、スタックをバイパスして永続メモリを直接変更します。このオプションはNTFSでのみ使用できます。

次の画像はDAXを示しています:

MicrosoftSQLServerハイブリッドバッファプールの使用

ソース :https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/deploy-pmem

ハイブリッドバッファプールとは何ですか?

従来のシステムでは、SQLServerはデータページをDRAMベースのバッファプールにキャッシュします。ハイブリッドバッファプールを使用すると、SQL ServerはページをバッファプールのDRAMベースの部分にコピーすることをスキップし、代わりにPMEMデバイス上にあるデータベースファイルでページを直接参照します。システムは、メモリマップドI / Oを使用して、ハイブリッドバッファプールのPMEM内のデータファイルにアクセスします。これは、SQLServer内のデータファイルのエンライトメントとも呼ばれます。

このプロセスは、ページのDRAMへのコピーを回避し、オペレーティングシステムのI / Oスタックが永続ストレージ上のページにアクセスする必要をなくすことにより、パフォーマンス上の利点をもたらします。

システムは、PMEMデバイス上のクリーンなページにのみ直接アクセスできます。ページがダーティになると、システムはそのページをDRAMベースのバッファプールにコピーしてから、PMEMデバイスに書き戻します。このプロセスは、通常のチェックポイント操作中に発生します。

ハイブリッドバッファプール機能は、Windows®とLinux®の両方で利用できます。 PMEMデバイスは、DirectAccess(DAX)をサポートするファイルシステムでフォーマットする必要があります。DAXは、次のファイルシステムをサポートします。

  • 拡張ファイルシステム(XFS)
  • EXT4
  • 新技術ファイルシステム(NTFS)

SQL Serverは、データファイルが適切にフォーマットされたPMEMデバイス上にあるかどうかを自動的に検出し、ユーザースペースでメモリマッピングを実行します。このマッピングは、起動時、新しいデータベースが接続、復元、または作成されたとき、およびデータベースに対してハイブリッドバッファプール機能が有効になっているときに発生します。

ハイブリッドバッファプールを有効にする

SQL Server 2019では、ハイブリッドバッファープールを制御するための動的データ言語(DDL)が導入されています。次の例では、SQLServerのインスタンスのハイブリッドバッファプールを有効にします。

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

デフォルトでは、ハイブリッドバッファプールはインスタンススコープで無効に設定されています。

:設定の変更を有効にするには、SQLServerインスタンスを再起動する必要があります。再起動すると、サーバー上のPMEMの総容量を考慮して十分なハッシュページを簡単に割り当てることができます。

次の例では、特定のデータベースのハイブリッドバッファプールを有効にします。

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;

デフォルトでは、ハイブリッドバッファプールはデータベーススコープで有効になるように設定されています。

ハイブリッドバッファプールを無効にする

次の例では、SQLServerのインスタンスのハイブリッドバッファプールを無効にします。

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

デフォルトでは、ハイブリッドバッファプールはインスタンススコープで無効に設定されています。

:設定の変更を有効にするには、SQLServerインスタンスを再起動する必要があります。サーバー上のPMEMcapacityを考慮する必要がないため、再起動によりハッシュページの過剰割り当てが防止されます。

次の例では、特定のデータベースのハイブリッドバッファプールを無効にします。

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

デフォルトでは、ハイブリッドバッファプールはデータベーススコープで有効になるように設定されています。

ハイブリッドバッファプールの構成を表示する

次の例は、SQLServerのインスタンスのハイブリッドバッファープールシステム構成の現在のステータスを返します。

SELECT * FROM sys.configurations WHERE     name = 'hybrid_buffer_pool';

次の例では、2つのテーブルが返されます。

SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';

SELECT name, is_memory_optimized_enabled FROM sys.databases;
  • 最初の表は、SQLServerのインスタンスのハイブリッドバッファプールシステム構成の現在のステータスを示しています。
  • 2番目の表は、ハイブリッドバッファプールのデータベースとデータベースレベルの設定を示しています。
ハイブリッドバッファプールのベストプラクティス

RAMが16GB未満のインスタンスではハイブリッドバッファプールを有効にしないことをお勧めします。

WindowsでPMEMデバイスをフォーマットするときは、NTFSで使用可能な最大の割り当て単位サイズ(WindowsServer®2019では2 MB)を使用し、デバイスがDAX用にフォーマットされていることを確認してください。ファイルサイズは2MBの倍数である必要があります(モジュロ2 MBはゼロに等しい必要があります)。

ハイブリッドバッファプールのサーバースコープ設定が無効に設定されている場合、ハイブリッドバッファプールはどのユーザーデータベースでも使用されません。

ハイブリッドバッファプールのサーバースコープ設定が有効になっている場合、それらのユーザーデータベースのデータベーススコープレベルでハイブリッドバッファプールを無効にすることで、個々のユーザーデータベースのハイブリッドバッファプールの使用を無効にできます。

結論

ハイブリッドバッファプールを使用すると、PMEMデバイスに保存されているデータベースデータページに直接アクセスできます。ページをDRAMにコピーする必要がなく、オペレーティングシステムのI / Oスタックが永続ストレージ上のページにアクセスする必要がないため、システムパフォーマンスが向上します。

詳細については、次のドキュメントを参照してください。

Microsoftが最新のSQLServer2019プレビューとAzureSQLの改善ハイブリッドバッファープールについて説明

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。

専門家による管理、管理、構成で環境を最適化する

Rackspaceのアプリケーションサービス(RAS) 専門家は、幅広いアプリケーションポートフォリオにわたって次の専門的かつ管理されたサービスを提供します。

  • eコマースおよびデジタルエクスペリエンスプラットフォーム
  • エンタープライズリソースプランニング(ERP)
  • ビジネスインテリジェンス
  • Salesforceの顧客関係管理(CRM)
  • データベース
  • メールホスティングと生産性

お届けします:

  • 偏りのない専門知識 :私たちは、即時の価値を提供する機能に焦点を当てて、お客様の近代化の旅を簡素化し、導きます。
  • 狂信的な経験 ™:最初にプロセスを組み合わせます。テクノロジーセカンド。包括的なソリューションを提供するための専用のテクニカルサポートを備えたアプローチ。
  • 比類のないポートフォリオ :豊富なクラウドエクスペリエンスを適用して、適切なテクノロジーを適切なクラウドに選択して導入できるようにします。
  • アジャイルデリバリー :私たちはあなたがあなたの旅の途中であなたに会い、あなたの成功と一致します。

今すぐチャットして始めましょう。


  1. SQLServerのメモリ最適化テーブルからのメモリプレッシャーアラートを処理する

    Microsoft SQL Serverは、メモリ管理の点で非常に優れていますが、メモリプレッシャーアラートやデータベースエンジンがより多くのメモリを要求し、エラーが発生する場合があります。 はじめに この投稿では、メモリ最適化テーブル(インメモリオンライントランザクション処理(OLTP))によって引き起こされるSQLServer®2019(Enterprise Edition)のメモリプレッシャーが原因で発生する可能性のある例外的なシナリオの1つを解決する方法について説明します。同じ手順がSQLServer2014以降にも適用されます。 画面に次のエラーメッセージが点滅する場合があります

  2. MS Access から SQL Server データベースにデータを移行する

    最近、データベースが大きくなりすぎて Access で処理できなくなったため、Access データベースから SQL Server 2014 にデータを移行する必要がありました。プロセスはかなり単純ですが、段階的な手順を記載した記事を書こうと思いました. まず、コンピューターに SQL Server または SQL Server Express がインストールされていることを確認する必要があります。 PC に SQL Server Express をダウンロードする場合は、必ず Advanced Services を含むバージョンをダウンロードしてください。 .そうしないと、データベース エ