2.3.1 メモリ所要量
Text Search Plug-inのメモリ所要量の見積もり方法について説明します。
(1) SGMLプラグインとn-gramインデクスプラグインの場合
(a) データ操作(文書登録)
- 単一文書登録時
-
-
分割遅延登録機能またはインデクス未定義の場合
使用メモリ[メガバイト] = fesprocess+besprocess
-
インデクス作成の場合
使用メモリ[メガバイト] = max(min(config指定メモリ×10-3,docsize×5×10-6), fesprocess+besprocess)
fesprocess =((↑dtdsize/8192↑×8192+↑norparamsize/8192↑×8192)×2+8192)×10-6
besprocess=((↑dtdsize/8192↑×8192+↑norparamsize/8192↑×8192)+docsize×5)×10-6
config指定メモリ:n-gramインデクスプラグインの環境設定項目「1件登録時最大メモリ」の設定値[キロバイト]
fesprocess:FESでの使用メモリ[メガバイト]
besprocess:BESでの使用メモリ[メガバイト]
dtdsize:DTDサイズ[バイト]
norparamsize:正規化パラメタサイズ[バイト]
docsize:登録文書サイズ[バイト]
-
- 複数文書一括登録時
-
-
差分インデクスのマージ,CREATE INDEX,分割遅延登録時のインデクス作成の場合
使用メモリ[メガバイト] = min(config指定メモリ×10-3, docsize×doccnt×5×10-6)
-
pdloadの場合
使用メモリ[メガバイト] = max(docsize×5×SGMLTEXT型定義列数×10-6, min(config指定メモリ×10-3,docsize×doccnt×5×10-6))
docsize:平均登録文書サイズ[バイト]
doccnt:登録文書数
config指定メモリ:n-gramインデクスプラグインの環境設定項目「一括登録時最大メモリ」の設定値[キロバイト]
-
(b) データ操作(文書削除)
使用メモリ[キロバイト] = 24
(c) データ操作(インデクス情報の取得ユティリティ)
使用メモリ[メガバイト] = 2
(d) データ操作(インデクスのインクリメンタルユティリティ)
使用メモリ[メガバイト] = config指定メモリ×10-3
-
config指定メモリ:n-gramインデクスプラグインの環境設定項目「一括登録時最大メモリ」の設定値[キロバイト]
(e) データ操作(インデクス詰め替えユティリティ)
使用メモリ[メガバイト] = 10
(f) データ操作(統計情報収集ユティリティ)
- 収集モード指定:normal
-
使用メモリ[メガバイト] = 5
- 収集モード指定:all
-
使用メモリ[メガバイト] =config指定メモリ×10-3
-
config指定メモリ:n-gramインデクスプラグインの環境設定項目「一括登録時最大メモリ」の設定値[キロバイト]
-
(g) データ操作(統計情報統合ユティリティ)
使用メモリ[メガバイト] = 20
(h) データ操作(統計情報反映ユティリティ)
使用メモリ[メガバイト] = 10
(i) 検索
- 差分インデクスを使用していない場合
-
-
1回の全文検索での使用メモリ[メガバイト]= min(config指定メモリ×10-3,ヒット件数×検索ターム数×↑検索ターム平均長/2↑×20×10-6)+ヒット件数×12×10-6+同義語異表記展開用メモリ+3
-
1回の概念検索での使用メモリ[メガバイト]= max (種文章数×種文章の平均長[バイト]×8×10-6,min(config指定メモリ×10-3,ヒット件数×config検索用特徴ターム数×60×10-6))+ヒット件数×12×10-6+同義語異表記展開用メモリ+3
-
- 差分インデクスを使用している場合
-
-
1回の全文検索での使用メモリ[メガバイト]= min(config指定メモリ×10-3,ヒット件数×検索ターム数×↑検索ターム平均長/2↑×20×10-6)+ヒット件数×12×10-6+同義語異表記展開用メモリ+5
-
1回の概念検索での使用メモリ[メガバイト]= max (種文章数×種文章の平均長[バイト]×8×10-6,min(config指定メモリ×10-3,ヒット件数×config検索用特徴ターム数×60×10-6))+ヒット件数×12×10-6+同義語異表記展開用メモリ+5
-
- 同義語異表記展開用メモリを使用している場合
-
-
全文検索での同義語異表記展開用メモリ[メガバイト]=((検索ターム数×↑検索ターム平均長/2↑×40+24)×平均同義語異表記展開数※+24)×10-6
-
概念検索での同義語異表記展開用メモリ[メガバイト]=((config検索用特徴ターム数×120+24)×平均同義語異表記展開数※+24)×10-6
-
config指定メモリ:n-gramインデクスプラグインの環境設定項目「検索時最大ワークメモリサイズ」の設定値[キロバイト]
config検索用特徴ターム数:n-gramインデクスプラグインの環境設定項目「検索用特徴ターム数」
注※ 平均同義語異表記展開数の見積もりについては,「4.3.6 異表記展開指定」を参照してください。
- 1SQLでプラグイン関数(contains関数,contains_with_score関数,およびconcept_with_score関数)を複数指定した場合
-
-
検索時のメモリ所要量の最大値[バイト] =「1回の検索使用メモリ×1SQL文中に記述したプラグイン関数の個数」
-
(j) 文書抽出
- 反転位置情報取得をしない場合
-
使用メモリ[メガバイト] = docsize×3×10-6
- 反転位置情報取得をする場合
-
使用メモリ[メガバイト] = docsize×8×10-6
docsize:登録文書サイズ[バイト]
(k) 1RDエリア当たりの排他制御用共用メモリ
登録・検索同時実行を実行する場合,BESまたはシングルサーバ内のn-gramインデクス用のRDエリア単位に,次のサイズの排他制御用共用メモリが必要です。この領域は,n-gramインデクス用の共用メモリ中に確保されます。
- 使用メモリ[キロバイト] = max((user_cnt×lock_obj_size×10)×10-3,8)
-
-
user_cnt:HiRDBシステムで同時に実行できるユーザ数の最大数(HiRDB環境定義pd_max_users指定値)
-
lock_obj_size :1排他オブジェクト当たりのサイズ[バイト]
-
- UNIXの場合
-
64ビット版 Text Search Plug-inの場合:48バイト
64ビット版以外のText Search Plug-inの場合:32バイト
- Windowsの場合
-
32バイト固定
(l) 共用メモリ
登録・検索同時実行を実行する場合,BESまたはシングルサーバ単位に,次のサイズの共用メモリが必要です。
- 使用メモリ[キロバイト] = max((rd_serve×8192×↓lock_size/8↓)/1024+↑(32+16× rd_serve)/8192↑×8,16)
-
-
rd_serve:1サーバ内のn-gramインデクス用RDエリア数
-
lock_size:n-gramインデクスプラグインの環境設定項目「1RDエリア当たりの排他制御用共用メモリサイズ」の設定値[キロバイト]
-
(m) 検索時最大ワークメモリサイズ
検索高速化インデクス(V2)機能を使用する場合
検索高速化インデクス(V2)機能を使用する場合の,検索時最大ワークメモリサイズ(phn_mem_search,またはphx_mem_search)に指定するメモリ使用量の目安(最低限必要な値)を次に示します。
使用メモリ[キロバイト] = (ターム数×2)※×64+( NOT検索指定数×登録データ件数/8)/1024
注※ (ターム数×2)の最大値は200です。
メモリ使用量は検索条件によって異なります。検索時最大ワークメモリサイズの指定値が大きいほど,検索性能が向上します。そのため,ここで示した値より大きな値を検索時最大ワークメモリサイズに指定することをお勧めします。
(2) FREEWORDプラグインとIXFREEWORDプラグインの場合
(a) データ操作(文字列データ登録/更新)
- 単一文字列データ登録時
-
-
分割遅延登録機能またはインデクス未定義の場合
使用メモリ[メガバイト] = fesprocess+besprocess
-
インデクス作成の場合
使用メモリ[メガバイト] = max(min(config指定メモリ×10-3,freewordsize×5×10-6),fesprocess+besprocess)
fesprocess =0
- besprocess=(docsize×3)×10-6
-
docsize:登録文書サイズ[バイト]
config指定メモリ:IXFREEWORDプラグインの環境設定項目「1件登録時最大メモリ」の設定値[キロバイト]
fesprocess:FESでの使用メモリ[メガバイト]
besprocess:BESでの使用メモリ[メガバイト]
freewordsize:登録文字列データ長[バイト]
-
- 複数文字列データ一括登録
-
-
CREATE INDEX,分割遅延登録時のインデクス作成の場合
使用メモリ[メガバイト] = min(config指定メモリ×10-3,freewordsize×freewordcnt×5×10-6)
-
pdloadの場合
使用メモリ[メガバイト] = max(freewordsize×5×FREEWORD型定義列数×10-6,min(config指定メモリ×10-3, freewordsize×freewordcnt×5×10-6))
freewordsize:平均登録文字列データ長[バイト]
freewordcnt:登録文字列データ件数
config指定メモリ:IXFREEWORDプラグインの環境設定項目「一括登録時最大メモリ」の設定値[キロバイト]
-
(b) データ操作(文字列データ削除)
使用メモリ[キロバイト] = 24
(c) データ操作(インデクス情報の取得ユティリティ)
使用メモリ[メガバイト] = 2
(d) データ操作(インデクスのインクリメンタルユティリティ)
使用メモリ[メガバイト] = config指定メモリ×10-3
-
config指定メモリ:IXFREEWORDプラグインの環境設定項目「一括登録時最大メモリ」の設定値[キロバイト]
(e) データ操作(インデクス詰め替えユティリティ)
使用メモリ[メガバイト] = 10
(f) 検索
1回の全文検索での使用メモリ[メガバイト]= min(config指定メモリ×10-3,ヒット件数×検索ターム数×↑検索ターム平均長/2↑×20×10-6)+ヒット件数×12×10-6+同義語異表記展開用メモリ+3
同義語異表記展開用メモリ[メガバイト]=((検索ターム数×↑検索ターム平均長/2↑×40+24)×平均同義語異表記展開数※+24)×10-6
-
config指定メモリ:IXFREEWORDプラグインの環境設定項目「検索時最大ワークメモリサイズ」の設定値[キロバイト]
- 注※
-
平均同義語異表記展開数の見積もりについては,「4.4.4 異表記展開指定」を参照してください。
- 1SQLでプラグイン関数(contains関数)を複数指定した場合
-
-
検索時のメモリ所要量の最大値「1回の検索使用メモリ×1SQL文中に記述したプラグイン関数の個数」
-
(g) 文字列データ抽出
使用メモリ[メガバイト] = freewordsize×3×10-6
-
freewordsize:登録文字列データ長[バイト]
(h) 1RDエリア当たりの排他制御用共用メモリ
登録・検索同時実行を実行する場合,BESまたはシングルサーバ内のIXFREEWORDインデクス用のRDエリア単位に,次のサイズの排他制御用共用メモリが必要です。この領域は,IXFREEWORDインデクス用の共用メモリ中に確保されます。
使用メモリ[キロバイト] = max((user_cnt×lock_obj_size×10)×10-3,8)user_cnt:HiRDBシステムで同時に実行できるユーザ数の最大数(HiRDB環境定義pd_max_users指定値)
-
lock_obj_size :1排他オブジェクト当たりのサイズ[バイト]
- UNIXの場合
-
64ビット版 Text Search Plug-inの場合:48バイト
64ビット版以外のText Search Plug-inの場合:32バイト
- Windowsの場合
-
32バイト固定
(i) 共用メモリ
登録・検索同時実行を実行する場合,BESまたはシングルサーバ単位に次のサイズの共用メモリが必要です。
- 使用メモリ[キロバイト] = max((rd_serve×8192×↓lock_size/8↓)/1024+↑(32+16× rd_serve)/8192↑×8,16)
-
-
rd_serve:1サーバ内のIXFREEWORDインデクス用RDエリア数
-
lock_size:IXFREEWORDプラグインの環境設定項目「1RDエリア当たりの排他制御用共用メモリサイズ」の設定値[キロバイト]
-
(j) 検索時最大ワークメモリサイズ
検索高速化インデクス(V2)機能を使用する場合
検索高速化インデクス(V2)機能を使用する場合の,検索時最大ワークメモリサイズ(phn_mem_search,またはphx_mem_search)に指定するメモリ使用量の目安(最低限必要な値)を次に示します。
使用メモリ[キロバイト] = (ターム数×2)※×64+( NOT検索指定数×登録データ件数/8)/1024
注※ (ターム数×2)の最大値は200です。
メモリ使用量は検索条件によって異なります。検索時最大ワークメモリサイズの指定値が大きいほど,検索性能が向上します。そのため,ここで示した値より大きな値を検索時最大ワークメモリサイズに指定することをお勧めします。