2017-11-06 4 views

答えて

0

REPAIRおよびOPTIMIZEは、クラッシュセーフであるように設計されています。 (または少なくとも大部分は)

OPTIMIZEたとえば、テーブルをtmpテーブル名にコピーします。終了すると、内部的には高速でアトミックなRENAME TABLEが実行されます。

OPTIMIZEは、ごくまれにしかMyISAMで必要とされません。 InnoDBではそれほど必要とされません。あなたのユースケースは何ですか?私はおそらくそれが「役に立たない」または「努力する価値がない」と反対するだろう。

修理はMyISAMにのみ必要です。私はあなたが古いエンジンを使用していないことを願っています。

詳細

  • のInnoDBへの切り替えを検討。我々はこれについてさらに議論することができる。 REPAIRは必要性が低く、自動化されています。
  • スキーマとは何ですか?データフローはどのようなものですか?インデックスが古くなるのを避けるためのヒントがあります。
  • インデックスの破損についての苦情がないのにクエリが突然遅い場合は、代わりにANALYZE TABLEを使用してください(この場合は、.MYDファイルのレイアウト方法はの場合は問題あり)。
+0

返信ありがとうございました。あなたは最適化について正しいです。私の場合、それはそれほど有用ではありませんが、修復は役に立ちます。私の場合、定期的に修復が必要な非常に大きなMyISAMテーブルがあります。これは時間の経過とともに非常に遅くなり、PHPMyAdminでテーブルの修復を通知するためです。テーブルを修復すると、10GBのテーブルでは約30分かかりますが、修復後にクエリ時間が大幅に減ります。ただし、20GBを超えるテーブルは修復に約2時間かかります。プロセスを中断する必要がある場合もありますが、実際にはこれを実行したことはありません。 – Turab

+0

コメントを追加しました。 –

+0

私は現在、Row-Level-Lockingが大好きであるため、InnoDBを技術的な意思決定に使用していますが、現在の状況では、実際に書き込まれたビジネスロジックが原因で行レベルロックがテーブルデータを破壊します。そして、それは巨大なシステムなので、InnoDBを組み込むロジックの一部を書き直すことはできません。 – Turab

関連する問題