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のテーブル
データベースエンジンを明示的に指定することで、 データベースエンジンのタイプが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>
さて、これらの意味するところは何だろう?
フィードバック:
There is no comment.