- PR -

全文検索機能Ludiaについて

1
投稿者投稿内容
KKF
常連さん
会議室デビュー日: 2008/03/09
投稿数: 24
投稿日時: 2008-08-02 10:31
お世話になっております。
現在、下記、環境でとあるサイトを構築し、そこで全文検索機能を利用しています。
[環境]
・OS:LUNIX
・DB:PostgreSql8.3.1
・全文検索エンジン:Ludia1.5.0 (mecab-0.97 ipadic-2.7.0 senna-1.1.2)

そこで質問なのですが、検索用のSQL文を流すときに、検索ワードの違いでかなりの処理スピードが異なってきます。
色々と調べたところ、検索結果件数が多ければ多いほど処理速度が速く、
検索結果件数が少ないほど処理速度が遅いように感じます。

また、同じSQLを2回以上流すと、1回目の処理速度は遅く、2回目以降はかなりやはくなります。

どんな検索ワードでも、処理速度を統一したいのですが、どこか設定を変更するのでしょうか?
また、一回目から処理速度を上げたいのですが、どのようにすればいいのでしょうか?

申し訳ありませんが、ご教示お願い致します。


[ メッセージ編集済み 編集者: JDOG 編集日時 2008-08-02 10:33 ]

[ メッセージ編集済み 編集者: JDOG 編集日時 2008-08-03 12:38 ]

[ メッセージ編集済み 編集者: JDOG 編集日時 2008-08-11 17:38 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-04 03:00
引用:

色々と調べたところ、検索結果件数が多ければ多いほど処理速度が速く、
検索結果件数が少ないほど処理速度が遅いように感じます。


どういうクエリを投げているか知りませんが、
感じるのではなく、具体的な実行プランを見ましょう。
引用:

また、同じSQLを2回以上流すと、1回目の処理速度は遅く、2回目以降はかなりやはくなります。


おそらくキャッシュでしょう。
引用:

どんな検索ワードでも、処理速度を統一したいのですが、どこか設定を変更するのでしょうか?


まずはSQLのボトルネックを調べましょう。
そのためにも具体的な実行プランを見るべきです。
引用:

また、一回目から処理速度を上げたいのですが、どのようにすればいいのでしょうか?


高速なCPUやストレージ、大容量のメモリを積めば、それなりに早くなりますよ。
KKF
常連さん
会議室デビュー日: 2008/03/09
投稿数: 24
投稿日時: 2008-08-04 13:10
かつのり様
返信ありがとうございます。

引用:
   どういうクエリを投げているか知りませんが、
   感じるのではなく、具体的な実行プランを見ましょう。

了解しました。ありがとうございます






[ メッセージ編集済み 編集者: JDOG 編集日時 2008-08-11 17:37 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-04 13:32
実行プランによって何が行われているか次第で、
全然設定方法が変わってきます。

実行プランをみて、何がどうボトルネックになっているのか、
それから対策を立てましょう。

テーブル定義も動作環境も実行プランもわからずに、
設定だけと言われても、全くどうにもなりませんし、
大抵はクエリのために設定を変えるよりも、
SQLとデータ構造のチューニングでどうにかなるケースが殆どです。
設定を変えなければまともに動かないSQLは、
設定よりもSQLを見直すべきということです。
KKF
常連さん
会議室デビュー日: 2008/03/09
投稿数: 24
投稿日時: 2008-08-04 14:55
かつのり様
返信ありがとうございます。

引用:
  実行プランによって何が行われているか次第で、
  全然設定方法が変わってきます。

申し訳ございませんが、実行プラントは具体的にどのようなことをいうのでしょうか?
まだまだシステムの初心者なもので申し訳ありません。

引用:
  テーブル定義も動作環境も実行プランもわからずに、
  設定だけと言われても、全くどうにもなりませんし、
  大抵はクエリのために設定を変えるよりも、
  SQLとデータ構造のチューニングでどうにかなるケースが殆どです。
  設定を変えなければまともに動かないSQLは、
  設定よりもSQLを見直すべきということです。

具体的でない質問をしてしまい、申し訳ありません。
了解いたしました。

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-04 15:10
引用:

申し訳ございませんが、実行プラントは具体的にどのようなことをいうのでしょうか?


実行プランです。

多くのRDBMSはSQL実行時にどういう方法でレコードを特定するかという、
SQLの実行の計画をたてます。
それは統計情報、レコード数、インデックス、メモリ、CPU・・・等、
様々な要因で実行プランが変化します。

で、さきほど、EXPLAINを実行しましたよね?
それが実行プランを見るためのコマンドです。
実行プランを可視化したレコードが返って来ます。

この実行プランの読み方は、
Googleなどで検索すれば色々と出てくると思います。

ちなみにEXPLAINはクエリを解析するだけで、
ANALYZEを付けると実際に実行します。
更新系のSQLの場合、実際に更新されてしまうため注意が必要です。
1

スキルアップ/キャリアアップ(JOB@IT)