MYSQL入门学习之二十七:MySQL存储引擎简介 之 InnoDB

        Innodb 做为第三方公司所开发的存储引擎,是除MyISAM 之外,在MySQL 中使用最为广泛的。
1、Innodb 之所以能如此受宠,主要是在于其功能方面的较多特点:
        (1)、支持事务安全
        Innodb 在功能方面最重要的一点就是对事务安全的支持。而且实现了SQL92 标准所定义的所有四个级别(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ 和SERIALIZABLE)。
        (2)、数据多版本读取
        Innodb 在事务支持的同时,为了保证数据的一致性以及并发时的性能,通过undo信息,实现了数据的多版本读取。
        (3)、锁定机制的改进
        Innodb 改变了MyISAM 的锁机制,通过索引实现了行锁机制。
        (4)、实现外键
        Innodb 实现了外键引用这一数据库的重要特性,使在数据库端控制部分数据的完整性成为可能。
2、物理存储
        在物理存储方面,Innodb 存储引擎也和MyISAM 不太一样,虽然也有.frm 文件来存放表结构定义相关的元数据,但是表数据和索引数据是存放在一起的。至于是每个表单独存放还是所有表存放在一起,完全由用户来决定(通过特定配置),同时还支持符号链接。
        Innodb 的物理结构分为两大部分:
        (1)、数据文件(表数据和索引数据)
        存放数据表中的数据和所有的索引数据,包括主键和其他普通索引。
        在Innodb 中,存在了表空间(tablespace)这样一个概念,但是他和Oracle 的表空间又有较大的不同。
        首先,Innodb 的表空间分为两种形式。一种是共享表空间,也就是所有表和索引数据被存放在同一个表空间(一个或多个数据文件)中,通过innodb_data_file_path 来指定,增加数据文件需要停机重启。
        虽然可以自行设定使用共享表空间还是独享表空间来存放表,但是共享表空间都是必须存在的,因为Innodb 的undo 信息和其他一些元数据信息都是存放在共享表空间里面的。共享表空间的数据文件是可以设置为固定大小和可自动扩展大小两种形式的,自动扩展形式的文件可以设置文件的最大大小和每次扩展量。在创建自动扩展的数据文件的时候,建议最好加上最大尺寸的属性,一个原因是文件系统本身是有一定大小限制的(但是Innodb 并不知道),还有一个原因就是自身维护的方便。
        当文件表空间快要用完的时候,必须要为其增加数据文件,当然,只有共享表空间有此操作。共享表空间增加数据文件的操作比较简单, 只需要在innodb_data_file_path 参数后面按照标准格式设置好文件路径和相关属性即可。
        另外一种是独享表空间,也就是每个表的数据和索引被存放在一个单独的.ibd 文件中。
        (2)、日志文件
        Innodb 的日志文件和Oracle 的redo 日志比较类似,同样可以设置多个日志组(最少2个),同样采用轮循策略来顺序的写入。
        Innodb 不仅在功能特性方面和MyISAM 存储引擎有较大区别,在配置上面也是单独处理的。在MySQL 启动参数文件设置中,Innodb 的所有参数基本上都带有前缀“innodb_”,不论是innodb 数据和日志相关,还是其他一些性能,事务等等相关的参数都是一样。和所有Innodb 相关的系统变量一样,所有的Innodb 相关的系统状态值也同样全部以“Innodb_”前缀。


参考:《MySQL性能调优与架构设计》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值