0

MyISAM という非常に巨大な Mysql テーブルがあります。テーブルの最適化コマンドを実行するたびに、テーブルがロックされ、パフォーマンスが影響を受けます。テーブルは読み取り専用ではないため、一時テーブルを作成してそれらを交換してもうまくいかない場合があります。テーブルを分割することもできません。

パフォーマンスを低下させることなく最適化テーブル機能を実現する他の方法/ツールはありますか? どんな提案でも大いに役立ちます。

前もって感謝します。

4

2 に答える 2

0

http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html

InnoDB テーブルの場合、OPTIMIZE TABLE はテーブルを再構築する ALTER TABLE にマップされます (...)

したがって、Quassnoi がおそらく示唆しているように、InnoDB への切り替えによる改善は期待できません。

定義上、OPTIMIZE TABLE はテーブルへの排他的アクセスを必要とするため、OPTIMIZE 化中のパフォーマンスが低下します。

それにもかかわらず、テーブルがどのように「巨大」であるかに応じて、OPTIMIZE にかかる時間を短縮するために実行する手順がいくつかある場合があります。

  • テーブルに多くのフィールドがある場合、テーブルを正規化する必要がある場合があります。逆に、列をいくつかの「より狭い」テーブルに広げて、テーブルを非正規化し、1 対 1 の関係を確立したい場合があります。
  • テーブルに多数のレコードがある場合は、アプリケーション コードに「手動」パーティション分割を実装します。簡単な手順は、めったに更新されないレコードを保持する「アーカイブ」テーブルを作成することです。この方法では、より小さなレコード セット (非アーカイブ テーブル) のみを最適化する必要があります。
于 2012-06-09T10:13:29.160 に答える