Mysql MyISAM引擎相關數據文件淺析

實驗環境:
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  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章