重いロードされたデータベースとクエリでサブ選択を使用して何を考慮すべき?
質問
我々は、バックエンドストレージとしてOpenJPA1.1およびOracle DBを使用して永続化層を使用してアプリケーションを開発しています。私は解決で私の質問を参照してください(サブセレクトでクエリを使用しますJPAクエリ)接続されているリストするの最後のエントリを見つけます。
これで私の同僚の仕事の発言では、データベースは(生産の現実になります)、数千人の同時ユーザーが使用する顧客日、数千で満たされているようなクエリがパフォーマンスの問題を引き起こす可能性があること。
だから、私の質問は:このような状況下で、クエリ内の「ベストプラクティス」を使用してsubselects
はありますか?そして、これを行うことによって考慮されなければならないでしょうか?
解決
私が最初にそれが問題だということを証明します。あなたは、ダミーデータでデータベースを上にロードし、データベースが大きくなるにつれて、あなたのクエリが実行方法を確認したいと思います。そうしないとあなたは問題ではないかもしれない何かを最適化する時間を費やしている。
一つのことは考えています。物事がバラバラになる私が働いてきたすべての場所では、何千ものレコードが、何百万人ではありません。あなたは、このシステムを持っている、それはしばらくの間、正常に動作して、ちょうどあなたがそれをより多くのハードウェアを投げるさえも遅く開始します。私は今働いている場所が戻っていくつかのクエリのパフォーマンス1998年に彼の履歴テーブルの出会い系では約70万レコードを持っている結果として恐ろしいです、彼らはこれらの問題を回避作業に多くの時間を費やしている。
しかし、いくつかの点であなたが本当に依頼する必要があります。私達は私達の取引システムでは4歳以上のデータを保持する必要がありますか?あるいは4ヶ月?この時間制限は、あなたのビジネスの必要性に依存していますが、トランザクションの進行中の作業を処理するのに必要なデータのみを使用してシステム...とアーカイブがデータウェアハウスにあなたの歴史的な記録を保持している場合。チャンスはあなたがその古いデータを照会する必要がたまにしかこれだけですので、なぜあなたの最近のデータでそれを維持しているので、あなたは、あなたの全体的なパフォーマンスを向上させるでしょう?
あなたはこのアップフロントを考える場合は、、あなたは頭痛長期の多くを保存します。