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

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 の拡張について