1. ホーム
  2. データベース
  3. mssql2008

SQL Server 2008 R2のCPUとメモリ使用量の増加に対する2つの解決策

2022-01-08 22:56:36

SQL Server 2008 R2の実行時間が長くなると、メモリがより多く消費されるようになります。

まず

以上の分析結果で、SQL Server 2008 R2 のデータベース・サービスを定期的に再起動し、タスク・プランを使って以下のバッチ・プロセスを定期的に実行するだけで、簡単に解決できることがわかりました。

net stop sqlserveragent
net stop mssqlserver
net start mssqlserver
net start sqlserveragent

2枚目

Sql server Enterprise Manager(データベースとテーブルの管理用、これは知らなくても下を見る必要はない)へ行き、データベースサーバー名を【右クリック】して【プロパティ】を選び、【メモリ】を見つけ、右側の【AWEを使用してメモリを確保】の左側にチェックマークを入れる(sqlServer64はチェックマークは必要ないはずです)。最大サーバーのメモリ(MB)で適切なサイズを記入(記入どのように大きく、確かにコンピュータの物理メモリよりも、もちろん、あなたもタスクマネージャで確認することができます、sqlserver.exeはどのくらい占めて、システムは参考として遅くなります)、単位としてM(メガバイト)を覚えて、ポイントOK、Sqlサーバーを再起動します![OK]をクリックします。

SQL Server の CPU 使用率が高い場合の解決策

SQL Server の CPU 使用率が高い原因は、通常、大量のクエリデータと長い実行時間です。

ここでは、異常なsqlを簡単に見つけるためのデバッグ方法を提供します。

1. SQL Server プロファイラを開く

2. 新しいトレース

a. New Trace をクリックし、データベース接続を設定します。

b.トレースのプロパティを設定し、テンプレート「Standard"」を選択します。 

c.トラッキングの設定を行うために、quot;Event Selection"に切り替えます。

 1) 次の2つのイベントオプションだけを残す

 2) 列のフィルタをクリックする

 3) フィルタリングの詳細設定を行う

    CPU時間をフィルタリング条件としてミリ秒単位で設定(CPU使用時間が長いクエリを追跡するため、CPUコア数×1000で20000以上に設定でき、CPU使用率が100%のクエリを1秒以上追跡することが可能)。

3. 3. 実行をクリックしてステートメントをトレースし、より多くのCPUを使用しているステートメントを特定します。

下図のように、CPUの占有時間は2660146ミリ秒、CPUは24コアなので、少なくともCPU占有率100%では、該当する操作の実行に2660146/24/1000=110秒かかります

4. 文の特徴からサーバープログラム内の適切な関数を探し、修正する。

4.1) 大量のデータを取得する必要があるクエリの部分を分析し、簡単な修正を行う (ログアウトなど)

4.2) 更新後にこのクエリを再実行し、プロファイラでCPU使用率がなくなるかどうかを確認します。

4.3) CPU使用率がまだ高い場合は、変更をロールバックし、4.1を続行します。

追加情報です。

SQL Server 2008 R2は、実行時間が長くなるほど、メモリを多く消費します。

まず
以上の分析結果から、SQL Server 2008 R2 のデータベース・サービスを定期的に再起動し、タスク・プランを使って以下のバッチ処理を定期的に実行するだけで、簡単に解決できることがわかりました。

<ブロッククオート

ネットストップ sqlserveragent
net stop mssqlserver
net start mssqlserver
net start sqlserveragent

2つ目

Sql server Enterprise Manager(データベースとテーブルの管理用、これは知らなくても下を見る必要はない)へ行き、データベースサーバー名の上で[右クリック]して[プロパティ]を選び、[メモリ]オプションを見つけて、右側の[AWEを使ってメモリを確保]の左側にチェックマークを入れる(sqlServer64はチェックマークは必要ないはずです)。最大サーバーのメモリ(MB)で適切なサイズを記入(記入どのように大きく、確かにコンピュータの物理メモリよりも、もちろん、あなたもタスクマネージャで確認することができます、sqlserver.exeはどのくらい占めて、システムは参考として遅くなります)、単位としてM(メガバイト)を覚えて、ポイントOK、Sqlサーバーを再起動します![OK]をクリックします。