web-dev-qa-db-ja.com

SQL Server Standard 2017が、ドキュメントに記載されている制限よりも多くのメモリを使用しているのはなぜですか?

ドキュメンテーションは言う:

例:SQL ServerのStandard Editionのバッファープールメモリは128GBに制限されているため、バッファープールにキャッシュされるデータとインデックスページは128GBに制限されます。 SQL Server 2016 SP1以降、Columnstoreセグメントキャッシュ用にインスタンスごとに32 GBのメモリを追加し、インメモリ用に32 GBのメモリクォータを追加することができますOLTPデータベースごとに。さらに、 SQL Serverの他のメモリコンシューマによって消費されるメモリ。これは、「最大サーバーメモリ」または最大サーバーメモリに上限が設定されていない場合のサーバー上の合計メモリによって制限されます。

列ストアを使用しているので、SQL Serverは128 + 32 GBのメモリを使用することで制限されると思います。メモリ最適化テーブルは使用されません。

しかし、実際には215 Gb以上がバッファプールに使用されています。 enter image description here

記憶係 enter image description here

全体的なSQLプロセスには、約300 GBかかります。 enter image description here

sys.dm_os_process_memoryから*を選択します

enter image description here

最大メモリを360Gbに設定。サーバーは380Gbです。

何が欠けていますか?

バージョン:

Microsoft SQL Server 2017(RTM-CU14)(KB4484710)-14.0.3076.1(X64)
2019年3月12日19:29:19 Copyright(C)2017 Microsoft Corporation Standard Edition(64-bit)on Windows Server 2016 Standard 10.0(Build 14393:)(Hypervisor)

UPDATE(2019-04-26)これは興味深いことです-MEMORYCLERK_SQLBUFFERPOOLは2つのレコードによって提示されます。行#3は、Standard Editionで表示されるはずです。しかし、最初の行は何ですか?サーバーには、合計48コアの2つのプロセッサーがあります。 buffer pool

6
Alex Bochkov

ドキュメントを見逃したと思います。下の画像で強調表示されている点をご覧ください

enter image description here

メモリ最適化テーブルが使用するメモリは、32 GB PER DATABASEです。

したがって、SQL Server Standard Editionに列ストアインデックスがあり、メモリが最適化されたテーブルが3データベースにあるとします。

使用可能な最大メモリは

128 + 32 +(3 * 32)= 256 GB。

メモリ最適化テーブルを使用しているデータベースの数について教えてください。 128 GBの制限はバッファプールのみです。

2
Shanky