[groonga-dev,02224] Re: MroongaストレージモードでINSERT, DELETEが競合してクラッシュ

Back to archive index

yoku ts. yoku0****@gmail*****
2014年 4月 16日 (水) 10:14:21 JST


おはようございます。

早速の対応ありがとうござ…あれ?

> DELETE FROM tableがきたらTRUNCATE TABLE tableと同じ処理をする
> ようにしていたんですが、TRUNCATEは速い代わりに他のコネクショ
> ンがつないでいるときに実行してしまうとクラッシュするので、1
> 件ずつ削除するようにしました。

先生、その(delete_all_rowsをstorage_truncateに送る)動作よりも、
storage_truncate(からgrn_table_truncate)の動作で落ちないようになると嬉しいです!

内部的に削除, 再作成になるので、grn_io_lockは使えないという感じでしょうか。
mysql_lock_tablesをstorage_truncateのアタマあたりに入れられたりすると良いような気がするのですが。。

ご一考ください。


yoku0825


2014年4月15日 23:26 Kouhei Sutou <kou****@clear*****>:

> 須藤です。
>
> In <CAHB5oTMCCxUkR13o5_o=6VAMK****@mail*****>
>   "[groonga-dev,02222] MroongaストレージモードでINSERT, DELETEが競合してクラッシュ" on Tue,
> 15 Apr 2014 12:36:22 +0900,
>   "yoku ts." <yoku0****@gmail*****> wrote:
>
> > 恒例(?)のクラッシュ報告になります。。
>
> ありがとうございます。。。
>
> > 再現手順は以下の通りです。
> >
> > #下準備
> > mysql> CREATE DATABASE mroonga;
> > mysql> CREATE TABLE test (num int) Engine= Mroonga;
> >
> > # ターミナル1
> > $ while true; do
> >> mysql -e "INSERT INTO mroonga.test VALUES (1)"
> >> done
> >
> > # ターミナル2
> > mysql> DELETE FROM mroonga.test;
> >
> > 1回で落ちないこともたまにあったり(INSERT側でエラーが出たりしました)しますが、
> > まあまあまず落ちます。
> >
> > ご確認いただけますか?
>
> 直しました!
>
> DELETE FROM tableがきたらTRUNCATE TABLE tableと同じ処理をする
> ようにしていたんですが、TRUNCATEは速い代わりに他のコネクショ
> ンがつないでいるときに実行してしまうとクラッシュするので、1
> 件ずつ削除するようにしました。
>
> 速く全レコードを消したくてTRUNCATE TABLEを使いたいときは、
>
>   > LOCK TABLES mroonga.test WRITE;
>   > TRUNCATE TABLE mroonga.test;
>   > UNLOCK TABLES;
>
> としてください!
>
>
> 余談: TRUNCATE TABLEが速いのは1件毎レコードを削除するのではな
> く、テーブルをまるごと削除してから新しく作りなおしているから
> です。なので、レコード件数が少ないときはDELETEの方が速いです。
> まぁ、テスト用で頻繁にTRUNCATEしたくて、データ量がそんなに大
> きくない場合は、MySQLのデータディレクトリーをtmpfsに置くのが
> 一番速いです。
>
>
> --
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
>
> Groongaサポート:
>   http://groonga.org/ja/support/
> パッチ採用はじめました:
>   http://www.clear-code.com/recruitment/
> コードリーダー育成支援はじめました:
>   http://www.clear-code.com/services/code-reader/
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>



groonga-dev メーリングリストの案内
Back to archive index