saki kashi
saki.****@gmail*****
2014年 11月 10日 (月) 16:55:22 JST
お世話になっております。kashiharaと申します。 以前からラッパーモードを利用させていただいており、 新規サービス導入にあたってストレージモードを利用させていただいております。 そこで、気になる点が出てきたのですが、 Mroongaエンジンのテーブルでdeleteを実行し、その後selectすると mysqlが再起動してしまいます。 もし回避方法などが御座いましたら、ご教示いただけないでしょうか。 mysql:5.6.16 mroonga:4.0.7 OS:CentOS release 6.3 CREATE TABLE `product_search` ( `product_id` varchar(32) NOT NULL, `seller_id` varchar(16) DEFAULT NULL, `category_ids` text COMMENT 'flags "COLUMN_VECTOR", type "category_search"', `search_field` text, PRIMARY KEY (`product_id`), FULLTEXT KEY `idx_product_search_search_field` (`search_field`) COMMENT 'parser "TokenMecab"', FULLTEXT KEY `idx_product_search_category_ids` (`category_ids`) COMMENT 'table "category_search"' ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4 CREATE TABLE `category_search` ( `category_tag` varchar(8) NOT NULL DEFAULT '', PRIMARY KEY (`category_tag`) ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4 COMMENT='default_tokenizer "TokenDelimit"' CREATE TABLE `user_info` ( `user_id` varchar(16) NOT NULL, `id` int(11) DEFAULT NULL, PRIMARY KEY (`user_id`), KEY `idx_user_info_easy_id` (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 >delete from product_search where seller_id not in (select user_id from user_info where id in ( '355272339','355282327','355283438','355281468','355282478','355283491','355282506','355282528','355281589','355283592','355281614','355284640','355284754','355284675','355284699','355283736')); Query OK, 1857568 rows affected (13 min 25.10 sec) 削除自体は成功します。 >SELECT s.product_id FROM product_search s WHERE MATCH(s.category_ids) AGAINST('10 ') ; ERROR 2013 (HY000): Lost connection to MySQL server during query その後すぐ削除したテーブルを検索すると落ちます。 groonga.logには削除中にCannot allocate memoryのメッセージが出ています。 .027012|C|1577f700|mmap failed!!! in GRN_IO_SEG_REF(0x7f925896ce20, 78970, 1): Cannot allocate memory 大量のデータを削除した場合、Cannot allocate memoryになり、落ちてしまうのでしょうか? また、再起動後もテーブル自体が壊れる場合もあれば壊れない場合もあります。 お心当たりございましたら、ご回答いただければと思います。 どうぞよろしくお願いします。