Naoya Murakami
visio****@gmail*****
2013年 9月 3日 (火) 17:12:04 JST
お世話になっております。村上です。 本件、自己解決しました。 mysqlのMAX_INDEXESを修正してビルドした後、mroongaを 再ビルドすることにより、mroongaでも64を超えるインデックスが 使えるようになりました。 最初は、mroongaとmysqlのMAX_INDEXESの値に祖語があったようです。 今後は、もう少し、試行錯誤してから質問することにします。 失礼しました。 以上、よろしくお願いします。 2013年9月3日 9:54 Naoya Murakami <visio****@gmail*****>: > お世話になっております。村上です。 > > MySQLでは、1つのテーブルのインデックス数の上限が64個に設定されています。 > 64個を超えるインデックスを作ろうとすると、 > #1069 - Too many keys specified; max 64 keys allowed > といわれます。 > > この設定値は、5.7.1からはcmakeのオプション-DMAX_INDEXS=N、 > configureであれば、--with-max-indexes=Nを指定して > MySQLをビルドすることにより増やすことができます。 > > http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-buildopts.html > > 5.5.14でもconfig.h.cmakeを修正することにより上限を増やすことができました。 > なお、5.5.14では121以上にするとクラッシュするようです。 > #define MAX_INDEXES 100 > http://bugs.mysql.com/bug.php?id=54127 > http://bugs.mysql.com/bug.php?id=66560 > > このようにしてMySQLをビルドすることにより、MyISAMでは、64を超える > インデックスを扱うことができます。 > > しかしながら、mroongaストレージモードで64を超えるインデックスを > 作成したテーブルにinsert等すると、mysqldがクラッシュします。 > > Q.mroongaでは1テーブルに64を超えるインデックスが扱えないのは > 仕様でしょうか?仕様であれば、あきらめます。 > なお、groongaには、カラムストアという大きなメリットがあるため、 > カラムが増えてもパフォーマンスに影響がなく、 > また、あまりに大きいテーブルのjoinは実用に耐え得ないため、 > 64個を超えるインデックスが扱えると非常にうれしいなぁと思っています。 > > > CREATE TABLE IF NOT EXISTS `many_columns` ( > `1` varchar(20) NOT NULL, > `2` varchar(20) NOT NULL, > `3` varchar(20) NOT NULL, > `4` varchar(20) NOT NULL, > `5` varchar(20) NOT NULL, > `6` varchar(20) NOT NULL, > `7` varchar(20) NOT NULL, > `8` varchar(20) NOT NULL, > `9` varchar(20) NOT NULL, > `10` varchar(20) NOT NULL, > `11` varchar(20) NOT NULL, > `12` varchar(20) NOT NULL, > `13` varchar(20) NOT NULL, > `14` varchar(20) NOT NULL, > `15` varchar(20) NOT NULL, > `16` varchar(20) NOT NULL, > `17` varchar(20) NOT NULL, > `18` varchar(20) NOT NULL, > `19` varchar(20) NOT NULL, > `20` varchar(20) NOT NULL, > `21` varchar(20) NOT NULL, > `22` varchar(20) NOT NULL, > `23` varchar(20) NOT NULL, > `24` varchar(20) NOT NULL, > `25` varchar(20) NOT NULL, > `26` varchar(20) NOT NULL, > `27` varchar(20) NOT NULL, > `28` varchar(20) NOT NULL, > `29` varchar(20) NOT NULL, > `30` varchar(20) NOT NULL, > `31` varchar(20) NOT NULL, > `32` varchar(20) NOT NULL, > `33` varchar(20) NOT NULL, > `34` varchar(20) NOT NULL, > `35` varchar(20) NOT NULL, > `36` varchar(20) NOT NULL, > `37` varchar(20) NOT NULL, > `38` varchar(20) NOT NULL, > `39` varchar(20) NOT NULL, > `40` varchar(20) NOT NULL, > `41` varchar(20) NOT NULL, > `42` varchar(20) NOT NULL, > `43` varchar(20) NOT NULL, > `44` varchar(20) NOT NULL, > `45` varchar(20) NOT NULL, > `46` varchar(20) NOT NULL, > `47` varchar(20) NOT NULL, > `48` varchar(20) NOT NULL, > `49` varchar(20) NOT NULL, > `50` varchar(20) NOT NULL, > `51` varchar(20) NOT NULL, > `52` varchar(20) NOT NULL, > `53` varchar(20) NOT NULL, > `54` varchar(20) NOT NULL, > `55` varchar(20) NOT NULL, > `56` varchar(20) NOT NULL, > `57` varchar(20) NOT NULL, > `58` varchar(20) NOT NULL, > `59` varchar(20) NOT NULL, > `60` varchar(20) NOT NULL, > `61` varchar(20) NOT NULL, > `62` varchar(20) NOT NULL, > `63` varchar(20) NOT NULL, > `64` varchar(20) NOT NULL, > `65` varchar(20) NOT NULL, > `66` varchar(20) NOT NULL, > `67` varchar(20) NOT NULL, > `68` varchar(20) NOT NULL, > `69` varchar(20) NOT NULL, > PRIMARY KEY (`1`), > KEY `2` (`2`), > KEY `3` (`3`), > KEY `4` (`4`), > KEY `5` (`5`), > KEY `6` (`6`), > KEY `7` (`7`), > KEY `8` (`8`), > KEY `9` (`9`), > KEY `10` (`10`), > KEY `11` (`11`), > KEY `12` (`12`), > KEY `13` (`13`), > KEY `14` (`14`), > KEY `15` (`15`), > KEY `16` (`16`), > KEY `17` (`17`), > KEY `18` (`18`), > KEY `19` (`19`), > KEY `20` (`20`), > KEY `21` (`21`), > KEY `22` (`22`), > KEY `23` (`23`), > KEY `24` (`24`), > KEY `25` (`25`), > KEY `26` (`26`), > KEY `27` (`27`), > KEY `28` (`28`), > KEY `29` (`29`), > KEY `30` (`30`), > KEY `31` (`31`), > KEY `32` (`32`), > KEY `33` (`33`), > KEY `34` (`34`), > KEY `35` (`35`), > KEY `36` (`36`), > KEY `37` (`37`), > KEY `38` (`38`), > KEY `39` (`39`), > KEY `40` (`40`), > KEY `41` (`41`), > KEY `42` (`42`), > KEY `43` (`43`), > KEY `44` (`44`), > KEY `45` (`45`), > KEY `46` (`46`), > KEY `47` (`47`), > KEY `48` (`48`), > KEY `49` (`49`), > KEY `50` (`50`), > KEY `51` (`51`), > KEY `52` (`52`), > KEY `53` (`53`), > KEY `54` (`54`), > KEY `55` (`55`), > KEY `56` (`56`), > KEY `57` (`57`), > KEY `58` (`58`), > KEY `59` (`59`), > KEY `60` (`60`), > KEY `61` (`61`), > KEY `62` (`62`), > KEY `63` (`63`), > KEY `64` (`64`), > KEY `65` (`65`), > KEY `66` (`66`), > KEY `67` (`67`), > KEY `68` (`68`), > KEY `69` (`69`) > ) ENGINE=mroonga DEFAULT CHARSET=utf8; > > insert into many_columns(`1`,`2`) values (1,2); > > > 以上、よろしくお願いします。 >