[前][次][番号順一覧][スレッド一覧]

mysql:16152

From: Yuya Takeyama <Yuya Takeyama <sign.of.the.wolf.pentagram@xxxxxxxxxx>>
Date: Tue, 16 Sep 2014 11:24:42 +0900
Subject: [mysql 16152] innodb_file_per_table = 0 で ALTER TABLE 実行時の ibdata1 の拡張について

竹山と申します。

以下の状況で ALTER TABLE を実行したとき、ibdata1 の容量がどのように拡張されるかについての質問です。

MySQL のバージョン = 5.1
ストレージエンジン = InnoDB
innodb_file_per_table = 0

ここであるテーブルに ALTER TABLE でインデックスの追加を行いたいのですが、
(厳密には既存 UNIQUE KEY にカラムを追加)
データベース容量がやや苦しい状態となっており、どのように ibdata1 が拡張されるのか、気になっています。

例えば現状 1GB インデックスがあるとして、ALTER TABLE によって 1.1GB になったとき、
その 1.1GB はどこから確保されるのでしょうか。

こちらでは以下の 2 パターン予想しました。

---

1) ibdata1 上全く新たに 1.1GB 確保される

この場合データベース全体のサイズとしては 1.1GB 増えることになると思います。

2) 既存の 1GB が使いまわされた上で、0.1 GB は新たに確保される

この場合はデータベース全体のサイズとしては 0.1 GB 増えることになると思います。

---

根本的な解決としては innodb_file_per_table = 1 にしたうえでデータベース全体の再生成を行う予定ですが、
そちらはまだ先になりそうなので、とりあえずは少しでも容量を節約したい、とうい状態です。

この点についてご存知のどなたか、ご教示いただければ幸いです。

以上、よろしくお願いいたします。

---

Yuya Takeyama

[前][次][番号順一覧][スレッド一覧]

->   16152 2014-09-16 11:24 [Yuya Takeyama <sign.] innodb_file_per_table = 0  で ALTER TABLE  実行時の ibdata1  の拡張について
   @ 16153 2014-09-16 11:59 ┗["yoku ts." <yoku0825] Re: [mysql 16152] innodb_file_per_table = 0 で ALTER TABLE 実行時の ibdata1 の拡張について
   @ 16154 2014-09-16 14:33  ┣["yoku ts." <yoku0825]                                     
     16156 2014-09-16 14:42  ┃┗[Yuya Takeyama <sign.] Re: [mysql 16154] Re: [mysql 16152] innodb_file_per_table = 0 で ALTER TABLE 実行時の ibdata1 の拡張について
     16155 2014-09-16 14:36  ┗[Yuya Takeyama <sign.] Re: [mysql 16153] Re: [mysql 16152] innodb_file_per_table = 0 で ALTER TABLE 実行時の ibdata1 の拡張について