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になり、落ちてしまうのでしょうか?
また、再起動後もテーブル自体が壊れる場合もあれば壊れない場合もあります。
お心当たりございましたら、ご回答いただければと思います。
どうぞよろしくお願いします。