mysql:13971
From: Hiroki Tamakoshi <Hiroki Tamakoshi <hiroki.tamakoshi@xxxxxxxxxx>>
Date: Mon, 21 May 2007 10:26:30 +0900
Subject: [mysql 13971] Re: 高速なデータの書き込み方法
こんにちは、株式会社ビービットの玉越です。 平塚様、ありがとうございます。 テストしていただいたとは本当に頭が下がります。 メールを拝見して全身に脱力感がありました。 見事にO(n^2)ですね。 早速500行ごとに書き込むように変更してみました(少し速くなったようです)。 > I/Oも少しは出ていますが、こちらの環境ではほぼCPUネックです。 という点が少し分かりかねますが、これは書き込みの時間ではなくCPU処理時間 の差でしょうか? こちらでは、書き込み時間が殆どを占めています。 また、もしかしてRAIDカードのwrite backキャッシュが使われていないのかも、 と思い確認してみたところ、write throughになっていました。ショックです。 今設定し直したので速度を計測し直します。 On Fri, 18 May 2007 13:33:55 +0900 HIRATSUKA Sadao <hiratsuka.sadao@xxxxxxxxxx> wrote: > 平塚です。 > > > > VALUES ..., ..., ...の部分は多くても128MBです。 > > > (bulk_insert_buffer_size=128Mにしています。あふれたらエラーになるはずで > > > すが、エラーになっていません) > > いくつかデータを作って実験してみたところ、興味深い結果がでました。 > > INSERT ... VALUES ..., ..., ... ON DUPLICATE KEY UPDATE ...のSQLは、 > 「VALUES ..., ..., ...」←ここで一度にバルクINSERT (or UPDATE)する行数の > 二乗に比例した時間がかかります。 > > レコード長100バイト、13万レコードのテーブルで > INSERT ... ON DUPLICATE KEY UPDATEをすると、 > 一度に処理する行数に対して処理時間が以下のようになりました。 > > 125行:0.06秒 > 250行:0.26秒 > 500行:1.01秒 > 1,000行:4.04秒 > 2,000行:16.09秒 > 4,000行:64.00秒 (このときのテスト用SQL文は453KB) > > I/Oも少しは出ていますが、こちらの環境ではほぼCPUネックです。 > きっと内部アルゴリズムがとても残念な実装になっているのだと思います。 > > > > > VALUES ..., ..., ...の部分は多くても128MBです。 > > ということで > ここを数十KBにおさえて、繰り返し実行するようにするとどうでしょうか。 > > > よろしくお願いいたします。 > > -- > 平塚貞夫 hiratsuka.sadao@xxxxxxxxxx > NTTコムウェア株式会社 プロジェクト管理統括部 技術SE部門 DB技術グループ > Tel:043-211-2318 Fax:043-211-5064 > > -- 株式会社ビービット 玉越 大輝 ユーザビリティ コンサルタント beBit,Inc. Tamakoshi Hiroki hiroki.tamakoshi@xxxxxxxxxx -------------------------------------------------------- 〒105-0001 東京都港区虎ノ門1-18-1 虎ノ門10森ビル7F TEL: 03-3509-7602 / FAX: 03-3509-7605 URL: http://www.bebit.co.jp/ -------------------------------------------------------- ◆◆◆お知らせ◆◆◆ ・ビービット新刊書籍 『ユーザ中心ウェブサイト戦略』発売 http://www.bebit.co.jp/news/2006/book.html http://www.amazon.co.jp/gp/product/4797333529/
13957 2007-05-17 21:01 [Hiroki Tamakoshi <hi] 高速なデータの書き込み方法 13958 2007-05-17 23:20 ┗["Yoshio Kawano" <kaw] 13959 2007-05-18 13:02 ┗[Hiroki Tamakoshi <hi] 13960 2007-05-18 13:33 ┣[HIRATSUKA Sadao <hir] -> 13971 2007-05-21 10:26 ┃┗[Hiroki Tamakoshi <hi] 13973 2007-05-22 11:46 ┃ ┗[HIRATSUKA Sadao <hir] 13974 2007-05-22 14:54 ┃ ┗[Hiroki Tamakoshi <hi] 14007 2007-05-25 11:08 ┃ ┗[Hiroki Tamakoshi <hi] 14008 2007-05-25 11:15 ┃ ┣[<ml@xxxxxxxxxx> ] 14009 2007-05-25 11:33 ┃ ┃┗[Hiroki Tamakoshi <hi] 14010 2007-05-25 14:10 ┃ ┃ ┗["橋本健太" <kem@xxxx] 14022 2007-05-28 00:51 ┃ ┗[とみたまさひろ <tomm] 14023 2007-05-28 12:17 ┃ ┗[Hiroki Tamakoshi <hi] 14024 2007-05-28 14:48 ┃ ┗["KIMURA, Meiji" <kim] 13961 2007-05-19 00:13 ┗[とみたまさひろ <tomm] 13962 2007-05-19 11:05 ┗[坂井 英夫 <hide_s@xx] データベースをRAID5に置く 13963 2007-05-19 12:13 ┣[とみたまさひろ <tomm] 13964 2007-05-19 12:41 ┃┗[坂井 英夫 <hide_s@xx] 13965 2007-05-19 13:15 ┣[kurokawa <ml@xxxxxxx] 13966 2007-05-19 13:57 ┃┗[ひでさん <hide_s@xxx] 13967 2007-05-19 14:14 ┃ ┗[N.Toge <toge@xxxxxxx] 13968 2007-05-19 15:10 ┃ ┗[ひでさん <hide_s@xxx] 13969 2007-05-20 06:58 ┗[Kenji Irie <kenji@xx] 13970 2007-05-20 09:31 ┗[ひでさん <hide_s@xxx]