From morita @ razil.jp Fri Mar 10 12:19:40 2006
From: morita @ razil.jp (morita @ razil.jp)
Date: Fri, 10 Mar 2006 12:19:40 +0900
Subject: [Senna-dev 207] =?iso-2022-jp?b?UmU6IHJldjc1GyRCJEskRhsoQm4tZ3Jh?=
=?iso-2022-jp?b?bRskQiROPmw5ZyVVJWohPCU6GyhC?=
In-Reply-To: <20060206003433.GA26512@fracture.net.dhis.org>
References: <20060204121017.5AC0.TATEMAX@kagoya.net>
<20060206003433.GA26512@fracture.net.dhis.org>
Message-ID: <20060310031940.GA11400@fracture.net.dhis.org>
大変おそくなり申し訳ありません。
n-gramでインデックスが作成できない問題をrev93で修正しました。
各方面に御迷惑をかけたことをおわびします。
>>> morita @ razil.jp さんは書きました:
> 報告ありがとうございます。sennaのバグっぽいですね。
> 確認してみますー。
>
> >>> 立松 聖久 さんは書きました:
> > 立松です.
> >
> > タイトルの通りなんですが,新しい環境でMySQL4.1.16とSenna rev.75と
> > MeCab0.90をインストールしました.
> >
> > 形態素解析を使った場合は,fullindexは正常に張れて検索も問題ないです.
> > しかし,ngramにした場合テーブルの作成は問題なくできるのですが,insertが
> > 出来ない状況です.
> >
> > ■環境
> > RHL ES3
> > gcc3.2.3
> > メモリ256MB
> >
> > ■インストール手順
> > MeCabインストール
> > ./configure;make;make install
> >
> > Sennaインストール
> > ./configure CFLAGS=-O0;make;make install
> > (最適化オプションを外さないとmakeが通りませんでした)
> >
> > MySQLのインストール
> > patch -p1 < ../senna/bindings/mysql/mysql-4.1.15.senna.diff
> > ./configure;make;make install
> >
> > ■動作テスト手順
> > create database test_db
> > create table text_tbl (
> > id int unsigned not null auto_increment primary_key,
> > body text,
> > fulltext(body) )
> > insert into text_tbl values (null, '本日は晴天なり')
> >
> > とやると,MySQLがフリーズします.
> > その時のsenna.logを以下に.
> > ■senna.log
> > 02/04:12:27:19.331848|26c0|share->delay_key_write=0
> > 02/04:12:27:19.331911|26c0|unique_file_name/usr/local/mysql4/var/test_db/text_tbl.MYI
> > 02/04:12:27:19.331925|26c0|data_file_name ./test_db/text_tbl.MYD
> > 02/04:12:27:19.331938|26c0|index_file_name ./test_db/text_tbl.MYI
> > 02/04:12:27:19.331950|26c0|share->keyinfo[1].seg=148130216
> > 02/04:12:27:19.331963|26c0|open (/usr/local/mysql4/var/test_db/text_tbl.001)
> > 02/04:12:27:19.332826|26c0|index opened(0x8d1b120:/usr/local/mysql4/var/test_db/text_tbl.001) flags=8000001f
> > 02/04:12:28:05.059766|26c0|_mi_ft_add(0x8d8ed80,1,0x8d8f9b0,0x8d44408,0)
> > 02/04:12:28:05.059821|26c0|add > (8d1b120:4d6e78)
> > ここで永遠に止まっている.(フリーズしている)
> >
> > 何か心当たりがある方ヒントでも良いので,ご教授おねがいします.
> > _______________________________________________
> > Senna-dev mailing list
> > Senna-dev @ lists.sourceforge.jp
> > http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> >
> --
> morita
--
morita
From tatemax @ kagoya.net Fri Mar 10 12:50:01 2006
From: tatemax @ kagoya.net (=?ISO-2022-JP?B?GyRCTik+PiEhQDs1VxsoQg==?=)
Date: Fri, 10 Mar 2006 12:50:01 +0900
Subject: [Senna-dev 208] =?iso-2022-jp?b?UmU6IHJldjc1GyRCJEskRhsoQm4tZ3Jh?=
=?iso-2022-jp?b?bRskQiROPmw5ZyVVJWohPCU6GyhC?=
In-Reply-To: <20060310031940.GA11400@fracture.net.dhis.org>
References: <20060206003433.GA26512@fracture.net.dhis.org>
<20060310031940.GA11400@fracture.net.dhis.org>
Message-ID: <20060310124716.3556.TATEMAX@kagoya.net>
立松です.
MySQL4.1.18とrev.93で正常動作確認できました.
#Sennaのロゴがかっこいー
From morita @ razil.jp Mon Mar 13 02:23:14 2006
From: morita @ razil.jp (morita @ razil.jp)
Date: Mon, 13 Mar 2006 02:23:14 +0900
Subject: [Senna-dev 209] =?iso-2022-jp?b?Ym9vbGVhbhskQjghOnc2LzI9GyhC?=
Message-ID: <20060312172314.GA18676@fracture.net.dhis.org>
rev96 で MySQL binding の in boolean mode サポートが強化されました。
強化された点
- boolean modeの全ての演算子が使用できます。
- update, delete文の条件にも使用できます。(従来はダメでした)
- 2ind patchと併用可能です。
制限・注意事項
- 現状ではmysql-4.0.26用のパッチのみ添付しています。
(他のバージョンも順次対応予定です)
- patchは以下の3つに分けました。
1. mysql-4.0.26.senna.diff
fulltext indexをsennaに入れ替える(boolean modeを含む)
2. mysql-4.0.26.senna.2ind.diff
fulltext index + 他のインデックスを併用可能にする。
冗長なファイルスキャンを抑止する。
3. mysql-4.0.26.senna.2ind.skipmode.diff
skipmodeを使用可能にする。
適用する場合は1,2,3の順に当てて下さい。
2.は安定性に不安があるので1.と分離しました。
3.は2.と機能が重なっているので分離しました。
(2.にはlimitで指定されたoffsetまで冗長なIOを抑止する機能が入っていますので、
skipmodeを使用しなくても高速な処理が可能です。
しかし、クエリの互換性のためにskipmodeが必要な場合は3.のパッチも当てて下さい)
- boolean modeで指定できる式の最大数は32です。
これを拡張したい場合は1.のパッチを当てたあと、
ft_boolean_search.cのSENNA_MAX_N_EXPRの値を拡大した後に
再度mysqlをbuildしてください。
--
morita
From ml @ ryne.jp Mon Mar 13 07:07:11 2006
From: ml @ ryne.jp (=?ISO-2022-JP?B?GyRCRWdCPBsoQiAbJEJNJUJATzobKEI=?=)
Date: Mon, 13 Mar 2006 07:07:11 +0900
Subject: [Senna-dev 210] =?iso-2022-jp?b?U2VubmEbJEIkTkYwOm4bKEIv?=
=?iso-2022-jp?b?GyRCMytILyVtITwlSSVeJUMlVyRLJEQkJCRGGyhC?=
Message-ID: <1CE046E4-A79F-421B-847E-C676D5252B68@ryne.jp>
質問です。
Sennaの仕様を見たところ、
実行時にはinitial_n_segments * 256KB分のメモリを使用という
ことなので、
全文検索を掛けると1インデックス辺りinitial_n_segments *
256KB(96*256=約25M)のメモリを使用すると言うことですが、
データが大きくなりインデックスが肥大してもそれ以上のメモリをバッ
ファすることはないですか?
また、こちらhttp://lists.sourceforge.jp/mailman/archives/senna-
dev/2006-February/000197.htmlの
>実行時のメモリ消費量は削減可能とする予定です。
ということなのですが、具体的な開発の予定内容をお聞きしたいです。
というのも、こちらの利用環境が少量のレコードを持つテーブルが
2つのフルテキストインデックスを持って大量に存在するため、
個別のインデックスメモリを確保しているとメモリの容量に全く追いつ
けない状況で、
なるべく1インデックス辺りのメモリバッファ量を減らしたい、
と考えています。
// メモリやクラスタを追加すればいい話なんですが、なかなか新規追
加ができないので、、(*_*)
// ここ最近メモリが足りなくて落ちることが多いため、
initial_n_segments値を96にして動作させています。
# --- --- --- --- #
島村 優太郎
ml @ ryne.jp
From ko @ yappo.ne.jp Mon Mar 13 14:23:22 2006
From: ko @ yappo.ne.jp (Kazuhiro Osawa)
Date: Mon, 13 Mar 2006 14:23:22 +0900 (JST)
Subject: [Senna-dev 211] =?iso-2022-jp?b?GyRCRkNEaiROGyhCa2V5d29yZA==?=
=?iso-2022-jp?b?GyRCJEcbKEJteXNxbGQbJEIkLBsoQnNlZ2ZhdWx0GyRCJDckXiQ5GyhC?=
Message-ID: <20060313.142322.27001705.ko@yappo.ne.jp>
環境:CentOS 4.2 MySQL 4.026 MeCab0.90rc10 senna rev96
mecab-0.90rc10, mecab-ipadic-2.7.0-20051110, sennaともに
./configure make make install
MySQLは
./configure --prefix=/hogehoge/mysql --with-charset=ujis --with-extra-charsets=all
で環境構築しました。
この環境で特定のキーワードのクエリがある時にmysqldが落ちる現象がありました。
gdb /hogehoge/mysql/libexec/mysqld
して落ちたときのログは下記のとおり
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1480574032 (LWP 13487)]
0x00247720 in sen_set_int_get (set=0x9d433508, key=0x473f7, value=0xa7bd4098) at set.c:263
263 uint32_t h = *key, i, m = set->max_offset;
btコマンドの結果の要約は下記の通り
#0 0x00247720 in sen_set_int_get (set=0x9d433508, key=0x473f7, value=0xa7bd4098) at set.c:263
#1 0x00247e35 in sen_set_get (set=0x9d433508, key=0xa7bd4094, value=0xa7bd4098) at set.c:349
#2 0x00241e5b in sis_collect (sym=0x8acb2a0, h=0x9d433508, id=291832, level=2346) at sym.c:210
#3 0x00241e75 in sis_collect (sym=0x8acb2a0, h=0x9d433508, id=291833, level=2345) at sym.c:212
#4 0x00241e75 in sis_collect (sym=0x8acb2a0, h=0x9d433508, id=291834, level=2344) at sym.c:212
#5 0x00241e75 in sis_collect (sym=0x8acb2a0, h=0x9d433508, id=291835, level=2343) at sym.c:212
#6 0x00241e75 in sis_collect (sym=0x8acb2a0, h=0x9d433508, id=291836, level=2342) at sym.c:212
(snip)
#2347 0x00241e75 in sis_collect (sym=0x8acb2a0, h=0x9d433508, id=294177, level=1) at sym.c:212
#2348 0x00243f49 in sen_sym_suffix_search (sym=0x8acb2a0,
key=0xa12343df "蓮蔭蒋蔦蓬蔓蕎蕨蕉蕃蕪蔽薙蕾蕗藁薩藤藍蘇蘭虎虹蜂蜜蝦蝶螺蝉蟹蝋衿袖袈袴裡裾裟裳襖訊訣註詣詢詮詫誼諏諄誰諒謂諺諦謎讃豹貌貰貼賑赳跨蹄蹟蹴輔輯>
輿轟辰辻迂迄辿迪迦這逞逗逢遥遙遁遡遜遼邑那祁郁鄭酉酎醇醐醒醍醤"...) at sym.c:707
#2349 0x00254866 in token_info_open (i=0x8ab8e00, key=0x9d4eff90 "蓮", offset=0, mode=expand_both) at index.c:265
#2350 0x00258dcf in sen_index_select (i=0x8ab8e00, string=0x9d4effe8 "蓮", r=0x9d423a90, op=sen_sel_or, optarg=0xa7c02150) at index.c:431
#2351 0x002ab021 in exec_query (i=0x8ab8e00, q=0x9d4336d0, c=0x9d43372c, r=0x9d423a90, op=sen_sel_or) at query.c:437
#2352 0x002aaf44 in exec_query (i=0x8ab8e00, q=0x9d4336d0, c=0x9d433718, r=0x9d423a90, op=sen_sel_or) at query.c:443
#2353 0x002aaf44 in exec_query (i=0x8ab8e00, q=0x9d4336d0, c=0x9d433704, r=0x9d423a90, op=sen_sel_or) at query.c:443
#2354 0x002ab215 in sen_query_exec (i=0x8ab8e00, q=0x9d4336d0, r=0x9d423a90, op=sen_sel_or) at query.c:482
#2355 0x082d8004 in ft_init_boolean_search ()
#2356 0x080c9bcf in Item_func_match::init_search ()
#2357 0x08127142 in init_ftfuncs ()
#2358 0x081393ad in mysql_select ()
#2359 0x0813aa15 in handle_select ()
#2360 0x08115005 in mysql_execute_command ()
#2361 0x08116214 in mysql_parse ()
#2362 0x08116d1c in dispatch_command ()
#2363 0x08117a14 in handle_one_connection ()
#2364 0x00c9a341 in start_thread () from /lib/tls/libpthread.so.0
#2365 0x00b1a6fe in clone () from /lib/tls/libc.so.6
この時に「蓮」という文字を含めて検索すると必ず落ちていました。
テーブルの内容が変更(約10万件から約6000件に現象)したところ落ちなくなりました。
取り急ぎ報告まで。
---
osawa
From ko @ yappo.ne.jp Mon Mar 13 16:02:25 2006
From: ko @ yappo.ne.jp (Kazuhiro Osawa)
Date: Mon, 13 Mar 2006 16:02:25 +0900 (JST)
Subject: [Senna-dev 212] =?iso-2022-jp?b?UmU6IBskQkZDRGokThsoQmtleXdvcmQ=?=
=?iso-2022-jp?b?GyRCJEcbKEJteXNxbGQbJEIkLBsoQnNlZ2ZhdWx0GyRCJDckXiQ5GyhC?=
In-Reply-To: <20060313.142322.27001705.ko@yappo.ne.jp>
References: <20060313.142322.27001705.ko@yappo.ne.jp>
Message-ID: <20060313.160225.52200374.ko@yappo.ne.jp>
大沢です。
> この環境で特定のキーワードのクエリがある時にmysqldが落ちる現象がありました。
落ちるクエリは下記のような物です。
select ID from SEARCH_DATA where match(SEARCH_TEXT) against('+蓮 +(_MT_D_MERO_ _MT_A_MERO_ _MT_V_MERO)' IN BOOLEAN MODE) limit 1;
下記のようにキーワードが一つだけだと落ちませんでした。
select ID from SEARCH_DATA where match(SEARCH_TEXT) against('蓮' IN BOOLEAN MODE) limit 1;
データの内容に依存していて他の環境での再現性は無いとは思いますが
ご奉告しておきます。
---
osawa
From morita @ razil.jp Tue Mar 14 10:25:26 2006
From: morita @ razil.jp (morita @ razil.jp)
Date: Tue, 14 Mar 2006 10:25:26 +0900
Subject: [Senna-dev 213] =?iso-2022-jp?b?UmU6IFNlbm5hGyRCJE5GMDpuGyhCLw==?=
=?iso-2022-jp?b?GyRCMytILyVtITwlSSVeJUMlVyRLJEQkJCRGGyhC?=
In-Reply-To: <1CE046E4-A79F-421B-847E-C676D5252B68@ryne.jp>
References: <1CE046E4-A79F-421B-847E-C676D5252B68@ryne.jp>
Message-ID: <20060314012526.GA28252@fracture.net.dhis.org>
> 全文検索を掛けると1インデックス辺りinitial_n_segments *
> 256KB(96*256=約25M)のメモリを使用すると言うことですが、
> データが大きくなりインデックスが肥大してもそれ以上のメモリをバッ
> ファすることはないですか?
単語数が増えると徐々に使用メモリは増えます。
テーブルを細かく分割すると個々のテーブル毎に語彙表を個別に持つので
メモリの使用効率は低下してしまいます。
> また、こちらhttp://lists.sourceforge.jp/mailman/archives/senna-
> dev/2006-February/000197.htmlの
> >実行時のメモリ消費量は削減可能とする予定です。
> ということなのですが、具体的な開発の予定内容をお聞きしたいです。
具体的なスケジュールをお約束することはできない状況ですー。
> というのも、こちらの利用環境が少量のレコードを持つテーブルが
> 2つのフルテキストインデックスを持って大量に存在するため、
> 個別のインデックスメモリを確保しているとメモリの容量に全く追いつ
> けない状況で、
> なるべく1インデックス辺りのメモリバッファ量を減らしたい、
> と考えています。
現状ではなるべくテーブル数や1テーブルあたりのインデックス数を減らして
いただくしかないですねー。
参考までにお聞きしたいのですが、大量のテーブルはどれもみな頻繁に
アクセスされるのでしょうか? それとも一度にアクセスするテーブルは
限られていますか?
もし後者であれば、全てのsennaインデックスを常時メモリに展開するのではなくて、
有限数のインデックスのみopenしておくように手を入れようかと思います。
--
morita
From morita @ razil.jp Tue Mar 14 10:54:41 2006
From: morita @ razil.jp (morita @ razil.jp)
Date: Tue, 14 Mar 2006 10:54:41 +0900
Subject: [Senna-dev 214] =?iso-2022-jp?b?UmU6IBskQkZDRGokThsoQmtleXdvcmQ=?=
=?iso-2022-jp?b?GyRCJEcbKEJteXNxbGQbJEIkLBsoQnNlZ2ZhdWx0?=
=?iso-2022-jp?b?GyRCJDckXiQ5GyhC?=
In-Reply-To: <20060313.160225.52200374.ko@yappo.ne.jp>
References: <20060313.142322.27001705.ko@yappo.ne.jp>
<20060313.160225.52200374.ko@yappo.ne.jp>
Message-ID: <20060314015441.GB28252@fracture.net.dhis.org>
rev97で修正しました。
なお、
against('+蓮 +(_MT_D_MERO_ _MT_A_MERO_ _MT_V_MERO)' IN BOOLEAN MODE)
のようなクエリーですと、ヒット件数が0になり、内部で部分一致検索が実行されるので、
応答が遅くなります。
against('*E-1 +蓮 +(_MT_D_MERO_ _MT_A_MERO_ _MT_V_MERO)' IN BOOLEAN MODE)
のようにクエリ文字列の冒頭に指示することによって部分一致検索を抑止できます。
(*Eの後ろの数値はsenna.confに記述するPARTIAL_MATCH_THRESHOLDと同じ効力があります)
'蓮'に関してのみ部分一致を指定したい場合は、
against('*E-1 +蓮* +(_MT_D_MERO_ _MT_A_MERO_ _MT_V_MERO)' IN BOOLEAN MODE)
のように指定します。
>>> Kazuhiro Osawa さんは書きました:
> 大沢です。
>
>
> > この環境で特定のキーワードのクエリがある時にmysqldが落ちる現象がありました。
>
> 落ちるクエリは下記のような物です。
> select ID from SEARCH_DATA where match(SEARCH_TEXT) against('+蓮 +(_MT_D_MERO_ _MT_A_MERO_ _MT_V_MERO)' IN BOOLEAN MODE) limit 1;
>
> 下記のようにキーワードが一つだけだと落ちませんでした。
> select ID from SEARCH_DATA where match(SEARCH_TEXT) against('蓮' IN BOOLEAN MODE) limit 1;
>
>
> データの内容に依存していて他の環境での再現性は無いとは思いますが
> ご奉告しておきます。
>
> ---
> osawa
> _______________________________________________
> Senna-dev mailing list
> Senna-dev @ lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
>
--
morita
From morita @ razil.jp Tue Mar 14 10:57:18 2006
From: morita @ razil.jp (morita @ razil.jp)
Date: Tue, 14 Mar 2006 10:57:18 +0900
Subject: [Senna-dev 215] =?iso-2022-jp?b?UmU6IBskQkZDRGokThsoQmtleXdvcmQ=?=
=?iso-2022-jp?b?GyRCJEcbKEJteXNxbGQbJEIkLBsoQnNlZ2ZhdWx0?=
=?iso-2022-jp?b?GyRCJDckXiQ5GyhC?=
In-Reply-To: <20060314015441.GB28252@fracture.net.dhis.org>
References: <20060313.142322.27001705.ko@yappo.ne.jp>
<20060313.160225.52200374.ko@yappo.ne.jp>
<20060314015441.GB28252@fracture.net.dhis.org>
Message-ID: <20060314015718.GC28252@fracture.net.dhis.org>
本日3月14日19:00以降、移設工事のために、
dev.razil.jpのsubversionサービスをしばらく停止する予定です。
よろしく御容赦ください。。
>>> morita @ razil.jp さんは書きました:
> rev97で修正しました。
--
morita
From ko @ yappo.ne.jp Tue Mar 14 15:29:37 2006
From: ko @ yappo.ne.jp (Kazuhiro Osawa)
Date: Tue, 14 Mar 2006 15:29:37 +0900 (JST)
Subject: [Senna-dev 216] =?iso-2022-jp?b?UmU6IBskQkZDRGokThsoQmtleXdvcmQ=?=
=?iso-2022-jp?b?GyRCJEcbKEJteXNxbGQbJEIkLBsoQnNlZ2ZhdWx0GyRCJDckXiQ5GyhC?=
In-Reply-To: <20060314015441.GB28252@fracture.net.dhis.org>
References: <20060313.142322.27001705.ko@yappo.ne.jp>
<20060313.160225.52200374.ko@yappo.ne.jp>
<20060314015441.GB28252@fracture.net.dhis.org>
Message-ID: <20060314.152937.91345481.ko@yappo.ne.jp>
大沢です。
> rev97で修正しました。
ありがとう御座います!
しばらく様子を見てみます。
> against('+蓮 +(_MT_D_MERO_ _MT_A_MERO_ _MT_V_MERO)' IN BOOLEAN MODE)
>
> のようなクエリーですと、ヒット件数が0になり、内部で部分一致検索が実行されるので、
> 応答が遅くなります。
蓮池,蓮沼... と前方一致する感じですね。。
> '蓮'に関してのみ部分一致を指定したい場合は、
>
> against('*E-1 +蓮* +(_MT_D_MERO_ _MT_A_MERO_ _MT_V_MERO)' IN BOOLEAN MODE)
>
> のように指定します。
MySQLのIN BOOLEAN MODEの書式がhttp://qwik.jp/senna/query.htmlに差し変った感じですね。
---
osawa
From morita @ razil.jp Tue Mar 14 16:28:05 2006
From: morita @ razil.jp (morita @ razil.jp)
Date: Tue, 14 Mar 2006 16:28:05 +0900
Subject: [Senna-dev 217] =?iso-2022-jp?b?UmU6IBskQkZDRGokThsoQmtleXdvcmQ=?=
=?iso-2022-jp?b?GyRCJEcbKEJteXNxbGQbJEIkLBsoQnNlZ2ZhdWx0?=
=?iso-2022-jp?b?GyRCJDckXiQ5GyhC?=
In-Reply-To: <20060314.152937.91345481.ko@yappo.ne.jp>
References: <20060313.142322.27001705.ko@yappo.ne.jp>
<20060313.160225.52200374.ko@yappo.ne.jp>
<20060314015441.GB28252@fracture.net.dhis.org>
<20060314.152937.91345481.ko@yappo.ne.jp>
Message-ID: <20060314072805.GA21285@fracture.net.dhis.org>
> MySQLのIN BOOLEAN MODEの書式がhttp://qwik.jp/senna/query.htmlに差し変った感じですね。
ですですー。
> ---
> osawa
--
morita
From ml @ ryne.jp Tue Mar 14 23:27:00 2006
From: ml @ ryne.jp (=?ISO-2022-JP?B?GyRCRWdCPBsoQiAbJEJNJUJATzobKEI=?=)
Date: Tue, 14 Mar 2006 23:27:00 +0900
Subject: [Senna-dev 218] =?iso-2022-jp?b?UmU6IFNlbm5hGyRCJE5GMDpuGyhCLw==?=
=?iso-2022-jp?b?GyRCMytILyVtITwlSSVeJUMlVyRLJEQkJCRGGyhC?=
In-Reply-To: <20060314012526.GA28252@fracture.net.dhis.org>
References: <1CE046E4-A79F-421B-847E-C676D5252B68@ryne.jp>
<20060314012526.GA28252@fracture.net.dhis.org>
Message-ID: <05F9668A-B345-496B-88C3-CEBAC4F9BB4A@ryne.jp>
On 2006/03/14, at 10:25, morita @ razil.jp wrote:
> 単語数が増えると徐々に使用メモリは増えます。
> テーブルを細かく分割すると個々のテーブル毎に語彙表を個別に持つ
> ので
> メモリの使用効率は低下してしまいます。
そうなんですか。。
なるべくその辺りを考慮してもう一度設計し直そうと思います。
> 具体的なスケジュールをお約束することはできない状況ですー。
わかりました。すみません(*_*)
> 現状ではなるべくテーブル数や1テーブルあたりのインデック
> ス数を減らして
> いただくしかないですねー。
>
> 参考までにお聞きしたいのですが、大量のテーブルはどれもみな頻繁に
> アクセスされるのでしょうか? それとも一度にアクセスする
> テーブルは
> 限られていますか?
>
> もし後者であれば、全てのsennaインデックスを常時メモリに
> 展開するのではなくて、
> 有限数のインデックスのみopenしておくように手を入れようか
> と思います。
テーブルについてですが、
1DB辺り20このテーブルが有り、テーブル1つにフルテキス
トインデックスが2つ付いていて、
1つ1つのテーブルのアクセス頻度は少ないのですが、DB数
が1000~1500程度あります。。
それぞれのテーブルのアクセス頻度/更新頻度共にそこそこ少な
めです。(アクセス量>更新量)
また、Sennaの全文検索システムが呼び出されるのも、1
テーブルで計算すると本当に頻度が低いです。
//メモリに入れなくてもいいぐらいの頻度の低さです。
それなりに規模が大きいので、いろいろ手を考えています。
/*
Sennaの導入は確実に行いたく、
しかしながらそこまで環境に余裕のないという
わがまま。。
*/
From ko @ yappo.ne.jp Wed Mar 22 17:09:01 2006
From: ko @ yappo.ne.jp (Kazuhiro Osawa)
Date: Wed, 22 Mar 2006 17:09:01 +0900 (JST)
Subject: [Senna-dev 219] =?iso-2022-jp?b?QUlPL0RJTxskQiROTXhNUUp9SyEbKEI=?=
=?iso-2022-jp?b?GyRCJEskRCQkJEYbKEI=?=
Message-ID: <20060322.170901.42801590.ko@yappo.ne.jp>
大沢です。
AIO/DIOを利用してみようと思いconfigure && makeしたのですが
makeでコケてしまいます。
Senna: Revision 100
OS: CentOS 4.2 (kernel 2.6.9-22.0.1.ELsmp)
gcc: 3.4.4
libc: libc-2.3.4.so
senna_in.h で __USE_XOPEN2K が有効になっている事が発端となって
コケてるっぽいですが、もしかしてgcc/libcのバージョンによっては動かないのでしょうか?
もし可能でしたら、AIO/DIOの動作確認済環境を教えて頂けますでしょうか。
make時のログを下記に添付しておきます。
$ ./configure --enable-aio
$ make
make all-recursive
make[1]: Entering directory `/home/works/src/r100/senna'
Making all in lib
make[2]: Entering directory `/home/works/src/r100/senna/lib'
if /bin/sh ../libtool --mode=compile --tag=CC gcc -D_REENTRANT -DSENNA_HOME=\"/var/senna\" -DUSE_AIO -I. -I. -I.. -I. -I.. -I/usr/local/include/senna -Wall -O3 -fno-strict-aliasing -g -O2 -MT io.lo -MD -MP -MF ".deps/io.Tpo" -c -o io.lo io.c; \
then mv -f ".deps/io.Tpo" ".deps/io.Plo"; else rm -f ".deps/io.Tpo"; exit 1; fi
mkdir .libs
gcc -D_REENTRANT -DSENNA_HOME=\"/var/senna\" -DUSE_AIO -I. -I. -I.. -I. -I.. -I/usr/local/include/senna -Wall -O3 -fno-strict-aliasing -g -O2 -MT io.lo -MD -MP -MF .deps/io.Tpo -c io.c -fPIC -DPIC -o .libs/io.o
In file included from /usr/include/stdlib.h:33,
from senna_in.h:30,
from io.c:18:
/usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h:213: error: syntax error before "typedef"
In file included from cache.h:35,
from io.c:30:
/usr/include/asm/atomic.h:40:2: warning: #warning Using kernel header in userland program. BAD!
io.c: In function `sen_io_win_mapv':
io.c:464: warning: implicit declaration of function `posix_memalign'
make[2]: *** [io.lo] Error 1
make[2]: Leaving directory `/home/works/src/r100/senna/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/works/src/r100/senna'
make: *** [all] Error 2
---
osawa
From ko @ yappo.ne.jp Wed Mar 22 22:12:50 2006
From: ko @ yappo.ne.jp (Kazuhiro Osawa)
Date: Wed, 22 Mar 2006 22:12:50 +0900 (JST)
Subject: [Senna-dev 220] =?iso-2022-jp?b?VURGGyRCJEckThsoQnNuaXBwZXQ=?=
=?iso-2022-jp?b?GyRCJCxGQ0RqJE4bKEJrZXl3b3JkGyRCJEcbKEJzZWd2GyRCJDkbKEI=?=
=?iso-2022-jp?b?GyRCJGsbKEI=?=
Message-ID: <20060322.221250.54214523.ko@yappo.ne.jp>
大沢です。
特定のkeywordでsnippetが落ちました。
snippetを行うデータに依存せず、再現性があるので再現方法を報告します。
sennaのリビジョンは100です。
$ cat snippet.pl
$bad = pack('CC', (82-64), 0xb3);
print "select snippet('hoge', 25, 3, 'ujis', 0, '', '', '$bad', '', '')";
$ perl ./snippet.pl | mysql -u user -p tablename
一応、落ちたときのバックトレースを付けておきます。
(gdb) bt
#0 0x00a367a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00a7a7d5 in raise () from /lib/tls/libc.so.6
#2 0x00a7c149 in abort () from /lib/tls/libc.so.6
#3 0x00aae40a in __libc_message () from /lib/tls/libc.so.6
#4 0x00ab4b3f in _int_free () from /lib/tls/libc.so.6
#5 0x00ab4eba in free () from /lib/tls/libc.so.6
#6 0x00ed2b79 in sen_free (ptr=0xad63a4b8, file=0xf497ee "snip.c", line=90) at str.c:162
#7 0x00f2a028 in sen_bm_preBmGs (x=0xad682310 "", m=-1385978696, bmGs=0xad64cd38) at snip.c:90
#8 0x00f2a6d5 in sen_snip_add_cond (snip=0xad6224d0, keyword=0xad69bf28 "\022晦, opentag=0xad69bf2b "", closetag=0xad69bf3c "") at snip.c:314
#9 0x0038fc87 in snippet_init () from libmysql_udf_snippet.so
#10 0x080ca13e in udf_handler::fix_fields ()
#11 0x080d28c5 in Item_udf_func::fix_fields ()
#12 0x08133440 in setup_fields ()
#13 0x0814603e in mysql_select ()
#14 0x08149120 in handle_select ()
#15 0x08122039 in mysql_execute_command ()
#16 0x0812244c in mysql_parse ()
#17 0x081230f5 in dispatch_command ()
#18 0x08123e7f in handle_one_connection ()
#19 0x00c9a341 in start_thread () from /lib/tls/libpthread.so.0
#20 0x00b1a6fe in clone () from /lib/tls/libc.so.6
---
osawa
From a @ razil.jp Wed Mar 22 23:52:18 2006
From: a @ razil.jp (Tasuku SUENAGA)
Date: Wed, 22 Mar 2006 23:52:18 +0900
Subject: [Senna-dev 221] =?iso-2022-jp?b?UmU6IFVERhskQiRHJE4bKEJzbmlwcGV0?=
=?iso-2022-jp?b?GyRCJCxGQ0RqJE4bKEJrZXl3b3JkGyRCJEcbKEJzZWd2GyRCJDkbKEI=?=
=?iso-2022-jp?b?GyRCJGsbKEI=?=
In-Reply-To: <20060322.221250.54214523.ko@yappo.ne.jp>
References: <20060322.221250.54214523.ko@yappo.ne.jp>
Message-ID: <20060322235146.BFC9.A@razil.jp>
報告ありがとうございます。
落ちる現象そのものは再現できなかったのですが、
追ってみます。
> 大沢です。
>
>
> 特定のkeywordでsnippetが落ちました。
> snippetを行うデータに依存せず、再現性があるので再現方法を報告します。
> sennaのリビジョンは100です。
> ...
--
Tasuku SUENAGA
From a @ razil.jp Thu Mar 23 14:24:53 2006
From: a @ razil.jp (Tasuku SUENAGA)
Date: Thu, 23 Mar 2006 14:24:53 +0900
Subject: [Senna-dev 222] =?iso-2022-jp?b?UmU6IFVERhskQiRHJE4bKEJzbmlwcGV0?=
=?iso-2022-jp?b?GyRCJCxGQ0RqJE4bKEJrZXl3b3JkGyRCJEcbKEJzZWd2GyRCJDkbKEI=?=
=?iso-2022-jp?b?GyRCJGsbKEI=?=
In-Reply-To: <20060322.221250.54214523.ko@yappo.ne.jp>
References: <20060322.221250.54214523.ko@yappo.ne.jp>
Message-ID: <20060323142236.1C95.A@razil.jp>
末永です。
正規化に失敗する文字列をタグ付けの対象にすると、
動作が不定になるバグが存在しました。
次回のrevisionにて、
エラーを返すように修正したいと思います。
報告ありがとうございました。
> 大沢です。
>
> 特定のkeywordでsnippetが落ちました。
> snippetを行うデータに依存せず、再現性があるので再現方法を報告します。
> sennaのリビジョンは100です。
>
> $ cat snippet.pl
> $bad = pack('CC', (82-64), 0xb3);
> print "select snippet('hoge', 25, 3, 'ujis', 0, '', '', '$bad', '', '')";
>
> $ perl ./snippet.pl | mysql -u user -p tablename
--
Tasuku SUENAGA
From a @ razil.jp Fri Mar 24 15:13:50 2006
From: a @ razil.jp (Tasuku SUENAGA)
Date: Fri, 24 Mar 2006 15:13:50 +0900
Subject: [Senna-dev 223] =?iso-2022-jp?b?UmU6IEFJTy9ESU8bJEIkTk14TVEbKEI=?=
=?iso-2022-jp?b?GyRCSn1LISRLJEQkJCRGGyhC?=
In-Reply-To: <20060322.170901.42801590.ko@yappo.ne.jp>
References: <20060322.170901.42801590.ko@yappo.ne.jp>
Message-ID: <20060324151126.1C9D.A@razil.jp>
末永です。
> AIO/DIOを利用してみようと思いconfigure && makeしたのですが
> makeでコケてしまいます。
>
> Senna: Revision 100
> OS: CentOS 4.2 (kernel 2.6.9-22.0.1.ELsmp)
> gcc: 3.4.4
> libc: libc-2.3.4.so
CentOSをインストールの上configure, makeを行った場合、
同様のエラーが出てコンパイルができませんでした。
不具合だと思います。
> もし可能でしたら、AIO/DIOの動作確認済環境を教えて頂けますでしょうか。
Debian GNU/Linux 3.1で動作確認しております。
--
Tasuku SUENAGA
From ko @ yappo.ne.jp Mon Mar 27 14:57:09 2006
From: ko @ yappo.ne.jp (Kazuhiro Osawa)
Date: Mon, 27 Mar 2006 14:57:09 +0900 (JST)
Subject: [Senna-dev 224] =?iso-2022-jp?b?UmU6IFVERhskQiRHJE4bKEJzbmlwcGV0?=
=?iso-2022-jp?b?GyRCJCxGQ0RqJE4bKEJrZXl3b3JkGyRCJEcbKEJzZWd2GyRCJDkbKEI=?=
=?iso-2022-jp?b?GyRCJGsbKEI=?=
In-Reply-To: <20060323142236.1C95.A@razil.jp>
References: <20060322.221250.54214523.ko@yappo.ne.jp>
<20060323142236.1C95.A@razil.jp>
Message-ID: <20060327.145709.108777312.ko@yappo.ne.jp>
大沢です。
> 正規化に失敗する文字列をタグ付けの対象にすると、
> 動作が不定になるバグが存在しました。
> 次回のrevisionにて、
> エラーを返すように修正したいと思います。
rev:101で修正されたことを確認しました。
ありがとうございました。
---
osawa