sql >> データベース >  >> RDS >> Mysql

InnoDBでインデックスを再構築します

    SHOW TABLE STATUSを実行しましたか ドロップ+リビルドの前後? Index_lengthは大きく変わりますか?おそらく2倍でもないでしょう。

    InnoDBで何かを再構築することはほとんどお勧めしません。それはそれだけの価値はありません。明白な例外は、FULLTEXTと関係があります インデックス。

    はい、ダミーのALTER インデックスを再構築します。したがって、OPTIMIZE TABLE 。どちらも、セカンダリインデックスBTreeとメインBTree(データとPRIMARY KEYを含む)を(ある程度)「最適化」します。 。

    統計は多く ANALYZE TABLEだけを使用してより安価に更新 。それでも必要になることはあまりありません。 5.6には、統計を維持するためのはるかに優れた方法があります。

    innodb_file_per_table=ONをまだ使用していない場合 、設定することをお勧めします(SET GLOBAL ... )そしてALTER TABLE tbl ENGINE=InnoDB;を実行します 最後にもう一度。

    オンライン変更

    ft_*を変更するには 、インデックスを再構築する必要があります。これは、ALTERを意味します (またはOPTIMIZEALTERとして実装されます )。 MySQLの新しいバージョンにはALGORITHM=INPLACEがあります これにより、ALTER 実行中のシステムにほとんどまたはまったく影響を与えません。ただし、制限があります。マニュアルを確認してください。

    非INPLACEALTERの代替 pt-query-digestです またはgh-ost 。どちらかがあなたのケースで機能するかどうかを確認してください。

    「テーブルの再構築」を除いて、DROP INDEX ...を実行できます。 およびADD INDEX ... 。繰り返しますが、これらがFTインデックスに対して「インプレース」で機能するかどうかはわかりません。とにかく、プロセス中にそのインデックスを使用できなくなります。




    1. 多形テーブルの列ごとのLaravel注文結果

    2. `having`で`rand()`を使用する

    3. MySQLで生のクエリだけをログに記録するにはどうすればよいですか?

    4. PDOを使用してPHPでMySQLデータベースのリストを取得するにはどうすればよいですか?