您的位置:首页 > 数据库 > SQL

MySQL 架构 - MySQL 存储引擎 -InnoDB

2012-09-29 11:09 656 查看

InnoDB

InnoDB支持事物处理,它处理许多短期的事物,这些事物常常是成功执行而不是回滚的。InnoDB是MySQL最受欢迎的存储引擎了。常见的非事物引擎需求,如性能和自动回复,它也完全具备。



InnoDB在一些列的文件中存储数据,被称为表空间(tablespace)。表空间对于用户来说是黑盒,InnoDB内部负责处理。在MySQL4.1以及更新的版本中,InnoDB可以存储数据以及索引到独立的文件中。InnoDB也使用磁盘分区来创建表空间。以后会详细讲到表空间。



InnoDB使用MVCC来实现高并发处理。以及它实现了SQL标准的4个隔离级别。默认的隔离级别是不可重复读,以及使用next-key locking策略避免了幻读的问题:InnoDB在索引结构中锁定了而不是仅仅锁定了间隔来避免插入数据引起的幻读而不是仅仅锁定你所操作的行。



InnoDB的表使用了聚集索引(clustered index)。在以后章节详细说明。InnoDB的索引结构和其他的引擎有很大的不同。结果就是查找主键是非常迅速的。然而次要的索引包含了主键。因此如果主键太大。其他的索引也会很大。如果有表中有太多索引,那么主键要力求最小。InnoDB是不能压缩索引的。



目前为止,InnoDB还不能建立索引的排序,但是MyISAM引擎却可以。因此InnoDB读取数据和创建索引都要比MyISAM慢。任意修改InnoDB表结构的操作,都会重新创建整张表,当然包括了所有的索引。



InnoDB被设计出来的时候,大部分的服务器都是硬盘转速慢,单CPU,限制的内存。今天,多核,大内存,转速飞快的硬盘的服务器已经不是很贵了。InnoDB有些可伸缩的问题。开发人员正在解决问题。但是目前为止,有许多问题还是存在的。在InnoDB并发性调整那章中,会详细的说明让InnoDB提高并发性。



除了并发性,InnoDB还有提供了外键约束的特性,这特性MySQL本身是不提供的。InnoDB也提供了快速用主键查询的特性。



InnoDB有很多种内部的优化方法:从硬盘中提前预读取预取的数据,自适应的hash索引也就是为了快速查找在内存中自动创建了hash索引,还有把insert缓存为了加速插入。以后的章节详细说明这些优化。





InnoDB是挺复杂,强烈推荐查看官方文档。

事物模型和锁定http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-transaction-model

上面的教程让你明白在使用InnoDB之前,应该注意点什么。



来自:http://xiayuanfeng.iteye.com/blog/401050
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: