MySQL數據庫文件介紹
mysql的數據儲存目錄在mysql的配置文件my.ini文件設置,格式如下:
# Uncomment the following rows if you move the MySQL distribution to another
# location
basedir = d:/cyoa/mysql_cy/
datadir = d:/cyoa/mysql_cy/data/
其中datadir目錄定義了mysql的數據存儲位置,MySQL的每個數據庫都對應存放在一個與數據庫同名的文件夾中(該目錄下datadir參數對應的目錄下),MySQL數據庫文件包括MySQL所建數據庫文件和MySQL所用存儲引擎創建的數據庫文件。
MySQL如果使用MyISAM存儲引擎,數據庫文件類型就包括.frm、.MYD、.MYI
MySQL如果使用InnoDB存儲引擎,數據庫文件類型就包括.frm、ibdata1、.ibd,存放位置有兩個,ibdata1、.ibd文件默認存放位置是MySQL安裝目錄下的data文件夾.
1、MySQL創建并管理的數據庫文件:
.frm文件:存儲數據表的框架結構,與表相關的元數據(meta)信息都存放在“.frm”文件中,包括表結構的定義信息等,文件名與表名相同,每個表對應一個同名frm文件,與操作系統和存儲引擎無關,即不管MySQL運行在何種操作系統上,使用何種存儲引擎,都有這個文件。
除了必有的.frm文件,根據MySQL所使用的存儲引擎的不同(MySQL常用的兩個存儲引擎是MyISAM和InnoDB),存儲引擎會創建各自不同的數據庫文件。
.MYD文件:即MY Data,表數據文件
.MYI文件:即MY Index,索引文件
.log文件:日志文件
2、InnoDB采用表空間(tablespace)來管理數據,存儲表數據和索引,
InnoDB數據庫文件(即InnoDB文件集,ib-file set),該文件一般存在在mysql的數據目錄下,如:ibdata1、ibdata2等系統表空間文件,存儲InnoDB系統信息和用戶數據庫表數據和索引,所有表共用.ibd文件:單表表空間文件,每個表使用一個表空間文件(file per table),存放用戶數據庫表數據和索引。每修改數據記錄,索引就必須刷新一次。為了在某種程序上彌補這一缺陷,許多SQL命令都有一個DELAY_KEY_WRITE項。這個選項的作用是暫時制止 MySQL在該命令每插入一條新記錄和每修改一條現有之后立刻對索引進行刷新,對索引的刷新將等到全部記錄插入/修改完畢之后再進行。
3、日志文件: ib_logfile1、ib_logfile2
索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。索引不是萬能的,索引可以加快數據檢索操作,但會使數據修改操作變慢。