非常に重要な列 (日付) にインデックスがない実稼働テーブルがある場合、ユーザーに影響を与えずにそのインデックスを適用する方法はありますか?
現在、テーブルは毎秒約 5 ~ 10 回の挿入を取得しているため、完全なテーブル ロックは無効になっています。これらの挿入を代替テーブル/データベースにリダイレクトすることも、一時的であっても拒否されます (企業政治上の理由により)。他の方法はありますか?
私の知る限り、これは MyISAM では不可能です。1 秒あたり 5 ~ 10 回の INSERT がある場合は、あまり読んでいない場合を除き、とにかく InnoDB を検討する必要があります。
レプリケーションを使用していますか? マスター - マスター セットアップが望ましいですか? (そうすべきです!) その場合はCREATE INDEX
、スタンバイ サーバーで役割を切り替えて同じことを行い、元に戻すことができます。CREATE INDEX
をアクティブ ノードに複製しないように、複製を一時的に無効にしてください (master-master を使用する場合) 。
そのテーブルを主にアーカイブ ログなどに使用するかどうかに応じて、アーカイブ ストレージ エンジンを調べることもできます。