mysql:16154
From: "yoku ts." <"yoku ts." <yoku0825@xxxxxxxxxx>>
Date: Tue, 16 Sep 2014 14:33:20 +0900
Subject: [mysql 16154] Re: [mysql 16152] innodb_file_per_table = 0 で ALTER TABLE 実行時の ibdata1 の拡張について
おっと、すいません、プラグインInnoDBでFast Index Creationが利く場合は2) に空き容量のロジックを組み合わせたものになりますね。。 失礼しましたm(_"_)m yoku0825, 2014年9月16日 11:59 yoku ts. <yoku0825@xxxxxxxxxx>: > こんにちは、yoku0825といいます。 > > だいたいざっくり言うと、1) に近いです。 > ただし、ibdata1に空きスペースがあった場合はその空きスペースを使います。 > > もし、ibdata1に500MBの空き容量が存在すれば、 > 空き容量 + 新規600MBを使ってibdata1の増加は600MB、その後ibdata1の中に空き容量が1GB発生します。 > 空き容量が全くなければibdata1は1.1GB増えて、その後空き容量が1GB発生します。 > > ibdata1の空き容量はSHOW TABLE STATUSでなんとなく照会できます。 > > > mysql51> SHOW TABLE STATUS LIKE 't1'\G > *************************** 1. row *************************** > Name: t1 > Engine: InnoDB > Version: 10 > Row_format: Compact > Rows: 5000220 > Avg_row_length: 67 > Data_length: 338542592 > Max_data_length: 0 > Index_length: 83492864 > Data_free: 236978176 -- ココ > Auto_increment: NULL > Create_time: 2014-09-16 11:53:01 > Update_time: NULL > Check_time: NULL > Collation: utf8_general_ci > Checksum: NULL > Create_options: > Comment: > 1 row in set (0.01 sec) > > > yoku0825, > > > > 2014年9月16日 11:24 Yuya Takeyama <sign.of.the.wolf.pentagram@xxxxxxxxxx>: > > 竹山と申します。 >> >> 以下の状況で 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 の拡張について