MariaDBには超高速な全文検索を実現するMroongaストレージエンジンがバンドルされていることを知っていますか?Mroongaを使うと日本語だけでなくアジア圏の言語も含むすべての言語をサポートした超高速な全文検索システムを簡単に作ることができます。どれだけ簡単に作ることができるか紹介します。
MySQLにおけるインデックスの制限 MySQLでは、1つのクエリにつき1つのインデックスしか利用できないという制限がある。これを回避するために、MySQLでは、一般的に複合インデックスが用いられる。 しかしながら、全文検索を行う場合、フルテキストインデックスが優先して使われるため、その他のインデックスを用いて、高速にソートやカウント、絞込みができないという問題がある。 mysql> SELECT COUNT(*) FROM ftext WHERE MATCH(title,abstract,description) AGAINST("+装置" IN BOOLEAN MODE) AND kind LIKE "U%"; +----------+ | COUNT(*) | +----------+ | 174752 | +----------+ 1 row in set (2.98 sec) m
Mroonga(ストレージモード)はトランザクション非対応だから、ラッパーモードでInnoDBにしてトランザクション…とか考えているとハマる(かもしれない)落とし穴。 Mroongaのラッパーモードは「データは任意のストレージエンジンに」「転置索引はGroonga上に」作るモードであって、飽くまでGroonga上ではトランザクションは利きません。つまり、こういうことが起こる。 mysql56> CREATE TABLE t1 (num int, val varchar(32), primary key(num), fulltext key(val)) Engine= Mroonga COMMENT= 'engine "innodb"'; Query OK, 0 rows affected (0.09 sec) mysql56> INSERT INTO t1 VALUES (1, 'yoku
2014-06-06 RDSからEC2上のMySQL(mroonga)にレプリケーションする RDS Mroonga AWS MySQL ■したいこと RDSをマスター、EC2上のMySQLそスレーブとして、レプリケーションさせる ※RDS側のテーブルのストレージエンジンはInnoDBだがスレーブ側のMySQLのストレージエンジンはMroongaにしたい。 ■time_zoneを合わせておく Aisa/Tokyoで揃えたかったので、RDSとEC2上MySQLのtime_zoneはAsia/Tokyoにしました。 (タイムゾーンをお互い違うままでやったら、レプリケーションエラーになった) RDS側(ちとめんどい) http://dev.classmethod.jp/cloud/aws/change-timezone-on-amazon-rds-mysql/ MySQL側 my.cnf def
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く