0

It's my belief that many people run into this problem: from a frontend JSP page, a user set up some criteria based on which a SQL is constructed and used to retrieve results from one or more database table(s). The issue is, this table grows by 1 mill per day and becomes gigantic.

I know there is not a definite answer to this question: how can we do to expedite this procedure? Indexing might be one (which I heard a lot but know little about), and another thing on my mind is to use some customized caching solution such as Gigaspace. Will Hibernate help in this case?

Anyone else wanna add their 2 cents?

Thanks a lot! John

4

2 に答える 2

2

そうですね、データベースにインデックスを付ける必要があります。

データベースにインデックスを付けていない場合は、データベースに適切にインデックスを付ける方法について少し読むことから始める必要があるでしょう。

そうすれば、データベース テーブルの何百万行もの行数自体は重要ではありません。適切なデータベース システムの存在理由は、何百万行もあるテーブルに対処することです。ただし、何百万もの行から実際に取得される行の指定が適切であり、問​​題のクエリが適切なインデックスから外れる可能性があることを確認する必要があります (たとえば、ユーザーが入力したパラメーターにより、それらを絞り込むため)。「インデックスを追加する」ことは必ずしも魔法の万能薬ではありません。データベースにヒットするまでにクエリが最終的にどのように見えるかに適したインデックスが追加されていることを確認する必要があります。

(a)実際にそれらが必要であることを実際に確認し、(b)追加するレイヤーが解決することを実際に確認できるようになるまで、私は個人的に偽のキャッシュやその他の複雑なレイヤーを追加する道をたどりません。彼らに解決してほしい問題。データベースのインデックス作成にまだ慣れていない場合は、単純で適切に最適化されたソリューションを構築し、そこから取得することから始めます。

于 2011-06-26T15:58:58.543 に答える
1

その量のデータまたはそのファクションでさえ、インデックスは必須です! 1 つの戦略ですべてのユースケースをカバーすることはできないため、他の回答に関する限り、それはその量のデータをどうするかによって大きく異なります。

于 2011-06-26T16:30:22.817 に答える