Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
オンラインマニュアルで、innodb_data_file_pathで検索したら、 15.4. InnoDB Configuration が見つかった。 InnoDBの構成に関して、かなり長く書かれていて、 ちょっと全部を読むのは大変だし、今そこまで詳しい情報が欲しい訳ではない。
その中に、オプションファイルの中で、innodb_data_file_pathの値を設定し、 その意味を説明しているところがあった。
[mysqld] innodb_data_file_path=ibdata1:10M:autoextend This setting configures a single 10MB data file named ibdata1 that is auto-extending. No location for the file is given, so the default is the MySQL data directory. Sizes are specified using M or G suffix letters to indicate units of MB or GB.
ということは、現在の値である
innodb_data_file_path=ibdata1:10M:autoextend
は、
- ibdata1 は データファイル名
- 10M は ファイルサイズ
- autoextended は自動拡張
を示している。
MySQLのデータディレクトリの下は、
shell# pwd /usr/local/mysql/var shell# ls -l ibdata1 -rw-rw---- 1 mysql mysql 10485760 10月 9 20:09 ibdata1
となっていて、これはInnoDBのデータが格納される場所は、InnoDBタイプの テーブルが属するデータベースの実体であるディレクトリの中ではなく、 その1つ上、つまりデータベースと同じレベルのデータファイルに記憶される。
つまり、「漢字」という名前のテーブルを作ったら、 漢字.frm というフォーマットファイルはデータベースのディレクトリに できたが、データはそこには無いので注意が必要だ。
InnoDBの場合:
テーブル名.frm テーブル定義が記述されているファイル
ibdata1 データのディレクトリの下にできる共通のデータファイル
異なるデータベースのInnoDB型のテーブルのデータは何処に
InnoDBのテーブルのデータ自体は、MySQLのデータディレクトリの下に ibdata1という名前のファイルでできた。
データベースとの関係については何も記述がなかったのだが、 今まで使っていたデータベース 「日本」ではなく、 元からある test というデータベースに切り替えて、 極度に簡単なInnoDB型のテーブルを作ってデータを入れてみよう。
mysql> USE test;
Database changed
mysql> CREATE TABLE `a` (
-> `i` int(11) default NULL
-> ) ENGINE=InnoDB DEFAULT\c CHARSET=latin1
-> \c
mysql> CREATE TABLE `a` ( `i` int ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT `a` VALUES (100),(200),(300);
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * from `a`;
+------+
| i |
+------+
| 100 |
| 200 |
| 300 |
+------+
3 rows in set (0.00 sec)
mysql>
このように、別のデータベース内にInnoDB型のテーブルを作っても、 InnoDBのデータファイルは1つだけである。
shell# ls -l ibdata1 -rw-rw---- 1 mysql mysql 10485760 10月 9 21:19 ibdata1
MyISAMでは、ファイルをコピーするだけで、 テーブルのコピーが安直にできた。
InnoDBでデータファイルをテーブル毎にする方法が欲しいな。 何か手はないのかなぁ。
フィードバック:
There is no comment.