読者です 読者をやめる 読者になる 読者になる

MySQLのInnoDBって file_per_table がデフォルトになっていたのか!

 「趣味のMySQLユーザ」の時期が続いていたこともあって、実体験による情報よりも、すっかり耳年増になってしまいました。取り返すべく、AWSの環境*1を得たのをきっかけに、色々試し始めています。


 今回触っていて、「あれっ?」と思ったのは、CREATE TABLE したら、テーブルごとに idb ファイルができあがっていたということ。いわゆる「file per table」というやつです。
 従来 InnoDB は、my.cnf で指定した idbファイル群を全テーブルで共通して使用していました。
innodb_file_per_table 自体は MySQL 4.1.8 の頃から存在しているものなのですが、私の中ではイロモノ的なイメージのままだったので、これがデフォルトになっていることにびっくりしました。
 調べてみると、MySQL 5.5.6まででデフォルトオンになっていたのに、MySQL 5.5.7からオフにした経緯があったようで、このときに「なにかヨクナイことがあったのかな」という印象を持ったのかもしれません。
 今に繋がる流れとして、MySQL 5.6.6からは再度デフォルトオンになっていたようで、随分遅れての認識と相成った次第です。

mysql> create table test1 (a int, b varchar(10));                                                               
mysql> create table test2 (a int, b varchar(10));
mysql> create table test3 (a int, b varchar(10));


$ ls -la
total 436
-rw-r-----. 1 ec2-user ec2-user    67 Jan 25 05:58 db.opt
-rw-r-----. 1 ec2-user ec2-user  8578 Jan 25 06:38 test1.frm
-rw-r-----. 1 ec2-user ec2-user 98304 Jan 25 06:38 test1.ibd
-rw-r-----. 1 ec2-user ec2-user  8578 Jan 25 06:38 test2.frm
-rw-r-----. 1 ec2-user ec2-user 98304 Jan 25 06:38 test2.ibd
-rw-r-----. 1 ec2-user ec2-user  8578 Jan 25 06:38 test3.frm
-rw-r-----. 1 ec2-user ec2-user 98304 Jan 25 06:38 test3.ibd

*1:と言っても、すぐに作って壊せるレンタルサーバの環境という程度の使い方しかしていませんが