Open Source WEB

InnoDBのテーブル

データベースエンジンを明示的に指定することで、 データベースエンジンのタイプがInnoDBのテーブル「漢字」を作ってみよう。 このテーブルは、漢字とその画数からなることにしよう。

mysql> CREATE TABLE `漢字` ( `字` char(1), `画数` int )
    -> ENGINE=InnoDB DEFAULT CHARACTER SET eucjpms;
Query OK, 0 rows affected (0.65 sec)
 
mysql> INSERT INTO `漢字` VALUES ('鰯',21),('鯰',19),('鰹',23);
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM `漢字`;
+------+------+
| 字   | 画数 |
+------+------+
| 鰯   |   21 |
| 鯰   |   19 |
| 鰹   |   23 |
+------+------+
3 rows in set (0.00 sec)
 
mysql> SHOW CREATE TABLE `漢字`\G
*************************** 1. row ***************************
       Table: 漢字
Create Table: CREATE TABLE `漢字` (
  `字` char(1) default NULL,
  `画数` int(11) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=eucjpms
1 row in set (0.03 sec)
 
mysql>

さて、shellで、ディレクトリ内がどうなっているか調べてみよう。

shell# ls /usr/local/mysql/var/日本
db.opt      コピー.MYI  漢字.frm      都道府県.MYI
コピー.MYD  コピー.frm  都道府県.MYD  都道府県.frm
shell# 

できたのは、漢字.frmだけのようである。 拡張子が .frm なので、これはテーブル定義のファイルに違いない。 では、データはどこに格納されるのであろうか。

こういうときは、MySQLにおいて、innodb関連のシステム変数が どうなっているのか調べると分かるかも知れない。

mysql> SHOW VARIABLES LIKE 'inno%';
+---------------------------------+------------------------+
| Variable_name                   | Value                  |
+---------------------------------+------------------------+
| innodb_additional_mem_pool_size | 1048576                |
| innodb_autoextend_increment     | 8                      |
| innodb_buffer_pool_awe_mem_mb   | 0                      |
| innodb_buffer_pool_size         | 8388608                |
| innodb_checksums                | ON                     |
| innodb_commit_concurrency       | 0                      |
| innodb_concurrency_tickets      | 500                    |
| innodb_data_file_path           | ibdata1:10M:autoextend |
| innodb_data_home_dir            |                        |
| innodb_doublewrite              | ON                     |
| innodb_fast_shutdown            | 1                      |
| innodb_file_io_threads          | 4                      |
| innodb_file_per_table           | OFF                    |
| innodb_flush_log_at_trx_commit  | 1                      |
| innodb_flush_method             |                        |
| innodb_force_recovery           | 0                      |
| innodb_lock_wait_timeout        | 50                     |
| innodb_locks_unsafe_for_binlog  | OFF                    |
| innodb_log_arch_dir             |                        |
| innodb_log_archive              | OFF                    |
| innodb_log_buffer_size          | 1048576                |
| innodb_log_file_size            | 5242880                |
| innodb_log_files_in_group       | 2                      |
| innodb_log_group_home_dir       | ./                     |
| innodb_max_dirty_pages_pct      | 90                     |
| innodb_max_purge_lag            | 0                      |
| innodb_mirrored_log_groups      | 1                      |
| innodb_open_files               | 300                    |
| innodb_support_xa               | ON                     |
| innodb_sync_spin_loops          | 20                     |
| innodb_table_locks              | ON                     |
| innodb_thread_concurrency       | 20                     |
| innodb_thread_sleep_delay       | 10000                  |
+---------------------------------+------------------------+
33 rows in set (0.03 sec)

InnoDBだけでこれだけ沢山の変数が使われているとは知らなかった。 どれが何を意味しているのかは面倒そうなので遠い将来、 もしかしたら勉強することにして、データの存在場所が分りそうな ものはないだろうか。

ということで、以下の2つのMySQLシステム変数がデータの存在場所を 示唆していると思われる。 innodb_data_ で始まっているのだから、妥当な推測ではないだろうか。

mysql> SHOW VARIABLES LIKE 'innodb_data%';
+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir  |                        |
+-----------------------+------------------------+
2 rows in set (0.00 sec)

mysql>

さて、これらの意味するところは何だろう?


戻る:テーブルはファイルで実現されている

次へ:InnoDBのデータファイルは何処にあるのか


フィードバック:

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us