Kouhei Sutou
kou****@clear*****
2015年 9月 30日 (水) 22:20:14 JST
須藤です。 In <20150****@domai*****> "[groonga-dev,03517] Re: Mroonga で data truncated for primary key column: <id> が発生する" on Mon, 28 Sep 2015 13:11:32 +0900, 各務 洋 <kagam****@outwa*****> wrote: >> 手元でも試してみたいので、実際のテーブル定義を教えてもらうこ >> とはできないでしょうか!? > > テストを行ったのは下記になります。 ありがとうございます。 > ↑が全て実行中なのを確認しながら、mysqld を 何回も killする > # kill -9 `ps ax|egrep -i "/usr/sbin/mysqld --basedir"|egrep -v "grep"|awk '{print $1}'` おぉ。。。 mysqldがクラッシュするケースだったんですね。。。 それなら壊れてもおかしくないです。。。 > この、「ロックが残留」している状態というのは、他に確認する方法があるよ > うでしたら試してみたいと思いますが、何かございますか? Rroonga経由でCのAPIを呼んで確認するという方法はありますが、 やっていることはgrndb checkと変わらないので、grndb check と結果は変わらないです。 > ここ数ヵ月でだいぶ減りましたが、現象としては値の破損より Index の破損 > の方が多いので、この点が何か分かればなぁと思っています。 MroongaレベルではGroongaの複数の操作で1つのMroongaの操作を実 現しているものがあります。 たとえば、UNIQUE KEYの場合は、最初にUNIQUE KEYを管理する Groongaのテーブルにキーを追加しようと試みて、追加できたらレ コードの中身を保存していく、という処理で実現しています。 もし、キーを追加した直後にクラッシュしたらキーだけが残ってレ コードが作られていない状態になります。この状態でもGroonga的 には壊れていない(ロックが残留していない)状態ですが、 Mroonga的には壊れている状態になります。 そういう状態になっているのではないかと思います。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/