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

Back to archive index

磯部 和広 k-iso****@rozet*****
2012年 6月 8日 (金) 11:34:26 JST


いつもお世話になっております。

Spiderはパーティショニングについて調べた際に見かけたのですが
まさか、そっちと組み合わせるとOKだとは夢にも思いませんでした。

後日、実験して結果を報告します。

※8パーティションにしているのは、CPUが8個あるためで
 問い合わせ処理が内部的に8スレッドに別れる事を期待しています。

(2012/06/07 2:01), kentoku wrote:
> 斯波です。
>
> バグのご連絡ありがとうございます。
>
> 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 mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>




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