アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のコマンドを入力してSQLファイルを作成します。
mysqldump --databases DB名 > "保存先.sql" -u root
処理が完了するとSQLファイルが作成されており、
そのファイルを復元するのですが、処理に時間がかかってしまいます。
復元は以下のコマンドです。
mysql DB名 < "保存先.sql" -u root
復元処理は行われているのですが、2時間経過しても数万件の復元しかできていません。
データはデータベース全体で200万件程度です。
バックアップの処理は20分もかからない時間で完了するのに、復元だけがこんなに時間がかかるものなのでしょうか?
環境はOSがwindowsXP pro
MySQL 4.0.26です。
その他はapache2.0.59とphp5.1.6です。
宜しくお願いします。

A 回答 (4件)

解決して良かったです ^ ^



> windowsOSのためバッチファイルを使って自動的にすべての処理
これは実運用時の処理ですよね?
 バックアップに限定すると単純に、コミットは最後に1回だけでも問題はないのですが、実運用時のバッチ処理時の場合は、処理時間だけに着目してコミットを最後だけに行うと、思わぬ障害に発生するので処理内容を検討して適切な間隔でコミットすることをお勧めします。

 バッチなどでは50~100個のSQLを実行する毎にコミットを行っていますが・・・50~100個の根拠は 問題も発生しないし、処理時間的にも妥当と思われる と思える程度です ^ ^; また、利用するTBLの利用状況によってはオート・コミットでないと危険と考えられる状況もありうるので、バックアップのリカバーとは別と考えて下さい。

この回答への補足

回答ありがとうございます。
バックアップは処理時間があまりかからないので、オートコミットのまま?で処理をしようと思います。
リカバリについては、オートコミットのままで処理をしてしまうと恐らく10時間近くかかってしまうので、オートコミットを解除して処理をしようと思います。
そこで疑問なのが、バッチ処理でのバッチファイルの記述の方法です。
MySQL文であるSET autocommit=0;という記述はバッチファイル内に記述したのでOKなのかどうかとか、オートコミットを解除したあとにリカバー処理(mysql DB名 < "保存先.sql" -u root)を実行すると先に解除したオートコミットがまた有効になってしまうのではないか?
(バッチ処理でMySQL接続→オートコミットOFF→MySQL接続解除→復元)
また、qaz_qwerty_meさんが言われている50~100個のSQL毎にコミットをする方法はどのようにするのでしょうか?
バックアップしたSQLファイルに直接記述するしか方法がないのでしょうか?
何度も申し訳ないです。宜しくお願いします。

補足日時:2006/11/10 15:01
    • good
    • 0

 明示的にコミット( commit )しなくても、自動的にコミットするオート・コミットという機能が動作していませんか?



参考に・・・
 http://dev.mysql.com/doc/refman/4.1/ja/commit.html
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご指摘のとおりコミットをset autocommit=0としてから実行すると劇的に早くなりました。
ただ、windowsOSのためバッチファイルを使って自動的にすべての処理を行いたいのですが可能なのでしょうか?
バックアップのSQLファイル内にset~と最後にcommitを入力すればできたのですが、バッチファイル内での処理で同様の処理は可能でしょうか?

お礼日時:2006/11/07 14:00

とりあえずバックアップだけが目的なら、var以下db名毎にアーカイブ


してしまうだけでもそれなりに効果があるでしょう。

この回答への補足

OSがWindowsのためVarというフォルダがありませんが、dataフォルダ配下のDB名のフォルダをアーカイブするほうが早いのかもしれませんが復元方法については、アーカイブしたものを戻すだけで問題ないでしょうか?

補足日時:2006/11/06 20:16
    • good
    • 0

推測で申し訳ないですが・・・



SQL1個を処理して必ずコミットしていませんか?
リカバーですから、コミットは最後に1回すればいいので、これが原因だと実行速度は1桁は上がると思いますよ

この回答への補足

回答ありがとうございます。
コミットするというのはどういうことでしょうか?
バックアップファイルの内容を見る限りでは、テーブル作成のSQL文がありそのあとにデータのINSERT文が続けてありコミット(commit?)というのは見当たりませんでした。

補足日時:2006/11/01 17:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す