私は、2つの符号なしintフィールド、例えばf1とf2からなるMySQL MYISAMテーブル(例えばtbl)を持っています。 f2には索引があり、表は非常に大きい(約320,000,000+行)。私はこのテーブルを定期的に更新し(週に約100,000の新しい行を持つ)、ORDER BYを実行せずにこのテーブルを検索できるようにするために(リアルタイムクエリでは時間がかかります)、テーブルを物理的にORDERします私はその行を取得する方法に応じて。MySQL ALTER TABLE ORDER BY f1 DESC - SELECTクエリをブロックしますか?
したがって、私はALTER TABLE tbl ORDER BY f1 DESCを実行します。 (私はテーブルのコピーのための十分な物理的なスペースがサーバー上にあることを知っています)。この操作中に一時テーブルが作成され、SELECTステートメントは現在の行に影響を与えません。
しかし、私はこれが当てはまらず、ALTERテーブルで同時に発生するテーブルのSELECTステートメントがブロックされて終了しないことを経験しました。 ALTER TABLE tblが完了すると(実動サーバー上で約40分)、tblのSELECTステートメントは再び正常に実行されます。
"ALTER table tbl ORDER BY f1 DESC"が他のクライアントからtblを照会できないような理由はありますか?
ご意見ありがとうございます。 InnoDBパーティショニングについて詳しく説明します。 – Tim