0

Cassandra に付属の JDBC ドライバーを使用する prepareStatement を持つ Java メソッドがある場合、常に遅いことに気付きました。しかし、メソッドに同じクエリを 2 回入れると、2 回目は 20 倍速くなります。何故ですか?2 回目、3 回目、4 回目に Java メソッドを呼び出すと、最初のメソッドよりも高速になると思います。Cassandra 1.2.5 を使用しています。また、行キャッシュに 100MB の行をキャッシュし、テーブルを caching = "all" に設定しました。Cassandra-cli で設定を確認しました。そして、Cassandra-Cli で、2 回目、3 回目、4 回目に同じテーブルから行を取得することを確認しました。JDBC 呼び出しを実行すると、応答時間が短縮されます。何か案は?

ありがとう - トニー

4

1 に答える 1

0

すべてを知っているCQL3ドキュメントから(常に素晴らしい出発点です):

準備されたステートメントは、クエリを 1 回だけ解析し、異なる具体的な値で複数回実行できるようにする最適化です。

ステートメントはキャッシュされます。これがあなたが経験している違いメーカーです。また、準備されたステートメントは事前にコンパイルされます。これは通常、クエリがデータベースに対して実行される前に実行計画が準備されることを意味します。自分が何をしているかを知ることで、プロセスが速くなります。

最初の実行時に、同じクエリを再度実行する場合に備えて、準備されたステートメントがキャッシュされます。キャッシュされるため、クエリははるかに高速に実行されます。

于 2013-06-24T08:52:49.247 に答える