1

こんにちは私はMysql5.0.xを使用しています

多くのテーブルをMyISAMからInnoDBに変更しました

MyISAMテーブルの場合、データベースのインストールには約1分かかりました。InnoDBの場合、同じデータベースのインストールには約15分かかります。

なぜInnoDBはそんなに時間がかかるのですか?

物事をスピードアップするために何ができますか?

データベースのインストールは次の手順を実行します

1)スキーマを削除します

2)スキーマを作成します

3)テーブルを作成する

4)ストアドプロシージャを作成します

5)デフォルトデータを挿入します

6)ストアドプロシージャを介してデータを挿入します

編集:

デフォルトデータの挿入にはほとんどの時間がかかります

4

3 に答える 3

5

Insert Data ステップを変更して、最初にトランザクションを開始し、最後にコミットするようにします。あなたは改善を得るでしょう、私はそれを保証します。(大量のデータがある場合は、トランザクションをテーブルごとに分割することをお勧めします。)

アプリケーションでトランザクションをまったく使用しない場合は、パラメーターを 2 に設定する必要がありinnodb_flush_log_at_trx_commitます。これにより、ほぼ確実に auto_commit が有効になり、InnoDB のデフォルトパラメーターが構成されているよりも多くのトランザクションが生成されるため、パフォーマンスが大幅に向上します。 . この設定により、コミットのたびに不必要にディスク バッファーをフラッシュすることがなくなります。

于 2009-04-29T23:29:49.617 に答える
3

15分は私には長すぎるとは思えません。結局のところ、それは 1 回限りのコストです。

確かではありませんが、説明の一部は参照整合性が自由ではないということだと思います。InnoDB はそれを保証するためにより多くの作業を行う必要があるため、当然、より多くの時間がかかります。

テーブルの作成後に制約を追加するには、スクリプトを変更する必要があるかもしれません。

于 2009-01-19T11:22:38.867 に答える
0

ダフィモが言ったように、データを挿入する前に制約(インデックスとフォアイング/プライマリキー)を無効にしてください。

多くの選択ステートメントを使用する場合は、ストアド プロシージャを介して挿入されたデータの前にいくつかのインデックスを復元する必要があるかもしれません。

于 2009-01-19T12:27:05.197 に答える