一 数据文件php
在 MySQL中每个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各类表数据文件。不一样的 MySQL存储引擎有各自不一样的数据文件,存放位置也有区别。多数存储引擎的数据文件都存放在和 MyISAM数据文件位置相同的目录下,可是每一个数据文件的扩展名却各不同。如 MyISAM用“.MYD”做为扩展名, Innodb用“ .ibd”, Archive用“ .arc”, CSV用“ .csv”,等等。数据库
InnoDB,是MySQL的数据库引擎之一,为MySQL AB发行binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特点就是支持了ACID兼容的事务(Transaction)功能,相似于PostgreSQL。目前InnoDB采用双轨制受权,一是GPL受权,另外一是专有软件受权。安全
MyISAM是MySQL的默认数据库引擎(5.5版以前),由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另外一种数据库引擎),以强化参照完整性与并发违规处理机制,后来就逐渐取代MyISAM。并发
Archive引擎做用: 为大量不多 引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案,区别于InnoDB、MyISAM提供压缩功能,没有索引。性能
MyISAM与Innodb的数据文件:日志
一、“ .frm”文件索引
与表相关的元数据( meta)信息都存放在“ .frm”文件中,包括表结构的定义信息等。不管是什么存储引擎,每个表都会有一个以表名命名的“ .frm”文件。全部的“ .frm”文件都存放在所属数据库的文件夹下面。事务
二、“ .MYD”文件“ .MYD”文件是 MyISAM存储引擎专用,存放 MyISAM表的数据。每个 MyISAM表都会有一个“.MYD”文件与之对应,一样存放于所属数据库的文件夹下,和“ .frm”文件在一块儿 。ip
三、“ .MYI”文件开发
“ .MYI”文件也是专属于 MyISAM存储引擎的,主要存放 MyISAM表的索引相关信息。对于 MyISAM存储来讲,能够被cache的内容主要就是来源于“ .MYI”文件中。每个 MyISAM表对应一个“ .MYI”文件,存放于位置和“.frm”以及“ .MYD”同样。
四、“ .ibd”文件和 ibdata文件
这两种文件都是存放 Innodb数据的文件,之因此有两种文件来存放 Innodb的数据(包括索引),是由于 Innodb的数据存储方式可以经过配置来决定是使用共享表空间存放存储数据,仍是独享表空间存放存储数据。独享表空间存储方式使用“ .ibd”文件来存放数据,且每一个表一个“ .ibd”文件,文件存放在和 MyISAM数据相同的位置。若是选用共享存储表空间来存放数据,则会使用 ibdata文件来存放,全部表共同使用一个(或者多个,可自行配置)ibdata文件。 ibdata文件能够经过 innodb_data_home_dir和 innodb_data_file_path两个 参数共 同配置 组成,innodb_data_home_dir 配置 数据存 放的总 目录, 而innodb_data_file_path 配 置 每 一 个 文 件 的 名 称。 当 然 , 也 可 以 不 配 置innodb_data_home_dir而直接在 innodb_data_file_path参数配置的时候使用绝对路径来完成配置。 innodb_data_file_path中能够一次配置多个 ibdata文件。文件能够是指定大小,也能够是自动扩展的,可是 Innodb限制了仅仅只有最后一个 ibdata文件可以配置成自动扩展类型。当咱们须要添加新的 ibdata文件的时候,只能添加在 innodb_data_file_path配置的最后,并且必须重启 MySQL才能完成 ibdata的添加工做。不过若是咱们使用独享表空间存储方式的话,就不会有这样的问题,可是若是要使用裸设备的话,每一个表一个裸设备,可能形成裸设备数量很是大,并且不太容易控制大小,实现比较困难,而共享表空间却不会有这个问题,容易控制裸设备数量。
而无论Innodb 使用的是共享仍是独享表空间的方式来存储数据,与事务相关的undo 信息以及其余的一些元数据信息,都是存放在“innodb_data_home_dir”和“innodb_data_file_path”这两个参数所设定的数据文件中的
Innodb 还有本身存放redo 信息和相关事务信息,日志文件在“innodb_log_group_home_dir”参数所设定的位置。