Mysql MyISAM引擎相关数据文件浅析

来源:互联网 发布:line是什么软件 编辑:程序博客网 时间:2024/05/17 21:56
实验环境:
OS:Ubuntu 10.04
数据库版本:Mysql 5.5.18
安装路径 :/opt/mysql/
数据存放位置:/opt/mysql/data
实验一:Mysql将为所有的数据库创建一个单独的文件夹
首先,cd到数据目录下:
  1. root@liu-pc:~# cd /opt/mysql/data/
    查看当前文件夹下都有那些文件夹:
    
  1. mysql performance_schema test
在Mysql中每个数据库都对应一个文件,以上的3个文件的做用分别是:
    mysql库:其中的host,db,user,tables_priv,columns_priv这5张表是用来存储权限信息的。还有其他一些表暂不深究。
    performance_schema库:不是很清楚。
    test库:测试库,这个库中没有表。没有什么实际功能,供测试用。
链接Mysql,并创建新的数据库myisam_test:
  
  1. root@liu-pc:/opt# ./mysqlslave/bin/mysql -uroot
    
  1. mysql> create database myisam_test;
  2. Query OK, 1 row affected (0.00 sec)
这个时候在打开数据存放的文件夹并ls:
    
  1. mysql performance_schema test myisam_test
    可以看到多了一个文件夹:myisam_test。mysql会为每一个数据库创建一个文件夹。
cd到此文件夹,并查看都有那些文件 :
  
  1. root@liu-pc:/opt/mysql/data# cd myisam_test/
  2. root@liu-pc:/opt/mysql/data/myisam_test# ls
  3. db.opt
    可以看到myisam_test文件夹只有文件db.opt。这个文件存储的是一些和myisam_test相关的配置文件,暂不深入。
实验二:MyISAM引擎存储表信息将用到的文件
*.frm(存储表结构信息) 
        *.MYI(存储表索引信息) 
        *.MYD(存储表数据信息)
链接数据库并创建t表:
    
  1. root@liu-pc:/opt# ./mysqlslave/bin/mysql -uroot
   
  1. mysql> use myisam_test;
  2. Database changed
  3. mysql> create table t(id int auto_increment primary key,name char(20)) engine=myisam;
  4. Query OK, 0 rows affected (0.06 sec)
打开文件夹myisam_test,并查看其中的文件信息(ls -l)
    
  1. root@liu-pc:/opt/mysql/data/myisam_test# ls -l
  2. total 20
  3. -rw-rw---- 1 mysql mysql 65 2011-12-07 15:43 db.opt
  4. -rw-rw---- 1 mysql mysql 8586 2011-12-07 15:55 t.frm
  5. -rw-rw---- 1 mysql mysql 0 2011-12-07 15:55 t.MYD
  6. -rw-rw---- 1 mysql mysql 1024 2011-12-07 15:55 t.MYI
可以看到多了 t.frm t.MYD t.MYI 三个文件,其中t.frm是用来存放表结构信息的。
t.MYI 是用来存放索引信息的,因为t表有主键索引,其占用了1kb的大小。
t.MYD是用来存放数据信息的,因为表中没有数据,所有其大小为0. 

下面分别向表中添加字段,数据查看上述三个文件的大小变化情况:
在表t中添加字段***,并查看t.frm文件大小变化情况:
  1. mysql> alter table t add column *** char(2);
  2. Query OK, 0 rows affected (0.04 sec)
  3. Records: 0 Duplicates: 0 Warnings: 0
查看t.frm文件大小:
  1. root@liu-pc:/opt/mysql/data/myisam_test# ls -l t.frm 
  2. -rw-rw---- 1 mysql mysql 8614 2011-12-07 16:12 t.frm
t.frm文件有原来的8586增加到8614。
在表中插入数据,查看t.MYD和t.MYI文件的大小变化:
  1. mysql> insert into t(name) values('zhangsan');
  2. Query OK, 1 row affected (0.00 sec)
查看t.MYD和t.MYI文件的大小:
  1. root@liu-pc:/opt/mysql/data/myisam_test# ls -l t.MY*
  2. -rw-rw---- 1 mysql mysql 54 2011-12-07 16:40 t.MYD
  3. -rw-rw---- 1 mysql mysql 3072 2011-12-07 16:40 t.MYI
可以看到这两个文件所着空间都变大了。


最近在深入学习mysql,打算向mysql dba方向发展。希望能够和志同道合的朋友共同进步,qq:244236866  
email:lpfvip2008@gmail.com  微博:http://weibo.com/u/1900145317
原创粉丝点击