Feature #1122

group演算で可変長カラムへのアクセスをシーケンシャルに行いたい

Added by daijiro MORI almost 7 years ago. Updated over 4 years ago.

Status:要仕様議論Start date:10/11/2011
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:アイスボックス

Description

group演算で、該当するレコードの可変長カラムの値が格納されている位置のみを取り出してソートしてからアクセスしたらシーケンシャルアクセスになって爆速になるんじゃないか説

まずは検討から。

History

#1 Updated by Susumu Yata almost 7 years ago

group 演算で取り出した ID のリストが昇順になっていたとしても,可変長のカラムでは実体が ID 昇順に配置されているという保証がないため,各 ID について個別にアクセスしていくと,内部ではランダムアクセスになってしまう恐れがあります.

この問題を解決するため,各 ID から実体の位置情報を参照し,位置情報のリストをまず作成するようにします. 後は,位置情報のリストを整列してから実体にアクセスすることにより,シーケンシャルに近いアクセスが可能になることが期待されます.

ほんまかいな.

#2 Updated by Susumu Yata almost 7 years ago

  • Status changed from 新規 to 要仕様議論

#3 Updated by daijiro MORI almost 7 years ago

これは確かに効きそうな気がします!!

#4 Updated by Susumu Yata over 6 years ago

grn_obj_get_values() に関する実験結果を見る限り,ディスクに対するランダムアクセスが発生する状況でなければ,ソートのコストとソートによる効率化はどちらも無視できるのではないかと思います.少なくとも,数値を格納しているカラムについては,ソートより値を取り出す方に時間がかかってしまうというのが現状です.

さらには,特殊な状況でなければ実体の配置はほぼ昇順になるはずなので,効率化できる機会はかなり限定的になるだろうと予想されます.

#5 Updated by daijiro MORI about 6 years ago

  • Project changed from Groonga Internal to Groonga

#6 Updated by daijiro MORI about 6 years ago

  • Target version set to groonga-command-1

#7 Updated by daijiro MORI over 4 years ago

  • Assignee deleted (Susumu Yata)
  • Target version changed from groonga-command-1 to アイスボックス

Also available in: Atom PDF