MySQL 之 InnoDB存储引擎


mysql从5.5开始默认存储引擎使用InnoDB存储,要想使用InnoDB存储引擎需要在编译安装mysql时添加编译参数,版本的不同编译参数也略有不同,也可以安装mysql后使用动态加载插件的方法安装innoDB存储引擎。
innodb数据表在硬盘上的存储方式:

#每创建一个数据表,mysql就会创建一个硬盘文件来保存该数据表的格式,该文件和数据表的名字相同,以.frm为扩展名,如果创建了一个数据表zhu,那么在该表所在的数据库子目录内便会创建一个zhu.frm文件。(无论是innodb还是myisam存储引擎,该文件是一定如此创建的)
#默认情况下InnoDB存储数据表的内容存储在一个共享存储空间里,
#可以通过修改配置文件来使每个表的数据内容存放在单独的表空间里,即使如此,共享表空间也不可缺少,因为数据字典仍会存在共享表空间里。
mysql> show create table student;
+---------+------------------------------------------------------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                |
+---------+------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
[root@zhu2 zhujiangtao]# ll
-rw-rw---- 1 mysql mysql 8586 10-26 14:14 student.frm #表结构

innodb存储引擎的特点:

#1.支持事务的提交和回滚操作
#2.系统崩溃后可以自动恢复,自我修复功能较好
#3.支持外键和引用完整性,包括递归式删除和更新
#4.支持数据行级别锁,
#5.默认情况下,innodb存储引擎会把数据集中存储在一个共享表空间里,innodb表空间可以有单个文件组成,也可由有多个文件组成,还可以包括原始分区,实际上,innodb表空间就像是一个虚拟的文件系统,存储和管理innodb数据表的内容,这样一来数据表的长度就可以超过文件系统对每个文件最大长度的限制,也可以把innodb存储引擎配置为每个数据表分别创建一个表空间,此时每个数据表在它所在的数据库子目录里有一个对应的.ibd文件。


innodb的配置参数

推荐阅读:

InnoDB存储引擎的启动、关闭与恢复

MySQL InnoDB独立表空间的配置

MySQL Server 层和 InnoDB 引擎层 体系结构图

InnoDB 死锁案例解析

MySQL Innodb独立表空间的配置

相关内容