takah****@yahoo*****
takah****@yahoo*****
2015年 10月 22日 (木) 10:16:39 JST
下記の件で御座いますが、 ご回答頂き有難う御座います。 ご回答頂きました形で改修してみます。 以上、宜しくお願い致します。 ----- Original Message ----- > From: Kouhei Sutou <kou****@clear*****> > To: groon****@lists***** > Cc: > Date: 2015/10/21, Wed 11:55 > Subject: [groonga-dev,03589] Re: loadに関して > > 須藤です。 > > In <82216****@web10*****> > "[groonga-dev,03588] loadに関して" on Wed, 21 Oct 2015 11:35:09 +0900 > (JST), > takah****@yahoo***** wrote: > >> 表題の件で御座いますが、 >> 現在、mroongaを使用して、データの取り込みを行っております。 >> >> Perlからinsertを実行しております。 >> >> 本番想定では、insertする件数が2500万回程になる為、 >> 速度が求められております。 > > 1件ずつ2500万回INSERTするということですよね。 > それだとオーバーヘッドが大きいので速度がでません。 > > 速度を上げる方法は次の2つです。 > > * バルクインサートにする。 > (1件ずつインサートするのではなくまとめてインサートする。) > * 静的なインデックス構築方法を使う。 > (データをインサートしながらインデックスを作るのではな > く、データを全部インサートした後にインデックスを作る。) > 参考: Groongaのドキュメント: > > http://groonga.org/ja/docs/reference/indexing.html#offline-index-construction > > 両方やると数十倍から数百倍から速くなっても不思議ではありませ > ん。 > >> 別の人間からinsertでは無くて、 >> groongaのloadで取り込めばという話しを頂いたのですが、 > > Groongaのloadは前述のバルクインサートに相当します。 > > > MySQLでもバルクインサートする方法があります。 > > 1つは1回のインサートで複数のVALUEを指定する方法です。 > mysqldumpの結果ではこれを使っているので参考になるはずです。 > > INSERT INTO test VALUES (...), (...), (...); > > INSERTのドキュメント: https://dev.mysql.com/doc/refman/5.6/ja/insert.html > > もう1つはLOAD DATA INFILEを使う方法です。 > > LOAD DATA INFILE 'data_file' INTO TABLE test; > > LOAD DATA INFILEのドキュメント: https://dev.mysql.com/doc/refman/5.6/ja/load-data.html > > LOAD DATA INFILEの方が速いですが、サーバー上にファイルを置か > ないといけなかったり少し面倒なのでまずは1回のインサートでやっ > てみて十分な速度になるか確認するのがよいかと思います。 > > > もう1つの高速化の方法の静的なインデックス構築を使うには次の > ようにします。 > > ALTER TABLE test DISABLE KEYS; > -- データをロードする。 > -- INSERT INTO test VALUES ...; > ALTER TABLE test ENABLE KEYS; > > ALTER TABLEのドキュメント: https://dev.mysql.com/doc/refman/5.6/ja/alter-table.html > > DISABLE KEYSでインデックスが無効になります。この状態でデータ > をロードします。ロード完了後にENABLE KEYSでインデックスを有 > 効にすると、既存データから一気にインデックスを作ります。 > > DISABLE KEYSからENABLE KEYSのあいだはインデックスを使って検 > 索できなくなりますが、今回のケースでは検索することはないと思 > うので問題ないかと思います。 > > > どちらもやるのが一番効果がでると思いますが、たぶん、静的なイ > ンデックス構築にするだけでもかなり違うと思います。 > > > -- > 須藤 功平 <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/ > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev >