メモリ最適化データ ファイルグループ コンテナーの空き領域

Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent (UnitMonitor)

このモニターは、メモリ最適化データ ファイルグループ コンテナーの使用可能なディスク領域が警告しきい値の設定を下回るときに、警告を報告します。しきい値は、メモリ最適化データ ファイルグループ コンテナーのサイズとディスクの空き領域の合計に対する割合で表されます。このモニターは、使用可能な領域が重大しきい値を下回ったときに重大アラートを報告します。

Knowledge Base article:

概要

このモニターは、メモリ最適化データ ファイルグループ コンテナーの使用可能なディスク領域が警告しきい値の設定を下回るときに、警告を報告します。しきい値は、メモリ最適化データ ファイルグループ コンテナーのサイズとディスクの空き領域の合計に対する割合で表されます。このモニターは、使用可能な領域が重大しきい値を下回ったときに重大アラートを報告します。

メモリ最適化データ ファイルグループ コンテナー フォルダーは通常、より多くのデータがメモリ最適化データ テーブルに追加されるにつれて、時間の経過と共に増大します。管理者は、保存場所にコンテナー フォルダーのための十分な領域を確保するためにモニターを行います。

原因

データベースの保存場所が構成されているドライブの使用可能なディスク領域が小さくなりすぎると、障害が発生し、データの処理の失敗やユーザーのクエリの遅延が発生したり、ディスク領域の同じ割り当てを共有するその他のアプリケーションに影響を与えたりする可能性があります。

ストレージは、永続的なメモリ最適化テーブル上の DML 操作の一部として割り当てられます。永続的なメモリ最適化テーブルのメモリ最適化データのサイズの最大で 4 倍のストレージを構成する必要があります。ストレージを適切に構成しても、ストレージの空き領域が足りない状態になる場合は、コンテナーによってサポートされている IOPS が、ワークロードの要求をサポートできなくなる可能性があります。コンテナーに関して一般的にお勧めされるのは、データ ファイル/デルタ ファイルの最初の作成と自動マージ操作 (ソース データ ファイル/デルタ ファイルを読み込んでからターゲット CFP にマージする必要がある) に関係するデータ生成の速度の 3 倍の IOPS をサポートすることです。

解決方法

使用可能なディスク領域が少なくなる問題に対する解決策は、その根本原因に応じて異なるため、この問題が発生した事例ごとに調査する必要があります。次に例を挙げる多くの解決策のいずれかにより、状況が軽減されることがあります。

上書き可能なパラメーター

名前

説明

既定値

アラートの優先順位

アラートの優先度を定義します。

標準

アラートの重大度

アラートの重要度を定義します。

エラー

Azure 最大ファイル サイズ (MB)

Azure の BLOB ストレージに格納されているデータ ファイルの最大サイズです。ワークフローでは、各ファイルの最大ストレージ容量としてこの値が考慮されます。

1048576

重大のしきい値

このモニターは、値がこのしきい値を下回った場合に、状態を重大に変更します。

10

有効

ワークフローを有効または無効にします。

はい

アラートを生成する

ワークフローがアラートを生成するかどうかを定義します。

はい

間隔 (秒)

ワークフローを実行する定期的な実行間隔 (秒)。

900

同期時刻

24 時間形式で指定した同期時刻。省略可能です。

 

タイムアウト (秒)

ワークフローが終了して失敗とマークされるまでの、ワークフローの許容実行時間を指定します。

300

データベース接続のタイムアウト (秒)

指定された期間中にデータベースにアクセスできない場合、ワークフローは失敗し、イベントが登録されます。

15

警告しきい値

このモニターは、値がこのしきい値を下回った場合に、状態を警告に変更します。

20

Element properties:

TargetMicrosoft.SQLServer.Windows.Container
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Container.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
Windows 上の MSSQL: メモリ最適化データ ファイル グループ コンテナーの空き領域が不十分です
メモリ最適化データ ファイル グループ コンテナー "{0}" で使用可能なのは空き領域の {6}\% のみであり、これはアラート用に構成されたしきい値を下回ります。
サーバー: {4}
SQL Server インスタンス: {3}
データベース: {2}
ファイル グループ: {1}
コンテナー: {0}
ディスク サイズ: {5} MB
メモリ最適化データ ファイル グループ コンテナーの空き領域: {7} MB ({6}\%)
メモリ最適化データ ファイル グループ コンテナーのサイズ: {8} MB
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Container" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Container.FreeSpacePercent" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</AlertParameter3>
<AlertParameter4>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Filegroup"]/GroupName$</AlertParameter4>
<AlertParameter5>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='DiskTotalSizeMB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='FreeSpacePercent']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='FreeSpaceMB']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='AllocatedSizeMB']$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="ContainerFreeSpaceCritical" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="ContainerFreeSpaceWarning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="ContainerFreeSpaceSuccess" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<FileName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</FileName>
<AzureMaxFileSizeMB>1048576</AzureMaxFileSizeMB>
<CriticalThreshold>10</CriticalThreshold>
<WarningThreshold>20</WarningThreshold>
<ConnectionString>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>