[groonga-dev,00935] Re: mroongaストレージエンジンとパーティションの併用について

Back to archive index

kentoku kento****@gmail*****
2012年 6月 7日 (木) 02:01:50 JST


斯波です。

バグのご連絡ありがとうございます。

mroongaのテーブルパーティションのサポートの件につきましては、
以下のチケットで対応させて頂いております。
http://redmine.groonga.org/issues/1391

なお、現在のところmroongaではパーティションを
直接ご利用頂くことはできませんが、
パーティションとmroongaの組み合わせを
どうしても試したいという場合には、我田引水で恐縮ではございますが、
Spiderバンドル版のMySQLとmroongaを組み合わせて利用して頂き、
以下のように、パーティションに対応しているVPストレージエンジンを
mroongaのテーブルにかぶせる形で利用して頂くことが可能です。

なお、Spiderバンドル版のMySQLは、MySQLにパッチをあてており、
テーブルパーティショニング機能と組み合わせて、FULLTEXTが
利用可能です。

---- create table文の例 start ----
CREATE TABLE t1 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE t2 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE t3 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE t4 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE t5 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE t6 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE t7 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE t8 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

CREATE TABLE test_data (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ENGLISH` text,
`JAPANESE` text,
`LV` text NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_Lv` (`LV`(20)) USING BTREE,
FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
) ENGINE=VP DEFAULT CHARSET=utf8
PARTITION BY KEY(`id`) (
  PARTITION pt1 COMMENT 'table_name_list "t1"',
  PARTITION pt2 COMMENT 'table_name_list "t2"',
  PARTITION pt3 COMMENT 'table_name_list "t3"',
  PARTITION pt4 COMMENT 'table_name_list "t4"',
  PARTITION pt5 COMMENT 'table_name_list "t5"',
  PARTITION pt6 COMMENT 'table_name_list "t6"',
  PARTITION pt7 COMMENT 'table_name_list "t7"',
  PARTITION pt8 COMMENT 'table_name_list "t8"'
);
---- create table文の例 end ----

Spiderバンドル版MySQLはこちら
http://spiderformysql.com/download_spider.html

パフォーマンスの問題についての情報も、お待ちしております。

どうぞ、よろしくお願いいたします。


2012年6月6日 14:20 磯部 和広 <k-iso****@rozet*****>:
> いつもお世話になっております。
>
> >すみません、もしよかったら問題が発生したSQLを教えてもらえま
> >せんか?
>
>
> 再現用のcreate table文を作成しました。
>
> [k-isobe @ PMJ-MySQL1 ~]$ mysql -u root test < by_key.sql
> ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during query
> [k-isobe @ PMJ-MySQL1 ~]$ cat by_key.sql
> CREATE TABLE test_data (
> `id` int(11) NOT NULL AUTO_INCREMENT,
> `ENGLISH` text,
> `JAPANESE` text,
> `LV` text NOT NULL,
> PRIMARY KEY (`id`),
> KEY `Index_Lv` (`LV`(20)) USING BTREE,
> FULLTEXT KEY `ENGLISH` (`ENGLISH`) COMMENT 'parser "TokenDelimit"',
> FULLTEXT KEY `JAPANESE` (`JAPANESE`) COMMENT 'parser "TokenDelimit"'
> ) ENGINE=mroonga DEFAULT CHARSET=utf8 PARTITION BY KEY(`id`) PARTITIONS 8;
> [k-isobe @ PMJ-MySQL1 ~]$
>
>
>
> それとパフォーマンスの件ですが。
>
> 千五百万件のテーブルに対して
> 1セッションで100回select count(1)した場合
> 2秒が6秒になった、というオーダーです。
>
> こちらに対しては再現用のダミーデータの作成プログラムなど
> ちょっと簡単には出来そうにないので、お待ちください。
>
>
> (2012/06/06 12:44), Kouhei Sutou wrote:
>> 須藤です。
>>
>> In <4FCC9****@rozet*****>
>>   "[groonga-dev,00923] mroongaストレージエンジンとパーティションの併用について" on Mon, 04 Jun 2012 19:51:22 +0900,
>>   磯部 和広 <k-iso****@rozet*****> wrote:
>>
>>> ■概要■
>>>
>>> mroongaストレージエンジンでパーティションを作成しようとするとエラーにな
>>> り作成できません。
>>> 下記のような行がmysqlのエラーログに出現します。
>>>
>>> /usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga24primary_key_is_clusteredEv+0x7)[0x7fe66bde2b27]
>> すみません、もしよかったら問題が発生したSQLを教えてもらえま
>> せんか?
>>
>>> データが千5百万件あります。
>>>
>>> がテーブルにジャンルを示すカラムを追加しインデックスを張り、
>>> ジャンル別に検索して高速化しようとしても出来ませんでした。
>>>
>>> 常に全件のデータに対してFullTextサーチをしてから
>>> ジャンルで絞り込む、という動きをするようです。
>>>
>>> また、単にジャンルだけを指定して検索をしても
>>> インデックスを張ってあるのに全件サーチなります。
>> こちらも、SQLを教えてもらえると助かります。。。
>>
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev




groonga-dev メーリングリストの案内
Back to archive index