最近、これまでにわかっている1つのクエリでOracleデータベースがロックされるという問題が発生しています。
何が起こっているのかを分析しますが、実際には私の質問とはあまり関係がありませんが、提案は受け付けています。
断続的にいつ発生するかわからない、過去1か月間に4回発生した、ユーザーがアプリケーション内の何かをクリックします。ユーザーが何をクリックしているかはまだ不明です。クリックすると、データベースに対してクエリが実行され、約70万行が生成されます。
クエリが実行されているテーブルを確認しましたが、インデックスは良好に見えます。
データベースは60GBで、サーバーには32GBがあります。
データベースサーバーのログから、I/Oが高いことがわかりますが、CPUとRAMは同じままです。
アプリケーションサーバーの1つであるCPUは、最大で約75%になります。ワーカープロセスを見つけてPIDを見つけることができますが、ワーカープロセスに関連付けられているPIDを強制終了すると、CPUが一時的にダウンしてから、すぐに元に戻ります。
また、アプリケーションプールをリサイクルし、IISを再起動すると同じことが行われます。CPUは一時的にダウンしてから、すぐに元に戻ります。
サーバーを元の状態に戻すために実行できる唯一のことは、再起動です。
したがって、このクエリがロックアップの原因である場合は、ボックスのメモリを増やして、データベースをキャッシュしてメモリを使い果たすことができるようにすることをお勧めします。私はこれを一度聞いたが、それが本当かどうかはわからない。
ストレージは3層のHPPAR 3であり、データベースはほとんどSSD層にあります。
SSDとメモリのどちらが速いか
SSDとメモリのどちらが速いか
DRAMはNANDフラッシュよりも高速です。 A RAMアクセスは100nsのオーダーですが、SSDは約16,000 nsをランダムに読み取ります。 すべてのプログラマーが知っておくべきレイテンシー番号
何が起こっているのか、そしてその理由を体系的に分析する必要があります。別のシステムについて何かを中古で聞いたという理由だけで物事を変えないでください。このシステムの問題点を見つけてください。
幸い、DBMSシステムにはパフォーマンスツールが備わっている傾向があります。 Oracleおよびその他のRDBMSにはEXPLAIN PLAN
フルスキャンやその他の非効率性を表示します。クエリは、インデックスを使用してもひどく実行できます。ボトルネックを見つけるためのOracleAWRなどのシステムパフォーマンスレポートもあります。 DBのパフォーマンスについてさらに問い合わせたい場合は、姉妹サイト https://dba.stackexchange.com/ に問い合わせることもできます。