でじくる。

主にプログラムの話題などを扱うブログです。

innodbでテーブルごとにデータファイルを作成する

MySQLinnodbを使用する場合、

通常、データは単一のibdata1というファイルに保存されます。

このファイルはmy.cnfの設定によって自動拡張するようになっていて、

放置していると平然と数GBとかにふくれあがります。

 

32bitのLinuxを使用していた場合、2GB以上のファイルは扱えなかったりするので、

ibdata1が大きくなりすぎてMySQLが動かなくなったりするわけですね。

 

いまどき32bitのLinuxを使用することもあまりないと思うのですが、

EC2のsmall instanceなんかはなぜか32bitだったりするので困りものです。

それに、ひたすらibdata1のサイズが肥大していくのも気分がよくない感じです。

 

それで表題の話。innodbではテーブルごとにデータファイルを作成することができます。

MySQLの定番サイト、「漢のコンピュータ道」に参考になる記事があります。

 

InnoDBのファイルサイズ管理

http://nippondanji.blogspot.com/2009/01/innodb_16.html

 

innodb_file_per_tableの設定をすればよし。

 

大きくなってしまったibdata1を小さくする方法もあります。

 

ibdata1 のサイズを減らす手順

http://bitwalker.dtiblog.com/blog-entry-162.html

 

一回データを消した上で入れ直さないといけないので、

動いているシステムで行うのはちょっと大変です。