Masanori Miyashita
walnu****@gmail*****
2017年 10月 4日 (水) 20:27:09 JST
堀本さん お世話になっております。宮下です。 教えていただき、ありがとうございます! 「サポート」の意味はお察しの通りです。表現が間違っていましたorz 今後はその方法での運用を検討したいと思います! エラーの件ですが、t1テーブルのインデックス(t1#ftx4)ではなくて、t1テーブルが影響するんですね。。。 ラッパーモードなのでてっきりt1テーブルのインデックス(t1#ftx4)が影響するのかと思っていましたorz さらに、Groonga, Mroongaを調べたいと思います! ありがとうございましたm(_ _)m 2017年10月4日 13:19 Horimoto Yasuhiro <horim****@clear*****>: > 宮下さん > > こんにちは。堀本です。 > > > ご質問の「これがサポートされる方法なのか?」については、「サポート」というのが、「正常に動作する」という意味であれば、 > 宮下さんが実施した対策で、正常に動作します。 > > 「さらに良い方法はないか?」についてですが、こちらは、Mroongaからテーブルを作成する際に、現状、KEY_ > LARGEを指定する方法がないので、KEY_LARGEを指定できるようにしてみます。 > > また、「インデックステーブルは「TABLE_PAT_KEY」で作成されているのに、なぜエラーログには「[hash]」 > と出力されるのか?」ですが、こちらは、キーサイズが制限を超えたテーブルが「TABLE_HASH_ > KEY」で作成されているt1テーブルだからだと思います。 > > このエラーログは、t1テーブルにたくさんのレコードを挿入した結果、t1テーブルのキーサイズが増加していき、 > 4GBを超えてしまったために発生したエラーログです。t1テーブルは「TABLE_HASH_KEY」で作成されているので、ログには「[hash]」 > と出力されます。 > > > 以上です。失礼いたします。 > > On 2017年10月02日 13:25, Masanori Miyashita wrote: > > いつもお世話になっております。宮下と申します。 > > > > Mroongaにてデータの挿入時およびインデックスをオフラインで作成するときに > > 以下のエラーがgroonga.logに出力されました。 > > この事象について、自分なりの対策を講じたのですが > > ・これがサポートされる方法なのか? > > ・さらに良い方法はないか?(Mroonga経由でGroongaにテーブル作成時のflagを渡せないか?) > > について、もしご存知であれば教えていただけますと幸いです。 > > また、インデックステーブルは「TABLE_PAT_KEY」で作成されているのに、なぜエラーログには「[hash]」と出力されるのか? > > こちらについても、もしご存じでしたら教えていただけますと幸いです。 > > > > groonga.log: > > |e|af56e700|[hash][key][put] total key size is over: <t1>: > max=4294967295 <tel:4294967295>: current=4294966695 <tel:4294966695>: new > key size=1179 > > > > 対策: > > 1)mroonga_command('schema')を使用して、対象のテーブル作成コマンドを記録 > > 2)mroonga_commandを使ってテーブル削除 > > 3)1で記録しておいたtable_createコマンドの内容に「KEY_LARGE」を追加してテーブル作成 > > 4)alter table ... disable/enable keysでインデックスを再構築 > > > > > > 以下は詳細を記載しております。必要に応じてご覧ください。 > > よろしくお願いいたします。 > > > > > > groonga.log詳細: > > 2017-09-26 01:10:12.221752|e|af56e700|[hash][key][put] total key size > is over: <t1>: max=4294967295 <tel:4294967295>: current=4294966695 > <tel:4294966695>: new key size=1179 > > 2017-09-26 01:10:12.366788|e|af56e700|/usr/loca/groonga/lib/libgroonga.so.0(+0x222f81) > [0x7fba3c822f81] > > 2017-09-26 01:10:12.366849|e|af56e700|/usr/loca/groonga/lib/libgroonga.so.0(+0x223549) > [0x7fba3c823549] > > 2017-09-26 01:10:12.366872|e|af56e700|/usr/loca/groonga/lib/libgroonga.so.0(+0x225a2a) > [0x7fba3c825a2a] > > 2017-09-26 01:10:12.366882|e|af56e700|/usr/loca/groonga/lib/ > libgroonga.so.0(grn_hash_add+0x974) [0x7fba3c826523] > > 2017-09-26 01:10:12.366890|e|af56e700|/usr/loca/groonga/lib/ > libgroonga.so.0(grn_table_add+0x7f9) [0x7fba3c6cb9d9] > > 2017-09-26 01:10:12.366898|e|af56e700|/usr/local/mysql/lib/plugin/ha_ > mroonga.so(_ZN10ha_mroonga23wrapper_write_row_indexEPh+0x3a6) > [0x7fb9fb5b3e34] > > 2017-09-26 01:10:12.366907|e|af56e700|/usr/local/mysql/lib/plugin/ha_ > mroonga.so(_ZN10ha_mroonga17wrapper_write_rowEPh+0x25a) [0x7fb9fb5b3a5e] > > 2017-09-26 01:10:12.366915|e|af56e700|/usr/local/mysql/lib/plugin/ha_ > mroonga.so(_ZN10ha_mroonga9write_rowEPh+0xbd) [0x7fb9fb5b674f] > > 2017-09-26 01:10:12.366923|e|af56e700|/usr/local/mysql/bin/mysqld(_ > ZN7handler12ha_write_rowEPh+0x15d) [0x64e23d] > > 2017-09-26 01:10:12.366931|e|af56e700|/usr/local/mysql/bin/mysqld(_ > Z12write_recordP3THDP5TABLEP9COPY_INFOS4_+0xc13) [0x7c3c6d] > > 2017-09-26 01:10:12.366939|e|af56e700|/usr/local/mysql/bin/mysqld(_ > Z12mysql_insertP3THDP10TABLE_LISTR4ListI4ItemERS3_IS5_ES6_S6_15enum_duplicatesb+0x1006) > [0x7c1a74] > > 2017-09-26 01:10:12.366947|e|af56e700|/usr/local/mysql/bin/mysqld(_ > Z21mysql_execute_commandP3THD+0x2e19) [0x7e48b9] > > 2017-09-26 01:10:12.366955|e|af56e700|/usr/local/mysql/bin/mysqld(_ > Z11mysql_parseP3THDPcjP12Parser_state+0x428) [0x7ec536] > > 2017-09-26 01:10:12.366963|e|af56e700|/usr/local/mysql/bin/mysqld(_ > Z16dispatch_command19enum_server_commandP3THDPcj+0xc94) [0x7df6e8] > > 2017-09-26 01:10:12.366971|e|af56e700|/usr/local/mysql/bin/mysqld(_Z10do_commandP3THD+0x340) > [0x7de812] > > 2017-09-26 01:10:12.366979|e|af56e700|/usr/local/mysql/bin/mysqld(_ > Z24do_handle_one_connectionP3THD+0x1be) [0x7a57ed] > > > > 発生状況: > > 対象のテーブルに対して総ファイルサイズ870MB(420万行)のデータを10万行ずつに分けてbulk insertしたところ > > 740MB~760MBあたり(360万行~370万行)でstdout or stderrに以下が出力された。併せて、groonga. > logに上記エラーが出力された。 > > ※順不同。実際には同じ内容が連続して出力されていた。 > > --- > > Warning (Code 1026): failed to add a new record into groonga: key=<&> > > Warning (Code 1026): failed to add a new record into groonga: key=<'> > > Warning (Code 1026): failed to add a new record into groonga: key=<> > > Warning (Code 1026): failed to add a new record into groonga: key=<L> > > Warning (Code 1026): failed to add a new record into groonga: key=<V> > > Warning (Code 1026): failed to add a new record into groonga: key=<[> > > Warning (Code 1026): failed to add a new record into groonga: key=<]> > > Warning (Code 1026): failed to add a new record into groonga: key=<c> > > Warning (Code 1026): failed to add a new record into groonga: key=<f> > > Warning (Code 1026): failed to add a new record into groonga: key=<m> > > Warning (Code 1026): failed to add a new record into groonga: key=<q> > > Warning (Code 1026): failed to add a new record into groonga: key=<� > >> > > Warning (Code 1026): failed to add a new record into groonga: key=<ヲ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ヲ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ェ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ォ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ョ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ケ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ニ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ノ > >> > > Warning (Code 1026): failed to add a new record into groonga: key=<ヤ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ヨ> > > Warning (Code 1026): failed to add a new record into groonga: key=<ン> > > Warning (Code 1026): failed to add a new record into groonga: key=<゙> > > > > --- > > > > 影響: > > 上記エラー移行にインデックス作成の対象とされた行については、インデックスが正常に作成されていない可能性がある。 > > > > システム環境: > > CentOS6.5, MySQL-5.6.17, Groonga-7.0.5, Mroonga-7.05 > > > > テーブル定義(ラッパーモード): > > CREATE TABLE `t1` ( > > `col1` int(11) NOT NULL, > > `col2` varchar(64) NOT NULL DEFAULT '', > > `col3` varchar(64) NOT NULL DEFAULT '', > > `col4` int(11) NOT NULL, > > `col5` bigint(20) NOT NULL, > > `col6` varchar(255) NOT NULL DEFAULT '', > > `col7` bigint(20) NOT NULL, > > `col8` varchar(255) DEFAULT NULL, > > `col9` datetime DEFAULT NULL, > > `col10` datetime DEFAULT NULL, > > PRIMARY KEY (`col1`,`col2`,`col3`,`col4`,`col5`,`col6`,`col7`), > > KEY `btr1` (`col1`,`col2`,`col3`,`col8`,`col7`), > > KEY `btr2` (`col1`,`col2`,`col3`,`col4`,`col8`,`col7`), > > KEY `btr3` (`col1`,`col2`,`col7`,`col5`), > > FULLTEXT KEY `ftx4` (`col8`) > > ) ENGINE=Mroonga DEFAULT CHARSET=utf8 COMMENT='engine "InnoDB" テスト用テーブル' > > > > > > テーブルリスト: > > mroonga_command('table_list --output_pretty yes'): [ > > [ > > ---省略--- > > ], > > [ > > 256, > > "mroonga_operations", > > "d1.mrn.0000100 <tel:0000100>", > > "TABLE_NO_KEY|PERSISTENT", > > null, > > null, > > null, > > null > > ], > > [ > > 265, > > "t1", > > "d1.mrn.0000109 <tel:0000109>", > > "TABLE_HASH_KEY|KEY_LARGE|PERSISTENT", ←「KEY_LARGE」は自分で追加しました。 > > "ShortText", > > null, > > null, > > null > > ], > > [ > > 266, > > "t1#ftx4", > > "d1.mrn.000010A", > > "TABLE_PAT_KEY|PERSISTENT", > > "ShortText", > > null, > > "TokenBigram", > > "NormalizerMySQLGeneralCI" > > ] > > ] > > > > カラムリスト1: > > mroonga_command('column_list t1 --output_pretty yes'): [ > > [ > > ---省略--- > > ], > > [ > > 265, > > "_key", > > "", > > "", > > "COLUMN_SCALAR", > > "t1", > > "ShortText", > > [ > > ] > > ] > > ] > > > > カラムリスト2: > > mroonga_command('column_list t1#ftx4 --output_pretty yes'): [ > > [ > > ---略--- > > ], > > [ > > 266, > > "_key", > > "", > > "", > > "COLUMN_SCALAR", > > "t1#ftx4", > > "ShortText", > > [ > > ] > > ], > > [ > > 267, > > "index", > > "d1.mrn.000010B", > > "index", > > "COLUMN_INDEX|WITH_POSITION|PERSISTENT", > > "t1#ftx4", > > "t1", > > [ > > ] > > ] > > ] > > > > insertファイル: > > 内容:insert(bulk)文 > > 容量:それぞれ11MB~35MB、計870MB > > 行数:各10万行、計420万行弱 > > > > 主なmrnファイル:※()内はサフィックス > > ・d1.mrn.0000109 <tel:0000109>(.001, .002, .003, 004):計4.8GB > > ・d1.mrn.000010A:12MB > > ・d1.mrn.000010B(.C):490MB > > > > ibdファイル: > > ・t1.ibd:4GB ※B-Treeインデックスでかなり増加してます。 > > > > フルテキストインデックス作成対象のカラムサイズ: > > ・420万行(全体):420MB > > ・360万行(エラー発生付近):350MB > > > > > > 以上 > > > > > > > > _______________________________________________ > > groonga-dev mailing list > > groon****@lists***** > > https://lists.osdn.me/mailman/listinfo/groonga-dev > > > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > https://lists.osdn.me/mailman/listinfo/groonga-dev > -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... URL: https://lists.osdn.me/mailman/archives/groonga-dev/attachments/20171004/ef5e78fd/attachment-0001.htm