web-dev-qa-db-ja.com

SQL Server Productionの最大メモリ設定を増やす

5つのインスタンスがオンになっているプロダクションボックスがあります。

バージョン:SQL Server 2014 SP3 Enterprise。

マシンに約400GBのメモリが割り当てられていても、5つのインスタンスすべてでのMAX MEMORYの設定の合計が200GB未満であることがわかりました。

インスタンスはメモリのプレッシャーに悩まされることはありませんが、すでにそのメモリが割り当てられているため、使用しないのは無駄です。

OSに10%を残して、より高い値に増やしたいと思います(一部のインスタンスは他のインスタンスよりも高く割り当てられます)。

ただし、この設定をこれほど大幅に増加したことはありません。

再起動を必要としない動的な設定であることはわかっていますが、以下について疑問に思っています。

  • 2段階で増やす必要がありますか(つまり、金額の半分を増やし、1週間待ってから、もう一度増やします)?
  • SQLサーバーが突然メモリを多く使用すると、何かが突然壊れる(またはパフォーマンスが低下する)ことがありますか?

メモリ内のページのロック設定を有効にしておらず、traceflag 834をオンにしていません

7
Roni Vered

少し違う意見があります。

メモリ不足が発生しておらず、アプリケーションが正常に機能している場合は、なぜ不明な変数を導入するのですか(SQLサーバーの最大メモリを増やしている場合など)。この変更をテストしていないため、リスクがあります。

サーバーの帯域幅が広い場合は、サーバー上のインスタンスの統合を検討できます。

SQLサーバーが突然メモリを大量に使用すると、何かが突然壊れる(またはパフォーマンスが低下する)ことがありますか?

はい、そして メモリが多いPROD でパフォーマンスの低下の問題に直面し、TF 2335を使用して問題を修正しました。

あなたは読むことができます 詳細についてはポール​​の答え しかし要点は次のとおりです:

バッファープールの潜在的なサイズも、データアクセスのオプティマイザーのコストモデルに影響します。

1
Kin Shah

SQL Serverの最大サーバーメモリはいつでも変更できますが、SQL Serverプランを変更すると、データやその他のキャッシュがフラッシュされます。これは、SQL Serverにヒットする新しいクエリが、クエリプランの作成プロセスを通過することを意味します。したがって、reallyを実行する場合は、最大サーバーメモリを変更することを関係者に通知し、負荷が比較的非常に少ないときに実行するようにします。また、コールドキャッシュが原因で、最初の実行中に実行されるクエリの数が少ない可能性があることも伝えてください。

2段階で増やす必要がありますか(つまり、金額の半分を増やし、1週間待ってから、もう一度増やします)?

承認を得て、負荷が比較的少ない場合は、段階的に行う必要はありません。

SQLサーバーが突然メモリを多く使用すると、何かが突然壊れる(またはパフォーマンスが低下する)ことがありますか?

キャッシュはフラッシュされるため、最初の実行時に実行に時間がかかるクエリがいくつか開始される可能性があります。

メモリ設定でページのロックを有効にする必要はありません。

5つのインスタンスを実行している場合は、特にそうすることをお勧めします。なんらかの不正なクエリ/プロセスが原因で、インスタンスがすべてのメモリを占有することは許可されません。すべてのSQL Serverインスタンスに上限を設定することをお勧めします。また、SQL Serverが最大制限を超えて消費する場合があることに注意してください。 LPIMを追加するには「SQL Serverの再起動」が必要です

理想的な状況: LPIMを追加することを計画していて、その時点で最大サーバーメモリを変更した場合、問題は発生しないため、時間がかかります。

0
Shanky