テスト用に、WinServer2012R2とSQL Server Express 2016を10日以上前にインストールしました。私はこのマシンの唯一のユーザーです。 SQL Server 2005の.bakが250MB以下のデータベースは問題なく復元されます。マシンの再起動後、プロセス「SQL Server NT-64ビット」は0%のCPUを使用します。
数分または数時間後、SSMSのCPU使用率 "SQL Server NT-64ビット"からの単純なクエリ(更新/挿入なし!)が突然15%に急上昇し、アイドル状態でもそこにとどまります。その時点から、通常1秒もかからないクエリは、突然2分かかります。実際のクエリ中、CPU使用率は増加しません。この状態では、サーバーは実質的に使用できなくなります。
SQL Serverプロファイラーの接続のみに30秒以上かかります。自分のクエリの他に、SQLServerCEIP/SQLTELEMETRYからのクエリはごくわずかしかありません。
SQL-Serverを再起動しても解決しません。 CPU使用率は15%に戻ります。時間後でもSQL-Serverは回復しません。マシン全体を再起動するだけで問題が解決します。
これは「すぐに使える」インストールなので、小さなデータベースしかなく、クエリはほとんどなく、ユーザーとしての私だけで、おそらくロックはありません。通常のSQL-Serverパフォーマンスの問題に関する多くの記事は、多くのことについて語っていますここでは実際には適用されません。 SQL-Server exclusivelyが内部タスクに集中したいようです。
これは2GBの仮想マシンですRAMおよび2GHzのデュアルXeon。私はVS2016も搭載しており、非常に高速です。アンチウイルスはなく、Windows Defenderもありません。すでにここで遅くなっています。 sp_whoisactive tomorrow。私は本当に何がSQL-Server ISそこにやっているのだろう... 1 GBの以前のマシンでは、同じDBがSQLServer2005の下で10年間問題なく動作しました...
私はSQLプロファイラーのエキスパートではありません。どこから探したらいいですか?
CPU使用率が低い(そしてCPUセットが優れている)ため、最初にメモリの負荷をチェックします。 SQL Express 2016では、メモリは1410 MBに制限されていますが、VMは2GBしかありません。VM 1GBのメモリを増やして、それが役立つかどうかを確認してください。メモリがファイルにページングされているかどうか、SQL Serverログを確認することもできます。
それが機能しない場合は、データベース設定LEGACY_CARDINALITY_ESTIMATIONをONに設定してみてください。参照: SQL Server 2016の古いCEでDB互換性レベル130を使用 。私たちはいくつかのアップグレードでこれに遭遇しました。結果はデータベースごとに異なります。