私はInnoDBエンジンにあるテーブルを持っています.25000行のテーブルがあります。MySQL(Percona 5.7)InnoDBエンジンを搭載した遅いALTERテーブル...?
mysql> ALTER TABLE `quote_followups_istvan`
ADD `customer_ip2` VARCHAR(20) NOT NULL DEFAULT '' AFTER `comment`;
クエリOK、0行影響を受けた(10分52.82秒) レコード:0重複:0警告:0
しかし、私は、私はシンプルなALTERを行うと、それはほとんど10分間走りますそれはMyISAMテーブルにエンジンの変更、私はこれを取得:
mysql> alter table quote_followups_istvan engine="MyISAM";
クエリOK、影響を受けた25053行(0.56秒) レコード:25053の重複:0警告:0
私はここで行方不明0だから、10分0.37s対....
何AMD:
影響を受けるクエリOK、25053行(0.37秒) レコード:25053の重複:0警告?
編集: 特定のALTERクエリには(明らかに)時間がかかっていましたが、なぜその理由がわかりません。たとえば、エンジンの変更は高速だったので、それは問題であるALTER自体ではありません。 –
オレンジ色の食事には90秒かかります。リンゴをつけることは30秒かかる。りんごを食べるのに12秒かかります。だから、次回はオレンジを食べたいときは、リンゴを買って食べるだけです。それは速いからです。あなたの問題に戻る:MyISAMはInnoDBとは違った働きをします。いくつかのものはより速いです。同じ結果(InnoDBテーブルに追加のカラムがある)になってしまった場合は、テーブルをInnoDBに戻して、それをあなたの時間に含めなければなりません。実際の理由はおそらく、何かがあなたのテーブルをロックしているからです。なぜなら、25k行のテーブルは変更する方が速いはずだからです。 – Solarflare
テーブルはロックされていません。テストテーブルで、どのプロセスでも使用されていません。 それ以外はInnoDBに戻ってその時間をカウントするのはなぜなかなか分かりません。私の目標は実際InnoDbで高速に動作するクエリを作成することです。テーブルをMyISAMに変換したのは、私が実験していたからです。そのエンジンでそれを保つ予定はありません。 –