[Senna-dev 464] Re: マージテーブルについて

アーカイブの一覧に戻る

tatsuya-u tatsu****@sa*****
2007年 2月 12日 (月) 15:00:16 JST


morita様
ご回答ありがとうございます。
りゅうです。

> Mergeテーブルでは show index で正しい情報を出力するところまで
> 作り込んでいなかったりします。
> insert, select 等のDMLは問題なく使えるのではないかと思います。

確かに動作はしているのですが、パフォーマンス的にかなりの違いがあり、
マージテーブルに対してselectをかけたときにSenna用のインデックスを
使ってないのでは?と思いましたので質問させていただきました。

もう少し教えていただけたらありがいたです。
5.xxx系にするか?4.0.27にするか悩んで降りますので、
宜しくお願いいたします。

1.何故4.0.27だけサポートされているのでしょうか?
 何か問題があるから5.x.xではサポートされていないとか
 ありましたら教えていただければと思います。

2.以下回答頂いた内容についてです。
100万レコードのデータをマージテーブルにて分割テーブルを
管理するといったことを想定して動作させてみました。

で以下の質問をしたのは、Mergeテーブルに対してselectした時と
子テーブルにselectした時とのパフォーマンスの違いが思ったより
あったので質問させて頂きました。

データの投入のタイミングとか関係ありますでしょうか?
自分は以下の順序で作成しました。
・子テーブル1作成。
・子テーブル2作成。
・子テーブル1にデータ投入。
・子テーブル2にデータ投入。
・子テーブル1にインデックスを張る。
・子テーブル2にインデックスを張る。
・テーブルをマージ。
・マージテーブルにインデックスを張る。
です。

最後に、マージテーブル時のインデックスの仕様というか
動作はどのようになっているのでしょうか?

マージテーブル、子テーブル1、子テーブル2それぞれがインデックスを
管理しているのでしょうか?
たとえば「あ」で検索したとき、
マージテーブルのインデックス、子テーブル1のインデックス、子テーブル2の
インデックスそれぞれに対して更新が行われるような感じなのでしょうか?

スニペット機能は4.0.27では使用できないのでしょうか?
マージテーブルに対して行うとエラーになります。
(エラー内容はメモってませんですいません。)
確かコネクションロスト系だったと思います。

上記私の環境のみで起こる現象であればコンパイル時になんらかの
手順の違いがあったのでは?ないかと考えております。
いくつかワーニングが出た記憶もありますので。。。

意味不明な点はつっこんでください。
宜しくお願いいたします。

On Mon, 12 Feb 2007 09:40:35 +0900
morit****@razil***** wrote:

> Sennaに興味を持ってくださりありがとうございます!
> 
> Mergeテーブルでは show index で正しい情報を出力するところまで
> 作り込んでいなかったりします。
> insert, select 等のDMLは問題なく使えるのではないかと思います。
> 
> 以下、senna rev298 + mysql-4.0.27 での実行例です。
> 
> mysql> CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, body text);
> Query OK, 0 rows affected (0.00 sec)
> 
> mysql> CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, body text);
> Query OK, 0 rows affected (0.00 sec)
> 
> mysql> CREATE TABLE total (a INT NOT NULL AUTO_INCREMENT,  body text, KEY(a)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
> Query OK, 0 rows affected (0.05 sec)
> 
> mysql> CREATE FULLTEXT INDEX xxxx USING SENNA,NGRAM ON total (body);
> Query OK, 0 rows affected (0.00 sec)
> Records: 0  Duplicates: 0  Warnings: 0
> 
> mysql> CREATE FULLTEXT INDEX xxxx_index USING SENNA,NGRAM ON t1(body);
> Query OK, 0 rows affected (0.03 sec)
> Records: 0  Duplicates: 0  Warnings: 0
> 
> mysql> CREATE FULLTEXT INDEX xxxx_index USING SENNA,NGRAM ON t2(body);
> Query OK, 0 rows affected (0.03 sec)
> Records: 0  Duplicates: 0  Warnings: 0
> 
> mysql> INSERT INTO t1 (body) VALUES ("Testing"),("table"),("t1");
> Query OK, 3 rows affected (0.00 sec)
> Records: 3  Duplicates: 0  Warnings: 0
> 
> mysql> INSERT INTO t2 (body) VALUES ("Testing"),("table"),("t2");
> Query OK, 3 rows affected (0.00 sec)
> Records: 3  Duplicates: 0  Warnings: 0
> 
> mysql> SELECT * FROM total where match(body) against('table' IN BOOLEAN MODE);
> +---+-------+
> | a | body  |
> +---+-------+
> | 2 | table |
> | 2 | table |
> +---+-------+
> 2 rows in set (0.01 sec)
> 
> 
> 
> 
> > お世話になります。
> > りゅうと申します。
> > 
> > 今回検索エンジンからの乗換えで検証させていただいております。
> > 
> > Mysqlの4.0.27ではMergeテーブルがサポートされているようですが、
> > 以下の
> > 現象に悩まされております。
> > 
> > ■Mergeテーブル
> > CREATE FULLTEXT INDEX xxxx USING SENNA,NGRAM ON wwww (body);
> > 
> > mysql> show index from xxxx;
> > +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
> > | Table | Non_unique | Key_name    | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
> > +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
> > | xxxx  |          1 | xxxx_index |            1  | body        | A         |          46 |     NULL | NULL   |      |            |         |
> > +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
> > 1 row in set (0.00 sec)
> > 
> > ■子テーブル
> > CREATE FULLTEXT INDEX xxxx_index USING SENNA,NGRAM ON yyyyy(body);
> > 
> > 
> > Mergeテーブルは、Sennaのインデックスは使用できないのでしょうか?
> > 
> > よろしくお願い致します。
> > 
> > 
> > _______________________________________________
> > Senna-dev mailing list
> > Senna****@lists*****
> > http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> > 
> --
> morita
> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> 






Senna-dev メーリングリストの案内
アーカイブの一覧に戻る