mysql:5823
From: (Matsuzaki Takaharu) <<PH5T-MTZK@xxxxxxxxxx>>
Date: 19 Jul 2002 19:55:35 +0900
Subject: [mysql 05823] $BBgNL%G!<%?$N(Jimport$B$K$D$$$F(J
いつも非常に有益な情報、とても感謝しております。 始めての投稿となります松崎と申します。 大量データのimportについて質問させて下さい。 現在「MySQL 3.22.32」で以下のようなシェルを用いてDB「DB01」から 「DB02」へテーブル「table01」をコピーしています。 【isam型ファイルへのデータimport用シェル/サーバ1】 #!/bin/bash mysql -e "drop table table01" DB02 mysqldump -q --tab=/home/user01 --fields-terminated-by="\t" --lines-terminated-by="\n" DB01 table01 mysql DB02 < /home/user01/table01.sql isamchk --keys-used=0 -rq /usr/local/mysql/var/DB02/table01 mysqlimport DB02 /home/user01/table01.txt isamchk -r -q /usr/local/mysql/var/DB02/table01 mysqladmin flush-tables このシェルは「2時間」程度で完了します。 今度、別サーバでMySQLを稼動させることになり、ついでに「MySQL 3.23.41」にバージョンアップしました。 上記のシェルをmyisam用に変更し実行すると、なぜか「15時間」以上 もかかってしまいます。 ちなみにMyISAM型へロードする際のデータは、isam型の場合と同じ データを使用しています。 【MyISAM型ファイルへのデータimport用シェル/サーバ2】 #!/bin/bash mysql -e "drop table table01" DB02 myisamchk --keys-used=0 -rq /var/lib/mysq/DB02/table01 mysql DB02 < /home/user01/table01.sql mysqlimport --local DB02 /home/user01/table01.txt myisamchk -r -q /var/lib/mysq/DB02/table01 mysqladmin flush-tables 主な環境等は以下の通りです。 【サーバ1】 ・OS:RedHatLinux6.2 ・MySQL:mysql Ver 9.38 Distrib 3.22.32, for pc-linux-gnu (i686) 【サーバ2】 ・OS:RedHatLinux7.2 ・MySQL:mysql Ver 11.15 Distrib 3.23.41, for redhat-linux-gnu (i386) 【ロードデータ】 ・トータルデータサイズ: 2.5Gbyte ・トータルデータ件数 : 26601040 レコード ≪質問内容≫ (1) なるべく早くimportするために「indexストップ」→「import」→「index再 作成」をおこなっているにも関わらず、なぜ「15時時間以上」もかかる のでしょうか? (2) また「indexを --keys-used=0 -rq」でストップした状態でimportしたにも 関わらず、長時間「table01.MYI」のサイズが増減していました。 MySQL3.23では「 --keys-used=0 -rq」を行っても意味がないので しょうか? (3) ちなみに「MySQL3.23」のMySQLのファイルタイプを「isam型」にして importしてみたところindexの作成まで込みで1時30分程度で終了しま した。MyISAMタイプはメリットもあるが、index作成に時間がかかる等 のデメリットがあるのでしょうか? 『備考』 ・「MySQL&mSQL(オライリー)」を参考にして、myisamchk時に「MySQL」 をストップしても結果に変化は見られませんでした。 ・isam型でimportした後に「alter table table01 type=myisam」でMyISAM 型に変更しても、それだけ(alter tableの処理のみ)で15時間かかりました。 長くなってしまい申し訳ありません。 もう二ヶ月ほど悩んでます。(悲) どなたかご意見や解決方法があれば教えて下さい。 よろしくお願いします。