储存引擎

 

存储引擎:
存储引擎是用来干什么的?存储引擎是MySql重要特性之一,用户可以利用存储引擎选择如何存储数据和索引数据、是否使用事务等特性。
显示数据库支持的存储引擎类型:show engines.
在定义表的时候可以指定所使用的存储引擎的类型,否则则采用默认的类型。也可以alter修改表所使用的引擎类型。
 
比较常用的集中引擎介绍:
MyISAM:
是MySql默认的存储引擎,不支持事务也不支持外键,优势是访问速度快,对事务完整性没有要求或以select、insert为主的应用可以使用这种引擎。其在磁盘上有三个文件其文件名和表名相同但扩展格式不同,分别用来存储表定义、存储数据、存储索引。其还支持三中不同的存储格式:静态表(固定长度)、动态表、压缩表,其中默认的方式是静态表,需要注意的是静态表存储的内容后面如果有空格,那么在返回结果的时候会被去掉,这对于需要存储后面带空格的内容来说是不安全的
 
InnoDB:
提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM,InnoDB的写处理效率差一些,并会占用更多的磁盘空间。
对于InnoDB,自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列
外键约束:父表在更新的时候子表和父表之间的相互约束,restrict 、cascade、set null 、no action,外键约束是写在子表的定义里面的。
 
Memory:
是利用存在内存中的内容来创建表,一旦服务关闭,表中的数据就会丢失。其优点就是访问非常快。其默认使用Hash索引,也可以指定BTREE索引
 
Merge:
merge存储引擎是一组MyISAM表的组合,这些MyISAM表的结构必须完全相同。Merge表本身并没有数据,对Merge表的操作实际上是对内部的MyISAM表的操作,对Merge表执行插入操作是根据Insert_Method子句定义插入的表,可以有三个不同的值:first、last、不定义或定义为NO表示不能对这个Merge表执行插入操作。以逻辑方式将多个MyISAM表组合起来并作为一个对象来引用他们,突破了对单个MyISAM表大小的限制,将不同的表分布在多个磁盘上有效改善表的访问效率。
posted @ 2012-10-05 22:10  乌托邦.  阅读(301)  评论(0编辑  收藏  举报