2009-03-10 12 views
2

非常に重要な列(日付)にインデックスがないプロダクションテーブルを使用している場合、ユーザーインパクトなしで前記インデックスを適用する方法はありますか?ロックしないでMySQL/MyISAMテーブルにインデックスを適用するにはどうすればいいですか?

テーブルは現在、毎秒約5〜10個の挿入を取得しているため、完全なテーブルのロックが解除されています。一時的であっても、これらの挿入物を代替テーブル/データベースにリダイレクトすることも拒否されています(企業政治上の理由から)。他の方法?

答えて

2

私が知る限り、これはMyISAMでは不可能です。 1秒あたり5〜10回のINSERTを行うと、読んでいない限り、InnoDBはとにかく考慮する必要があります。

レプリケーションを使用していますか?マスターマスターセットアップでは好ましいですか? (そうすべきです!)そうであれば、スタンバイサーバー上でCREATE INDEXを実行し、役割を切り替えて同じことをしてから元に戻します。 CREATE INDEXをアクティブノードに複製しないように、複製を一時的に無効にしてください(master-masterを使用する場合)。

主にログをアーカイブするためにそのテーブルを使用するかどうかによって、アーカイブストレージエンジンを調べることもできます。

+0

間違いなく、InnoDBに移動してください - 最近のうちにMyISAMテーブルが壊れてしまい、実際の政治的問題が発生することがあります。とにかく、この答えは正しいです。レプリケーションを実行していない場合は、政治家に必要なことを伝えてください。 –

関連する問題