「趣味の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